Dokumentasi/API Overview
API Documentation

KalkuLink API Overview

RESTful API untuk mengintegrasikan kalkulator KalkuLink ke dalam aplikasi Anda dengan mudah dan aman

Quick Start
1

Get API Key

Dapatkan API key dari dashboard

2

Make Request

Kirim HTTP request ke endpoint

3

Get Results

Terima response JSON

Base URL:

https://api.kalkulink.com
Authentication

API Key

High Security

Autentikasi menggunakan API key di header

Authorization: Bearer your-api-key

Use Case: Server-to-server integration

OAuth 2.0

Very High Security

Autentikasi OAuth untuk aplikasi user-facing

Authorization: Bearer oauth-token

Use Case: Web dan mobile applications

Public Access

Limited Security

Akses tanpa autentikasi untuk endpoint publik

No authentication required

Use Case: Public calculator data

API Endpoints
GET/api/calculators

Mendapatkan daftar kalkulator publik

Auth: OptionalRate Limit: 100/hour
GET/api/calculators/{id}

Mendapatkan detail kalkulator spesifik

Auth: OptionalRate Limit: 200/hour
POST/api/calculators/{id}/calculate

Menjalankan perhitungan dengan input data

Auth: RequiredRate Limit: 500/hour
POST/api/calculators

Membuat kalkulator baru

Auth: RequiredRate Limit: 20/hour
PUT/api/calculators/{id}

Update kalkulator yang sudah ada

Auth: Required (Owner)Rate Limit: 50/hour
Code Examples

javascript Example

// JavaScript/Node.js Example
const apiKey = 'your-api-key';
const calculatorId = 'calc-123';

// Get calculator details
async function getCalculator(id) {
  const response = await fetch(`https://api.kalkulink.com/calculators/${id}`, {
    headers: {
      'Authorization': `Bearer ${apiKey}`,
      'Content-Type': 'application/json'
    }
  });

  if (!response.ok) {
    throw new Error(`HTTP error! status: ${response.status}`);
  }

  return await response.json();
}

// Perform calculation
async function calculate(id, inputs) {
  const response = await fetch(`https://api.kalkulink.com/calculators/${id}/calculate`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${apiKey}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ inputs })
  });

  return await response.json();
}

// Usage
const calculator = await getCalculator('calc-123');
const result = await calculate('calc-123', {
  principal: 100000000,
  rate: 12,
  years: 5
});

console.log('Monthly payment:', result.monthlyPayment);
Response Examples

calculator Response

{
  "id": "calc-123",
  "title": "Kalkulator Pinjaman KPR",
  "description": "Hitung cicilan rumah dengan berbagai pilihan tenor",
  "category": "finance",
  "isPublic": true,
  "fields": [
    {
      "id": "field-1",
      "name": "principal",
      "label": "Jumlah Pinjaman",
      "type": "number",
      "required": true,
      "min": 50000000,
      "max": 5000000000,
      "prefix": "Rp "
    },
    {
      "id": "field-2",
      "name": "rate",
      "label": "Suku Bunga (%)",
      "type": "number",
      "required": true,
      "min": 1,
      "max": 30,
      "suffix": "%"
    }
  ],
  "formulas": [
    {
      "id": "formula-1",
      "name": "monthlyPayment",
      "label": "Cicilan Bulanan",
      "expression": "principal * (rate/100/12) * pow(1 + rate/100/12, years*12) / (pow(1 + rate/100/12, years*12) - 1)",
      "prefix": "Rp ",
      "suffix": "/bulan"
    }
  ],
  "createdAt": "2024-01-15T10:30:00Z",
  "updatedAt": "2024-01-20T14:22:00Z"
}
Rate Limits
PlanAPI RequestsCalculationsAnalyticsSupport
Free1,000/month500/month50/monthCommunity
Pro10,000/month5,000/month1,000/monthEmail
Business100,000/month50,000/month10,000/monthPriority
EnterpriseUnlimitedUnlimitedUnlimitedDedicated
Error Codes
400

Bad Request

Request tidak valid atau missing parameters

Invalid input format
401

Unauthorized

API key tidak valid atau missing

Invalid API key
403

Forbidden

Akses ditolak untuk resource ini

Calculator is private
404

Not Found

Resource tidak ditemukan

Calculator not found
429

Rate Limit Exceeded

Terlalu banyak requests

Rate limit exceeded, try again in 60 seconds
500

Internal Server Error

Error pada server

Internal server error