Home/Blog/Developers
Developers

Instant URL Indexer API: Index Any URL in Under 1 Minute (REST API)

May 12, 20267 min readUpdated May 12, 2026
Quick Answer

The Instant URL Indexer REST API submits any URL to Google's indexing pipeline with a single authenticated POST request. Authentication uses a Bearer API key in the format iui_<48-hex>. A single request accepts up to 500 URLs and returns instantly while indexing completes in the background. Average end-to-end indexing latency is 30 to 90 seconds per URL.

API overview

One endpoint, one auth method, one request body. The whole API surface for submitting URLs is small by design — every additional knob is a chance for error in your publish pipeline.

FieldValue
Base URLhttps://instanturlindexer.com
Submit endpointPOST /api/indexing/submit
History endpointGET /api/indexing/history
Auth headerAuthorization: Bearer iui_<48-hex>
Content-Typeapplication/json
URLs per request1–500
Rate limitPlan-based (Starter 80/day, Enterprise 4000/day)

Authentication

Every authenticated endpoint accepts either a cookie session or a Bearer API key. For programmatic use, always use the API key.

  1. Sign in to the dashboard.
  2. Go to Profile → API Access.
  3. Click Generate API Key. The key is shown once — copy it immediately.
  4. Store the key in your secrets manager (env var, vault, or equivalent). Never commit it to source control.
HEADS UP
API keys grant full account access. If a key leaks, rotate it immediately from Dashboard → Profile → API Access → Revoke. New keys are emailed to the account holder for audit purposes.

Submitting URLs (cURL)

bash
curl -X POST https://instanturlindexer.com/api/indexing/submit \
  -H "Authorization: Bearer iui_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "urls": [
      "https://yoursite.com/blog/post-1",
      "https://yoursite.com/blog/post-2"
    ]
  }'

Response (immediate, before indexing completes):

json
{
  "ok": true,
  "submissionId": "iui_sub_4f8a2c91...",
  "queued": 2,
  "invalid": 0,
  "creditsCharged": 2,
  "creditsRemaining": 78
}

Submitting URLs (Node.js)

javascript
import fetch from "node-fetch";

async function submitUrls(urls) {
  const res = await fetch(
    "https://instanturlindexer.com/api/indexing/submit",
    {
      method: "POST",
      headers: {
        "Authorization": `Bearer ${process.env.IUI_API_KEY}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({ urls }),
    }
  );
  if (!res.ok) throw new Error(`Submit failed: ${res.status}`);
  return res.json();
}

const result = await submitUrls([
  "https://yoursite.com/blog/post-1",
  "https://yoursite.com/blog/post-2",
]);
console.log("Queued:", result.queued, "Credits left:", result.creditsRemaining);

Submitting URLs (Python)

python
import os
import requests

def submit_urls(urls):
    res = requests.post(
        "https://instanturlindexer.com/api/indexing/submit",
        headers={
            "Authorization": f"Bearer {os.environ['IUI_API_KEY']}",
            "Content-Type": "application/json",
        },
        json={"urls": urls},
        timeout=10,
    )
    res.raise_for_status()
    return res.json()

result = submit_urls([
    "https://yoursite.com/blog/post-1",
    "https://yoursite.com/blog/post-2",
])
print("Queued:", result["queued"], "Credits left:", result["creditsRemaining"])

Checking submission history

Submission records persist for 48 hours. Query the history endpoint to see per-URL outcomes:

bash
curl https://instanturlindexer.com/api/indexing/history?limit=50 \
  -H "Authorization: Bearer iui_YOUR_KEY"

Each record includes the URL, status (submitted/indexed/failed), trackingId once assigned, timestamps, and the sanitised failure reason if applicable.

Error handling

StatusCauseAction
400Malformed JSON or > 500 URLsValidate input; split batches
401Missing or invalid API keyCheck Authorization header
403Plan does not allow API accessUpgrade plan (all plans support API in 2026)
402Insufficient creditsTop up credits or wait for next plan cycle
429Rate limit exceededBack off and retry with exponential delay
500/502/503Upstream issueRetry with backoff; URLs auto-queue on our side
TIP
Network resilience: the platform's worker auto-retries failed batches with a 30s → 2m → 10m → 30m backoff schedule (5 attempts max). You generally don't need client-side retry logic for transient failures.

Best practices

Example: CMS publish hook

javascript
// In your CMS's "post-published" hook
async function onPostPublished(post) {
  await submitUrls([
    `https://yoursite.com/${post.slug}`,
  ]);
}

// Or with related URLs (sitemap, category page)
async function onMajorContentChange(post) {
  await submitUrls([
    `https://yoursite.com/${post.slug}`,
    `https://yoursite.com/category/${post.category}`,
    `https://yoursite.com/sitemap.xml`,
  ]);
}

Where to start

Sign up, grab an API key from the dashboard, and integrate the POST into your publish pipeline. The Starter plan ($5 / 80 URLs) is enough to prove the workflow end to end before committing to higher tiers.

Frequently Asked Questions

Is the API key the same as my account password?+

No. The API key is a separate credential generated from the dashboard. It's intended for programmatic use and can be rotated independently of your password.

Do I need a paid plan to use the API?+

Every plan starting at $5/80 credits includes full API access. There's no API-only tier, but the entry plan is enough to integrate and test the workflow.

What happens if my submission contains invalid URLs?+

Invalid URLs are caught in pre-validation and excluded from the batch (and not charged). Valid URLs in the same submission process normally. The response shows both counts: queued and invalid.

Is there a webhook for indexing confirmation?+

A webhook callback for indexing-completion events is on the roadmap for 2026. For now, poll the history endpoint or watch the dashboard for status updates.

Index any URL in under 1 minute.

500 URLs per submission. REST API on every plan. Track every URL end-to-end.

Keep reading