IndexToast
EN
EnglishEspañolPortuguês (Brasil)DeutschFrançaisNederlands

Your workspace. Your API.

The same API guide available in your Business dashboard. All endpoints, costs and examples, without signing in.

Open Business workspace

Connect your workspace

  1. Create a client project in the dashboard. Copy its project UUID.
  2. Verify your email. An owner or admin can create a scoped API key in API & webhooks.
  3. Store the key in a server environment variable named INDEXTOAST_API_KEY. Never put it in browser code or a URL.
GET /usage
curl https://api.indextoast.com/v1/business/usage \
  -H "Authorization: Bearer $INDEXTOAST_API_KEY"
GET /projects
curl https://api.indextoast.com/v1/business/projects \
  -H "Authorization: Bearer $INDEXTOAST_API_KEY"
PermissionAccess
usage:readGET /usage · GET /projects
jobs:readGET /batches · GET /batches/:id
jobs:writePOST /batches/review · POST /batches

Keys expire and can be revoked. Workspace, project, key, webhook and billing changes require an authorised dashboard session; API keys cannot manage billing.

Standard

Submit URLs for Standard indexing. Each unique URL uses 1 Standard action.

Review first. Submit once.

Review is free. It returns quantity, duplicates, unitCost, requiredUnits, available, canSubmit and normalised URLs. Your balance is checked again at submission.

1 · POST /batches/review · jobs:write
curl https://api.indextoast.com/v1/business/batches/review \
  -H "Authorization: Bearer $INDEXTOAST_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "projectId": "YOUR_PROJECT_UUID",
  "name": "Client campaign",
  "operation": "standard",
  "urls": [
    "https://example.com/page-one",
    "https://example.com/page-two"
  ],
  "idempotencyKey": "campaign-standard-001"
}'
2 · POST /batches · jobs:write
curl https://api.indextoast.com/v1/business/batches \
  -H "Authorization: Bearer $INDEXTOAST_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "projectId": "YOUR_PROJECT_UUID",
  "name": "Client campaign",
  "operation": "standard",
  "urls": [
    "https://example.com/page-one",
    "https://example.com/page-two"
  ],
  "idempotencyKey": "campaign-standard-001"
}'

Use 1–1,000 public HTTP(S) URLs, a project UUID from your workspace, a name of 1–100 characters and an idempotency key of 8–150 characters. Duplicate normalised URLs within a batch are charged once.

202 Accepted · response excerpt
{
  "id": "BATCH_UUID",
  "operation": "standard",
  "quantity": 2,
  "status": "queued",
  "successful": 0,
  "failed": 0,
  "results": []
}

202 means accepted for processing. It does not confirm indexing or completion time. Capacity is debited once at acceptance.

Index Checker

Check whether URLs are detected in the search index. Each unique URL uses 1 Standard action, including inconclusive results.

Review first. Submit once.

Review is free. It returns quantity, duplicates, unitCost, requiredUnits, available, canSubmit and normalised URLs. Your balance is checked again at submission.

1 · POST /batches/review · jobs:write
curl https://api.indextoast.com/v1/business/batches/review \
  -H "Authorization: Bearer $INDEXTOAST_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "projectId": "YOUR_PROJECT_UUID",
  "name": "Client campaign",
  "operation": "check",
  "urls": [
    "https://example.com/page-one",
    "https://example.com/page-two"
  ],
  "idempotencyKey": "campaign-check-001"
}'
2 · POST /batches · jobs:write
curl https://api.indextoast.com/v1/business/batches \
  -H "Authorization: Bearer $INDEXTOAST_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "projectId": "YOUR_PROJECT_UUID",
  "name": "Client campaign",
  "operation": "check",
  "urls": [
    "https://example.com/page-one",
    "https://example.com/page-two"
  ],
  "idempotencyKey": "campaign-check-001"
}'

Use 1–1,000 public HTTP(S) URLs, a project UUID from your workspace, a name of 1–100 characters and an idempotency key of 8–150 characters. Duplicate normalised URLs within a batch are charged once.

202 Accepted · response excerpt
{
  "id": "BATCH_UUID",
  "operation": "check",
  "quantity": 2,
  "status": "queued",
  "successful": 0,
  "failed": 0,
  "results": []
}

202 means accepted for processing. It does not confirm indexing or completion time. Capacity is debited once at acceptance.

Index Checker results

GET /batches/:id · results excerpt
{
  "results": [
    {
      "url": "https://example.com/page-one",
      "result": "indexed"
    },
    {
      "url": "https://example.com/page-two",
      "result": "unknown"
    }
  ]
}

indexed = detected; not_indexed = not detected by this check; unknown = inconclusive. A completed batch is a processing status, not a positive index result. Read each URL result.

Boost

Boost uses 20 shared Business units per unique URL.

Review first. Submit once.

Review is free. It returns quantity, duplicates, unitCost, requiredUnits, available, canSubmit and normalised URLs. Your balance is checked again at submission.

1 · POST /batches/review · jobs:write
curl https://api.indextoast.com/v1/business/batches/review \
  -H "Authorization: Bearer $INDEXTOAST_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "projectId": "YOUR_PROJECT_UUID",
  "name": "Client campaign",
  "operation": "boost",
  "urls": [
    "https://example.com/page-one",
    "https://example.com/page-two"
  ],
  "idempotencyKey": "campaign-boost-001"
}'
2 · POST /batches · jobs:write
curl https://api.indextoast.com/v1/business/batches \
  -H "Authorization: Bearer $INDEXTOAST_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "projectId": "YOUR_PROJECT_UUID",
  "name": "Client campaign",
  "operation": "boost",
  "urls": [
    "https://example.com/page-one",
    "https://example.com/page-two"
  ],
  "idempotencyKey": "campaign-boost-001"
}'

Use 1–1,000 public HTTP(S) URLs, a project UUID from your workspace, a name of 1–100 characters and an idempotency key of 8–150 characters. Duplicate normalised URLs within a batch are charged once.

202 Accepted · response excerpt
{
  "id": "BATCH_UUID",
  "operation": "boost",
  "quantity": 2,
  "status": "queued",
  "successful": 0,
  "failed": 0,
  "results": []
}

202 means accepted for processing. It does not confirm indexing or completion time. Capacity is debited once at acceptance.

Use monthly or prepaid Business units for Boost. There is no separate Boost allowance.

Track batches

GET /batches/:id · jobs:read
curl https://api.indextoast.com/v1/business/batches/BATCH_UUID \
  -H "Authorization: Bearer $INDEXTOAST_API_KEY"
GET /batches · jobs:read
curl https://api.indextoast.com/v1/business/batches?page=1 \
  -H "Authorization: Bearer $INDEXTOAST_API_KEY"

Lists contain 20 batches per page. Read hasMore before requesting the next page. Status reads are free; poll with backoff or use a webhook.

Processing states
queued → submitting → submitted / processing → completed
                                             ↘ failed / unknown

failed or unknown needs review. Contact support with the batch ID before creating a replacement; submitting a new key may debit capacity again. Processing retries use the original reservation.

Verify webhook signatures

Configure an HTTPS endpoint in API & webhooks. Save the secret shown once. Receive signed batch.finished events and deduplicate by event ID.

Signature header
x-indextoast-signature: t=TIMESTAMP,v1=HEX

HMAC-SHA256(secret, timestamp + "." + rawBody)
  • Verify the raw body with a constant-time comparison before processing.
  • Reject timestamps more than five minutes from your server clock, including future timestamps.
  • Persist the event ID before acknowledging with 2xx. Delivery retries are bounded; reconcile missed events through batch status reads.

Usage & billing

ServiceCost per unique URLBalance
Standard1 actionStandard
Index Checker1 actionStandard
Boost20 unitsStandard

Submitting 100 Standard URLs and checking each once uses 200 units. Boosting 100 URLs uses 2,000 units; checking each once adds 100 units, for 2,100 total.

GET /usage · response excerpt
{
  "plan": "agency",
  "included": 10000,
  "purchased": 0,
  "standardAvailable": 10000,
  "boostAvailable": 500,
  "unitCosts": {
    "standard": 1,
    "check": 1,
    "boost": 20
  },
  "monthlyActionLimit": null,
  "acceptedThisMonth": 0,
  "periodEnd": "2026-11-08T00:00:00.000Z"
}

Included Standard actions are used before purchased actions. Included actions reset at your paid billing period without rollover; prepaid balances do not expire. Regular and Business balances are separate.

The monthly action cap counts all accepted operations in the UTC calendar month. Blank uses balance limits; 0 pauses new jobs. It is an action limit, not a dollar budget.

Errors & retries

Retry a timed-out submission with the identical payload and idempotency key. The existing batch is returned without another debit. If you send the optional Idempotency-Key header, it must match the body.

HTTPMeaning / next step
400 / 422Invalid input. Correct the payload before retrying.
401 / 403Check key validity, permissions and verified email.
404Project or batch is unavailable in this workspace.
409STANDARD_BALANCE_REQUIRED · SPENDING_LIMIT · IDEMPOTENCY_CONFLICT
429 / 5xxRespect Retry-After when provided. Retry with exponential backoff and the same key.

API limit: 120 requests per minute per caller IP, shared across routes. Validation, review and status reads do not spend actions. A paid Index Checker result can still be inconclusive.

Contact supporthello@indextoast.com