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. Query-string auth (?api_key=…) works too, but only for GETs from environments where headers are awkward.
X-API-Key: 5f4dcc3b5aa765d61d8327deb882cf99
?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"
}
]
}
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 |