API
One endpoint per tool. Same shape every time, so your client needs one success path and one error path.
Authentication
Every endpoint needs a key — send it in the x-api-key header. Create a free account to get one. The sandbox on each page works without a key, but only from this site.
Create a free account →curl -X POST https://sinikoding.dev/api/v1/base64 \ -H 'content-type: application/json' \ -H 'x-api-key: tk_live_…' \ -d '{"input":"halo","mode":"encode"}'
Response shape
Every response is either ok:true with data, or ok:false with an error code and message. Error messages are always English; codes are stable and safe to branch on.
{
"ok": true,
"data": {
"tool": "base64",
"version": 1,
"output": { "kind": "text", "value": "…" },
"meta": { }
}
}{
"ok": false,
"error": {
"code": "invalid_input",
"message": "…"
}
}Rate limits & quota
Both are checked on every request. Remaining amounts come back as headers.
| Tier | req/min | req/month | Network |
|---|---|---|---|
| free | 60 | 5,000 | ✓ |
x-ratelimit-remaining: 59 x-quota-remaining: 4999
Error codes
| key_required | 401 | Not retryable |
| invalid_input | 400 | Not retryable |
| input_too_large | 400 | Not retryable |
| unknown_tool | 404 | Not retryable |
| not_found | 404 | Not retryable |
| unknown_key | 401 | Not retryable |
| revoked | 401 | Not retryable |
| tier_required | 403 | Not retryable |
| forbidden_target | 400 | Not retryable |
| dns_failed | 400 | Not retryable |
| fetch_failed | 502 | Retryable |
| timeout | 504 | Retryable |
| rate_limit_exceeded | 429 | Retryable |
| quota_exceeded | 429 | Not retryable |
| internal_error | 500 | Retryable |
Endpoints
TikTok
Instagram
OSINT & network
Indonesia
Encoding & decoding
Hashing & generators
Text & data
Date & time
Calculators & conversion
Money & shopping
Health & body