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.