Skip to Content 
API Documentation

API Reference

IBAN validation and bank lookup API. RESTful architecture with JSON responses.

Base URL https://test.ibansource.com/api/v1

Authentication

Send your API key using one of the following methods:

Method Usage
X-API-Key X-API-Key: ibsrc_live_xxx
Bearer Token Authorization: Bearer ibsrc_live_xxx
Query Param ?api_key=ibsrc_live_xxx

IBAN Validation

POST /api/v1/iban/validate IBAN Validation

Validates a single IBAN and returns the bank details.

Parameters
iban required — The IBAN to validate
Example (cURL)
curl -X POST https://test.ibansource.com/api/v1/iban/validate \
  -H "X-API-Key: ibsrc_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"iban": "TR330006100519786457841326"}'

Bulk IBAN Validation

POST /api/v1/iban/batch Bulk IBAN Validation

Validates multiple IBANs in a single request (max. 50).

Parameters
ibans required — Array of IBANs
Example (JavaScript)
const response = await fetch('https://test.ibansource.com/api/v1/iban/batch', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': 'ibsrc_live_xxx'
  },
  body: JSON.stringify({
    ibans: ['TR330006100519786457841326', 'TR120006200119000006672315']
  })
});
const data = await response.json();

Banks

GET /api/v1/banks Bank List

Lists and filters financial institutions.

Parameters
type_slug optional — Institution type filter
search optional — Search query
page optional — Page number (default: 1)
per_page optional — Records per page (default: 10, max: 100)
Example (PHP)
$ch = curl_init('https://test.ibansource.com/api/v1/banks?search=garanti');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['X-API-Key: ibsrc_live_xxx']
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
GET /api/v1/health Health Check

Checks the API status. No authentication required.

Response Format

Successful Response
{
  "success": true,
  "data": { ... },
  "message": "İşlem başarılı",
  "meta": {
    "version": "1.0.0",
    "request_id": "20250101-120000-abc123",
    "timestamp": 1704106800,
    "datetime": "2025-01-01T12:00:00+03:00",
    "execution_time_ms": 12.5
  }
}
Error Response
{
  "type": "https://ibansource.com/errors/validation_error",
  "title": "Validation Error",
  "status": 422,
  "detail": "Doğrulama hatası",
  "instance": "/api/v1/iban/validate",
  "timestamp": "2025-01-01T12:00:00+03:00",
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Doğrulama hatası",
    "http_status": 422,
    "details": { "iban": ["IBAN 26 karakter olmalıdır"] }
  },
  "meta": { ... }
}

Rate Limiting

Each endpoint has its own rate limit. Limits are raised once you authenticate with an API key.

Endpoint Anonymous API Key Window
/iban/* 100 500 60 s
/banks 200 1,000 1 hour
blog 200 1,000 60 s
blog_detail 60 300 60 s
/banks/{slug} 60 300 60 s
provinces 120 600 60 s
districts 150 750 60 s
Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

Error Codes

HTTP Code Description
400 BAD_REQUEST Invalid parameter or missing field
401 UNAUTHORIZED Invalid or missing API key
403 FORBIDDEN You do not have access to this endpoint
404 RESOURCE_NOT_FOUND The requested resource was not found
405 METHOD_NOT_ALLOWED HTTP method not supported
422 VALIDATION_ERROR Validation error (detailed)
429 RATE_LIMIT_EXCEEDED Request limit exceeded
500 INTERNAL_SERVER_ERROR Server error

Code Examples

Python
import requests

resp = requests.post(
    "https://test.ibansource.com/api/v1/iban/validate",
    json={"iban": "TR330006100519786457841326"},
    headers={"X-API-Key": "ibsrc_live_xxx"}
)
data = resp.json()
print(data["data"])
Node.js
const res = await fetch(
  'https://test.ibansource.com/api/v1/iban/validate',
  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': 'ibsrc_live_xxx'
    },
    body: JSON.stringify({
      iban: 'TR330006100519786457841326'
    })
  }
);
const data = await res.json();