Overview
The GigaIndexer API lets you submit URLs for indexing, check your credit balance, and track order status programmatically. All endpoints use the base URL:
https://gigaindexer.com/wp-json/index/api/v1/
Authentication
All API requests require authentication using HTTP Basic Auth with your WordPress Application Password.
Getting your API Key
- Log in to your GigaIndexer account
- Go to My Account → API Access
- Click Generate New API Key
- Copy the generated key — it will only be shown once
Using your API Key
Include the Authorization header with every request. Use your account email as the username and the generated API key as the password:
Authorization: Basic base64(email:api_key)
Example with cURL:
curl -u "[email protected]:xxxx xxxx xxxx xxxx xxxx xxxx"
https://gigaindexer.com/wp-json/index/api/v1/check-balance
Endpoints
GET /check-balance
Returns your current credit balance.
Request:
curl -u "[email protected]:api_key"
https://gigaindexer.com/wp-json/index/api/v1/check-balance
Response (200):
{
"credits": 500
}
A value of -1 indicates unlimited credits.
POST /order
Submit URLs for indexing. Each URL costs 1 credit.
Request body (JSON):
{
"urls": [
"https://example.com/page-1",
"https://example.com/page-2",
"https://example.com/page-3"
]
}
Example:
curl -X POST
-u "[email protected]:api_key"
-H "Content-Type: application/json"
-d '{"urls":["https://example.com/page-1","https://example.com/page-2"]}'
https://gigaindexer.com/wp-json/index/api/v1/order
Response (200):
{
"order_id": 12345,
"urls_submitted": 2,
"credits_used": 2,
"credits_remaining": 498
}
Error responses:
| Code | Message | Reason |
|---|---|---|
| 400 | No URLs provided | Request body missing urls array |
| 400 | No valid URLs provided | All URLs failed format validation |
| 400 | Too many URLs | More than 500 URLs in one request |
| 402 | Insufficient credits | Not enough credits for the number of URLs |
| 429 | Rate limit exceeded | Too many requests (see Rate Limits below) |
GET /orders
List your orders with optional filtering and pagination.
Query parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
per_page | integer | 10 | Results per page (max 100) |
status | string | any | Filter by order status |
Example:
curl -u "[email protected]:api_key"
"https://gigaindexer.com/wp-json/index/api/v1/orders?page=1&per_page=5&status=processing"
Response (200):
{
"orders": [
{
"id": 12345,
"status": "processing",
"date_created": "2025-01-15T10:30:00",
"total_urls": 3,
"credits_used": 3
}
],
"total": 42,
"pages": 9
}
GET /order/status/{id}
Get detailed status for a specific order, including per-URL indexing results.
Example:
curl -u "[email protected]:api_key"
https://gigaindexer.com/wp-json/index/api/v1/order/status/12345
Response (200):
{
"order_id": 12345,
"status": "processing",
"date_created": "2025-01-15T10:30:00",
"urls": [
{
"url": "https://example.com/page-1",
"status": "completed",
"date_indexed": "2025-01-15T12:45:00",
"indexable": "yes"
},
{
"url": "https://example.com/page-2",
"status": "in-progress",
"date_indexed": "-",
"indexable": "-"
}
]
}
Error: Returns 404 if the order doesn’t exist or doesn’t belong to you.
Rate Limits
To ensure fair usage, the following rate limits apply to the POST /order endpoint:
| Limit | Value |
|---|---|
| Maximum URLs per order | 500 |
| Minimum time between orders | 20 seconds |
| Maximum orders per day | 10 |
When a rate limit is exceeded, the API returns 429 Too Many Requests with a message indicating which limit was hit. Rate limit counters are only incremented on successful orders — failed attempts do not count against your limits.
URL Validation
URLs submitted via the API must:
- Start with
http://orhttps:// - Be properly formatted (no spaces or invalid characters)
- Not be on the blocked list
Invalid URLs are silently filtered out. If all URLs in a request are invalid, the API returns a 400 error.
Order Statuses
| Status | Description |
|---|---|
processing | Order received and URLs are being indexed |
completed | All URLs have been processed |
api-ordered | Order placed via API (initial status) |
manual-action | Order requires manual review |
cancelled | Order was cancelled |
refunded | Order was refunded and credits restored |
Code Examples
Python
import requests
from requests.auth import HTTPBasicAuth
BASE_URL = "https://gigaindexer.com/wp-json/index/api/v1"
auth = HTTPBasicAuth("[email protected]", "xxxx xxxx xxxx xxxx xxxx xxxx")
# Check balance
balance = requests.get(f"{BASE_URL}/check-balance", auth=auth)
print(balance.json())
# Submit URLs
response = requests.post(
f"{BASE_URL}/order",
auth=auth,
json={"urls": ["https://example.com/page-1", "https://example.com/page-2"]}
)
order = response.json()
print(f"Order #{order['order_id']} — {order['urls_submitted']} URLs submitted")
# Check order status
status = requests.get(f"{BASE_URL}/order/status/{order['order_id']}", auth=auth)
print(status.json())
JavaScript (Node.js)
const BASE_URL = "https://gigaindexer.com/wp-json/index/api/v1";
const headers = {
"Authorization": "Basic " + btoa("[email protected]:xxxx xxxx xxxx xxxx xxxx xxxx"),
"Content-Type": "application/json"
};
// Check balance
const balance = await fetch(`${BASE_URL}/check-balance`, { headers });
console.log(await balance.json());
// Submit URLs
const order = await fetch(`${BASE_URL}/order`, {
method: "POST",
headers,
body: JSON.stringify({
urls: ["https://example.com/page-1", "https://example.com/page-2"]
})
});
console.log(await order.json());
// Check order status
const status = await fetch(`${BASE_URL}/order/status/12345`, { headers });
console.log(await status.json());
PHP
$base_url = "https://gigaindexer.com/wp-json/index/api/v1";
$auth = base64_encode("[email protected]:xxxx xxxx xxxx xxxx xxxx xxxx");
// Check balance
$ch = curl_init("$base_url/check-balance");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Basic $auth"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$balance = json_decode(curl_exec($ch), true);
echo "Credits: " . $balance["credits"];
// Submit URLs
$ch = curl_init("$base_url/order");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Basic $auth",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
"urls" => ["https://example.com/page-1", "https://example.com/page-2"]
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$order = json_decode(curl_exec($ch), true);
echo "Order ID: " . $order["order_id"];
Need Help?
If you have questions about the API or run into issues, contact us at [email protected].