API Reference

Monitor brand visibility across Chinese AI platforms with structured JSON results.

Quick Start

Get your first monitoring result in under 3 minutes with three API calls.

1 Get your API key

Sign up at api.geotoolhub.com or use RapidAPI. You'll receive an API key starting with sk-

2 Submit a query
curl -X POST https://api.geotoolhub.com/v1/chat/completions \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "geo-monitor",
    "messages": [{"role": "user", "content": "What are the best CRM tools?"}],
    "platforms": [{"platform": "deepseek", "mode": "search"}]
  }'
# Response:
{ "choices": [{ "message": { "content": "{\"task_id\":\"a1b2c3d4...\",\"status\":\"pending\"}" } }] }
3 Poll for results
# Poll every 5-10 seconds until status is "completed":
curl https://api.geotoolhub.com/v1/tasks/a1b2c3d4.../status \
  -H "Authorization: Bearer sk-your-api-key"

# Then fetch the result:
curl https://api.geotoolhub.com/v1/tasks/a1b2c3d4.../result \
  -H "Authorization: Bearer sk-your-api-key"
Python example
import httpx, json, time

API_KEY = "sk-your-api-key"
BASE = "https://api.geotoolhub.com"
headers = {"Authorization": f"Bearer {API_KEY}"}

# 1. Submit
resp = httpx.post(f"{BASE}/v1/chat/completions", headers=headers, json={
    "model": "geo-monitor",
    "messages": [{"role": "user", "content": "What are the best CRM tools?"}],
    "platforms": [{"platform": "deepseek", "mode": "search"}]
})
task_id = json.loads(resp.json()["choices"][0]["message"]["content"])["task_id"]

# 2. Poll
while True:
    status = httpx.get(f"{BASE}/v1/tasks/{task_id}/status", headers=headers).json()
    if status["status"] == "completed": break
    time.sleep(10)

# 3. Get result
result = httpx.get(f"{BASE}/v1/tasks/{task_id}/result", headers=headers).json()
print(result["data"]["subTaskList"][0]["answerContent"])

Base URL

Production: https://api.geotoolhub.com

Authentication

Include your API key in the Authorization header of every request:

Authorization: Bearer sk-your-api-key

Get your API key at api.geotoolhub.com or on RapidAPI.

Workflow

1
Submit Query
POST /v1/chat/completions (OpenAI-compatible)
2
Poll Status
GET /v1/tasks/{id}/status (every 5-10s)
3
Fetch Results
GET /v1/tasks/{id}/result (when status = completed)
POST

/v1/chat/completions

OpenAI-Compatible

Submit a monitoring query using the standard OpenAI chat completion format. Works with any OpenAI-compatible client library.

Request Body

ParameterTypeRequiredDescription
modelstringNoAny model name (e.g. "geo-monitor")
messagesarrayYesOpenAI messages format. User message = your query.
platformsPlatformConfig[]NoTarget platforms (default: DeepSeek search)
monitorKeywordsstringNoKeywords to track, comma-separated
modestringNostandard | reasoning | search | reasoning_search
screenshotintNo0=none, 1=screenshot, 2=mention

PlatformConfig

FieldTypeRequiredDescription
platformstringYesPlatform identifier
modestringNostandard | reasoning | search | reasoning_search
screenshotintNo0, 1, or 2

Example

curl -X POST https://api.geotoolhub.com/v1/chat/completions \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "geo-monitor",
    "messages": [{"role": "user", "content": "What are the best CRM tools?"}],
    "platforms": [{"platform": "deepseek", "mode": "search"}],
    "monitorKeywords": "Salesforce,HubSpot"
  }'

# Response (OpenAI-compatible):
{
  "id": "chatcmpl-a1b2c3d4-...",
  "object": "chat.completion",
  "choices": [{
    "message": {
      "content": "{\"task_id\":\"a1b2c3d4-...\",\"status\":\"pending\"}"
    }
  }]
}

# Extract task_id, then poll /v1/tasks/{task_id}/status
GET

/v1/tasks/{task_id}/status

Poll the status of a monitoring task. Call every 5-10 seconds until status is completed.

Path Parameters

ParameterTypeDescription
task_idstringTask ID from submit response

Status Values

pendingTask submitted, waiting to start
processingTask is being executed
completedTask finished, results ready
failedTask failed

Example

curl https://api.geotoolhub.com/v1/tasks/{task_id}/status \
  -H "Authorization: Bearer sk-your-api-key"

# Response:
{
  "task_id": "a1b2c3d4-...",
  "status": "completed",
  "created_at": "2026-05-17 12:00:00"
}
GET

/v1/tasks/{task_id}/result

Fetch the full monitoring result. Only call when status is completed.

Example

curl https://api.geotoolhub.com/v1/tasks/{task_id}/result \
  -H "Authorization: Bearer sk-your-api-key"

# Response:
{
  "task_id": "a1b2c3d4-...",
  "status": "completed",
  "data": {
    "subTaskList": [
      {
        "subTaskId": "4124831",
        "platform": "deepseek",
        "mode": "search",
        "prompt": "What are the best CRM tools?",
        "status": "completed",
        "answerContent": "### Best CRM Tools...\n\n1. **Salesforce** ...",
        "referenceList": [
          {"index": 1, "title": "CRM Comparison 2026", "url": "https://...", "site": "TechReview", "icon": "https://..."}
        ],
        "citationList": [
          {"index": 1, "title": "CRM Comparison 2026", "url": "https://...", "site": "TechReview", "icon": "https://..."}
        ],
        "reasoningProcess": { "summary": "", "content": "" },
        "recommendedQuestions": ["What is the pricing for Salesforce?"],
        "mediaContent": [],
        "pageScreenshot": "https://..."
      }
    ]
  }
}

Result Fields

answerContentFull AI response (Markdown format)
referenceListAll reference sources found
citationListSources actually cited in the answer
reasoningProcessThinking process (reasoning mode only)
recommendedQuestionsAI-suggested follow-up questions
mediaContentImages and media content
pageScreenshotScreenshot URL (if screenshot enabled)
GET

/v1/regions

Public

Get available region codes for geo-targeted queries. No authentication required.

curl https://api.geotoolhub.com/v1/regions

# Response:
{
  "regions": [
    {"province": "北京市", "regionCode": ["110000"]},
    {"province": "上海市", "regionCode": ["310000"]},
    {"province": "广东省", "regionCode": ["440000"]}
  ]
}

Pass regionCode in the submit request to simulate queries from a specific Chinese province.

Supported Platforms

deepseekDeepSeekLeading reasoning model with deep thinking
doubaoDoubaoByteDance AI assistant
qianwenTongyi QianwenAlibaba's AI platform
yuanbaoYuanbaoTencent AI + WeChat ecosystem
kimiKimiUltra-long context processing
baiduaiBaidu AI+AI-enhanced search by Baidu
quarkQuarkBuilt-in AI for search and learning
weibo_zhisouWeibo ZhisouReal-time social AI search

Error Codes

400Missing required parameters or task not ready
403Invalid API key or unauthorized
404Task not found
502Upstream API error
504Request timeout

Rate Limits

Rate limits depend on your subscription plan. Tasks typically complete in 2-3 minutes. Results are cached for identical queries within 24 hours.