Documentation

API documentation

Submit batches and read results from your own code, with safe retries built in.

Getting access

  1. Register, verify your email, and wait for your account to be approved.
  2. Open API access in your account and request access.
  3. An admin reviews the request. When approved, your key appears once on that page. Copy it right away.
  4. To rotate a key, request a rotation from the same page. The old key stops working the moment the new one is issued.

Basics

Base URL
https://indexingurl.org/api/v1
Auth
Authorization: Bearer YOUR_KEY
Format
JSON in, JSON out
Rate limit
60 requests per minute (429 with Retry-After)

Endpoints

GET /balance Your credit balance.
POST /batches Submit 1 to 1,000 URLs. Reserves 1 credit per URL.
GET /batches List your batches, newest first (25 per page).
GET /batches/{batch_number} One batch summary.
GET /batches/{batch_number}/results Per-URL status (200 per page).

Submit a batch

Send an optional Idempotency-Key header. Repeating the same key with the same URLs returns the original batch without charging again; the same key with different URLs is rejected (409).

curl -X POST https://indexingurl.org/api/v1/batches \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: my-unique-key" \
  -d '{"urls": ["https://example.com/a", "https://example.com/b"]}'
201 Created
{
  "batch_number": "IDX-20261022-000042",
  "status": "accepted",
  "entries_count": 2,
  "created_at": "2026-10-22T14:03:11+00:00"
}

Check results

curl https://indexingurl.org/api/v1/batches/IDX-20261022-000042/results \
  -H "Authorization: Bearer YOUR_KEY"
200 OK
{
  "data": [
    { "url": "https://example.com/a", "status": "indexed", "result_message": null },
    { "url": "https://example.com/b", "status": "pending", "result_message": null }
  ],
  "meta": { "current_page": 1, "last_page": 1, "total": 2 }
}

URL status: pending, upstream_accepted, indexed, failed.
Batch status: accepted, dispatching, upstream_accepted, completed, partially_failed, failed, pending_reconciliation (we are still confirming the outcome and never resend it; see the FAQ).

Errors

401 Missing or invalid API key.
402 Not enough credits for the requested URLs.
403 Email not verified, account pending or suspended, or API access not enabled.
409 Idempotency-Key reused with a different URL list.
422 Invalid URLs, or batch size outside 1 to 1,000.
429 Too many requests. Wait for the Retry-After header.

Error bodies are JSON with a message, and an error code where it helps (for example insufficient_credits).

Telegram WhatsApp