API Documentation
Build IndexNowFast into your own tools. Generate an API key from your dashboard and authenticate with a Bearer token.
Authentication
All requests require an Authorization: Bearer <your_api_key> header.
curl https://indexnowfast.com/api/v1/account \
-H "Authorization: Bearer infk_live_..."POST /tasks — Submit URLs for indexing
Charges 2 credits per URL for standard or 8 credits per URL for instant. Accepts 1–10,000 standard URLs or up to 300 instant URLs per request, each up to 2,048 characters. Returns HTTP 201 on success.
curl -X POST https://indexnowfast.com/api/v1/tasks \
-H "Authorization: Bearer infk_live_..." \
-H "Content-Type: application/json" \
-d '{
"urls": ["https://example.com/page-1", "https://example.com/page-2"]
}'{
"task_id": "tsk_01HX...",
"urls_count": 2,
"credits_charged": 16,
"tier": "instant",
"vip": true,
"status": "processing"
}GET /tasks/:id — Task status
Returns the full task row plus per-URL status.
curl https://indexnowfast.com/api/v1/tasks/tsk_01HX... \
-H "Authorization: Bearer infk_live_..."{
"task": { "id": "tsk_01HX...", "status": "completed", "urls_count": 2, "credits_charged": 4, ... },
"urls": [
{ "url": "https://example.com/page-1", "status": "indexed", "indexed_at": "2026-05-08T12:00:00Z" },
{ "url": "https://example.com/page-2", "status": "pending", "indexed_at": null }
]
}GET /tasks — List your tasks
Cursor-paginated. limit is 1–100 (default 20). Pass next_cursor from the previous response as cursor to fetch the next page. next_cursor is null on the last page.
curl "https://indexnowfast.com/api/v1/tasks?limit=20" \
-H "Authorization: Bearer infk_live_..."{
"tasks": [
{ "id": "tsk_01HX...", "status": "processing", "urls_count": 2, "credits_charged": 16, "tier": "instant", "vip": true, "created_at": "..." }
],
"next_cursor": "MjAyNi0wNS0wOFQxMjowMDowMFo="
}GET /account — Credit balance
curl https://indexnowfast.com/api/v1/account \
-H "Authorization: Bearer infk_live_..."{ "credit_balance": 2480, "email": "you@domain.com", "name": "Your Name" }Webhooks
Configure endpoints from /app/webhooks. Receive POST requests when tasks finish, payments complete, or credits run low. Subscribed events: task.completed, task.failed, task.cancelled, payment.completed, credits.low.
Each request includes X-Webhook-Event, X-Webhook-Delivery, X-Webhook-Timestamp, and X-Webhook-Signature: sha256=<hmac> where the HMAC is computed as HMAC-SHA256(secret, timestamp + "." + body). Retries use exponential backoff (1m, 5m, 30m, 2h, 6h, 24h) up to 6 attempts. Endpoints with 20+ consecutive failures are auto-disabled.
// Node.js verification
import { createHmac, timingSafeEqual } from "crypto";
const sig = req.headers["x-webhook-signature"]?.split("=")[1];
const ts = req.headers["x-webhook-timestamp"];
const expected = createHmac("sha256", SECRET).update(`${ts}.${rawBody}`).digest("hex");
if (!sig || !timingSafeEqual(Buffer.from(sig), Buffer.from(expected))) return res.status(401).end();Reseller endpoints
Available to API keys whose owner has the reseller role. Write requests accept an optional idempotency_key (or Idempotency-Key header) so retries are safe.
GET /reseller/clients
curl "https://indexnowfast.com/api/v1/reseller/clients?limit=50&offset=0" \
-H "Authorization: Bearer infk_live_..."GET /reseller/transfers
List recent credit transfers (most recent first, default 50, max 200).
curl "https://indexnowfast.com/api/v1/reseller/transfers?limit=50" \
-H "Authorization: Bearer infk_live_..."{
"transfers": [
{ "id": "uuid", "client_user_id": "uuid", "credits": 500, "note": "Top-up", "created_at": "..." }
]
}POST /reseller/transfers
curl -X POST https://indexnowfast.com/api/v1/reseller/transfers \
-H "Authorization: Bearer infk_live_..." \
-H "Content-Type: application/json" \
-d '{
"client_user_id": "uuid",
"credits": 500,
"note": "Top-up",
"idempotency_key": "txn-2026-05-08-001"
}'{
"transfer_id": "uuid",
"credits": 500,
"client_user_id": "uuid",
"reseller_balance": 9500,
"client_balance": 1500
}GET /reseller/commissions
curl "https://indexnowfast.com/api/v1/reseller/commissions?status=accrued&since=2026-01-01" \
-H "Authorization: Bearer infk_live_..."Errors
All errors return JSON: { "error": { "code": "...", "message": "..." } }. Common codes: unauthorized (401), forbidden (403), not_found (404), invalid_input (400), insufficient_credits (402), provider_error (502), internal (500). Abusive usage may result in API key revocation.