API Reference
IBAN validation and bank lookup API. RESTful architecture with JSON responses.
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
/api/v1/iban/validate
IBAN Validation
Validates a single IBAN and returns the bank details.
| iban | required — The IBAN to validate |
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
/api/v1/iban/batch
Bulk IBAN Validation
Validates multiple IBANs in a single request (max. 50).
| ibans | required — Array of IBANs |
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
/api/v1/banks
Bank List
Lists and filters financial institutions.
| 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) |
$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);
/api/v1/health
Health Check
Checks the API status. No authentication required.
Response Format
{
"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
}
}
{
"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 |
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
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"])
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();