Integrate GetIndexedNow into your applications. Create indexer, checker, and reindexer tasks, check credits, monitor task status, and receive webhook notifications using your API key.
Get Your API KeyCore task management endpoints for the GetIndexedNow API
This API covers the core task management endpoints. Use it to create indexer, checker, and reindexer tasks, check your available credits, monitor task status by task ID, or receive real-time updates via webhooks when you configure a webhook URL on your API key.
All requests require a Bearer token
Include your API key in the Authorization header on every request. Keys use the format gti_live_....
Authorization: Bearer YOUR_API_KEYGenerate an API key from User Settings → API Keys.
Production API endpoint
https://api.getindexednow.comAll endpoint paths below are relative to this base URL. Use Content-Type: application/json for POST requests.
Endpoints for checking credits, creating indexer, checker, and reindexer tasks, and monitoring task status.
/api/user/tasks/creditsReturns the number of task credits remaining for the authenticated user. Check this before creating new tasks to ensure sufficient credits are available.
curl --location 'https://api.getindexednow.com/api/user/tasks/credits' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY'{
"credits": 150,
"used": 50,
"limit": 200
}/api/user/tasksSubmit a new indexer task by providing a list of URLs, a title, and type "indexer". Uses the same POST /api/user/tasks endpoint as checker and reindexer tasks. The API returns a task ID which you can use to track progress.
{
"title": "My indexer task",
"type": "indexer",
"urls": ["https://example.com"]
}curl --location 'https://api.getindexednow.com/api/user/tasks' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
"title": "My indexer task",
"type": "indexer",
"urls": ["https://example.com"]
}'{
"task_id": "abc123-def456",
"status": "pending",
"message": "Task created successfully"
}/api/user/tasksSubmit a new checker task using the same endpoint as indexer tasks. Set type to "checker" to verify whether URLs are indexed by Google. The API returns a task ID which you can use to track progress and read per-URL indexing results.
{
"title": "My checker task",
"type": "checker",
"urls": ["https://example.com"]
}curl --location 'https://api.getindexednow.com/api/user/tasks' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
"title": "My checker task",
"type": "checker",
"urls": ["https://example.com"]
}'{
"task_id": "abc123-def456",
"status": "pending",
"message": "Task created successfully"
}/api/user/tasks/status/{task_id}Returns the current status and per-URL results for indexer, checker, and reindexer tasks. Pass the task ID from your create-task response in place of {task_id} in the URL. Poll at regular intervals until status is completed. For checker tasks, each URL includes isIndexed and checkedAt. For indexer tasks, use each URL id in recreatedFromUrlIds when creating a reindexer task.
curl --location 'https://api.getindexednow.com/api/user/tasks/status/297703e3-6198-4951-8102-e0509dba84d8' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY'{
"taskId": "297703e3-6198-4951-8102-e0509dba84d8",
"speedyTaskId": "6a28e7dfc19f717101e0ac55",
"title": "checker new",
"type": "google/checker",
"status": "completed",
"createdAt": "2026-06-10T04:28:07.365Z",
"updatedAt": "2026-06-10T04:28:23.034Z",
"urls": [
{
"id": "152a81c7-d575-43ba-99f6-1e1829af8079",
"url": "https://contently.com",
"isIndexed": false,
"processingStatus": "completed",
"title": "Not indexed by Google",
"errorCode": null,
"checkedAt": "2026-06-10T04:28:07.366Z"
}
]
}/api/user/tasksRe-submit URLs that failed to index. First call Get Task Status to retrieve the task results, then pick the id of each URL you want to reindex from the urls array and pass those values in recreatedFromUrlIds along with the matching URL strings.
{
"title": "Reindex failed URL",
"type": "reindexer",
"urls": ["https://contently.com"],
"recreatedFromUrlIds": ["152a81c7-d575-43ba-99f6-1e1829af8079"]
}curl --location 'https://api.getindexednow.com/api/user/tasks' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
"title": "Reindex failed URL",
"type": "reindexer",
"urls": [
"https://contently.com"
],
"recreatedFromUrlIds": [
"152a81c7-d575-43ba-99f6-1e1829af8079"
]
}'{
"task_id": "43fd9fc2-faff-4096-8ff4-d1f1df8a2867",
"status": "pending",
"message": "Task created successfully"
}Recommended flow for creating tasks, checking status, and reindexing failed URLs
Call GET /api/user/tasks/credits to confirm you have enough credits.
Call POST /api/user/tasks with your URLs and title. Use type "indexer" to submit URLs for indexing, or type "checker" to verify Google indexing status. Note the task_id in the response.
Call GET /api/user/tasks/status/{task_id} until status is completed, or configure a webhookUrl on your API key to receive task status updates automatically. See the Webhooks section for setup and verification.
From the task status response, pick the id of each URL you want to reindex (e.g. where isIndexed is false). Use these values in recreatedFromUrlIds.
Call POST /api/user/tasks with type "reindexer", the URL strings to reindex, and recreatedFromUrlIds set to the URL ids from the previous step.
Receive task status updates at your server instead of polling
When you create an API key, you can optionally set a webhookUrl. We POST JSON to that URL when task status changes. Generate keys from User Settings → API Keys.
When you create an API key with a webhookUrl, the response includes:
key — Your API key. Always returned when a key is created.webhookSecret — A 64-character hex string used to verify webhook requests. Only returned when you set a webhookUrl.{
"key": "gti_live_xxxxxxxxxxxxxxxx",
"webhookSecret": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
}{
"key": "gti_live_xxxxxxxxxxxxxxxx"
}When a task status changes, we call the webhookUrl you entered when creating the API key:
X-Webhook-Secret from the request headers.// Example handler (Node.js / Next.js Route Handler)
const WEBHOOK_SECRET = process.env.GETINDEXEDNOW_WEBHOOK_SECRET;
export async function POST(request: Request) {
const receivedSecret = request.headers.get('X-Webhook-Secret');
if (!receivedSecret || receivedSecret !== WEBHOOK_SECRET) {
return new Response('Unauthorized', { status: 401 });
}
const payload = await request.json();
// Process task status update from payload...
return new Response('OK', { status: 200 });
}Handle API responses gracefully
Use exponential backoff for 429 responses, handle 401/403 gracefully, and log request IDs for error tracing when available.