Developers · v1
API reference.
A small, predictable REST surface. Submit URLs, poll status, read results. Auth is a single header. No SDK required.
Authentication
Send your key in the X-API-Key header on every request. Keys in the query string are not accepted (they would leak into logs). You can create several named keys, one per app, and revoke each on its own.
X-API-Key: 5f4dcc3b5aa765d61d8327deb882cf99
Errors
Failures return a 4xx or 5xx HTTP status with a JSON body containing success: false and a human-readable error. There is no error code enum - match on the message if you must, but prefer status codes.
{
"success": false,
"error": "Insufficient credits"
}
Cost & credits
Every call that creates a task deducts credits up front. Unused credits from auto-verify and auto-retry are refunded after the schedule completes.
| Action | Cost | Notes |
|---|---|---|
| Index URL | 2 credits | Standard lane |
| Index URL · Express | +13 credits | Sub-2-min crawl signal |
| Status check | 0.1 credits | Verifies if URL is in Google |
| Verify after indexing | +1 credit | Schedules re-checks · refundable |
Get profile
GET ?action=meReturns your account email, credit balance, and signup date. Useful as a health probe in CI.
curl 'https://platinumindexer.com/api/v1/index.php?action=me' \ -H 'X-API-Key: YOUR_KEY'
{
"success": true,
"user": {
"id": 123,
"email": "[email protected]",
"credits_balance": 500,
"created_at": "2026-04-12 10:00:00"
}
}
Submit URLs
POST ?action=create_taskQueue a batch of URLs for indexing or status checking. Returns a task_id you'll use to poll progress.
| Field | Type | Default | Description |
|---|---|---|---|
| urlsrequired | array | string | - | Array of URLs, or a string with one URL per newline. |
| type | string | indexer | indexer submits to Google. checker just verifies index status. |
| engine | string | google | Only Google is supported. |
| title | string | null | Optional label that shows up in your dashboard. |
| vip | bool | false | Route through the express lane (sub-2-min crawl, costs more). |
| drip_feed | bool | false | Stagger submissions over multiple days. |
| drip_duration_days | int | 3 | 1–30. Only honored when drip_feed is true. |
{
"urls": ["https://example.com/page1", "https://example.com/page2"],
"type": "indexer",
"title": "April launch",
"vip": true
}
curl -X POST 'https://platinumindexer.com/api/v1/index.php?action=create_task' \
-H 'X-API-Key: YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"urls":["https://example.com/page1"],"vip":true}'
{
"success": true,
"task_id": 456,
"is_drip_feed": false
}
Poll a task
GET ?action=get_task&task_id={id}Returns headline progress for a single task. Poll every 30–60s; we don't rate-limit polling but there's no real signal sooner than that.
{
"success": true,
"task": {
"id": 456,
"title": "April launch",
"type": "indexer",
"status": "processing",
"progress": { "updated": 10, "pending": 5 }
}
}
Read per-URL results
GET ?action=get_task_links&task_id={id}Returns the full link-level breakdown - final status, timestamps, and any verification data.
{
"success": true,
"links": [
{
"url": "https://example.com/page1",
"status": "indexed",
"checked_at": "2026-04-19 14:05:00"
}
]
}
List tasks
GET ?action=list_tasksYour tasks, newest first, with per-link counts. Use it to find task ids.
| Param | Type | Default | Description |
|---|---|---|---|
| page | int | 1 | Page number. |
| per_page | int | 20 | 1–100. |
| type | string | - | indexer or checker. |
| status | string | - | pending, processing, completed or failed. |
{
"success": true,
"tasks": [
{
"id": 456,
"title": "April launch",
"type": "indexer",
"engine": "google",
"status": "completed",
"vip": false,
"links": { "total": 20, "indexed": 17, "unindexed": 3, "pending": 0, "error": 0 },
"created_at": "2026-04-19 14:00:00",
"completed_at": "2026-04-19 14:20:00"
}
],
"pagination": { "page": 1, "per_page": 20, "total": 42, "total_pages": 3 }
}
Pricing
GET ?action=pricingLive credit costs, so you can estimate a task before creating it. Tasks are charged in whole credits; the task total is rounded up. credit_tiers is empty while one flat price per credit applies.
{
"success": true,
"currency": "USD",
"price_per_credit_usd": 0.01,
"credits_per_url": { "indexer": 2, "indexer_vip": 10, "checker": 0.1, "auto_check_addon": 1 },
"credit_tiers": [],
"vip_queue_enabled": true
}
MCP server for AI assistants
Let Claude, Cursor, ChatGPT or any Model Context Protocol host submit URLs, check index status and read results for you. The server wraps this API and authenticates with your API key.
{
"mcpServers": {
"platinumindexer": {
"command": "npx",
"args": ["-y", "platinumindexer-mcp"],
"env": { "PLATINUMINDEXER_API_KEY": "YOUR_KEY" }
}
}
}
| Tool | Description |
|---|---|
| get_account | Credit balance. |
| get_pricing / estimate_cost | Live costs, and the cost of a task before you submit it. |
| submit_urls_for_indexing | Create an indexing task. Spends credits. |
| check_index_status | Create an index-check task. Spends credits. |
| list_tasks / get_task / get_task_links | Progress and per-URL results. |
Response shape
All responses are JSON with a top-level success boolean. Successful responses carry the relevant resource (user, task, links, …); failures carry error.
Status codes
| Code | Meaning |
|---|---|
| 200 | OK |
| 400 | Bad request - missing/invalid parameters |
| 401 | Missing or invalid X-API-Key |
| 402 | Insufficient credits |
| 404 | Task or resource not found |
| 429 | Too many requests - back off |
| 5xx | Apex side issue - retry with exponential backoff |