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

  1. Log in to your GigaIndexer account
  2. Go to My Account → API Access
  3. Click Generate New API Key
  4. 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:

CodeMessageReason
400No URLs providedRequest body missing urls array
400No valid URLs providedAll URLs failed format validation
400Too many URLsMore than 500 URLs in one request
402Insufficient creditsNot enough credits for the number of URLs
429Rate limit exceededToo many requests (see Rate Limits below)

GET /orders

List your orders with optional filtering and pagination.

Query parameters:

ParameterTypeDefaultDescription
pageinteger1Page number
per_pageinteger10Results per page (max 100)
statusstringanyFilter 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:

LimitValue
Maximum URLs per order500
Minimum time between orders20 seconds
Maximum orders per day10

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:// or https://
  • 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

StatusDescription
processingOrder received and URLs are being indexed
completedAll URLs have been processed
api-orderedOrder placed via API (initial status)
manual-actionOrder requires manual review
cancelledOrder was cancelled
refundedOrder 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].