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.
Sign up at api.geotoolhub.com or use RapidAPI. You'll receive an API key starting with sk-
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"}]
}'
{ "choices": [{ "message": { "content": "{\"task_id\":\"a1b2c3d4...\",\"status\":\"pending\"}" } }] }
# 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"
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
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
/v1/chat/completions
OpenAI-CompatibleSubmit a monitoring query using the standard OpenAI chat completion format. Works with any OpenAI-compatible client library.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| model | string | No | Any model name (e.g. "geo-monitor") |
| messages | array | Yes | OpenAI messages format. User message = your query. |
| platforms | PlatformConfig[] | No | Target platforms (default: DeepSeek search) |
| monitorKeywords | string | No | Keywords to track, comma-separated |
| mode | string | No | standard | reasoning | search | reasoning_search |
| screenshot | int | No | 0=none, 1=screenshot, 2=mention |
PlatformConfig
| Field | Type | Required | Description |
|---|---|---|---|
| platform | string | Yes | Platform identifier |
| mode | string | No | standard | reasoning | search | reasoning_search |
| screenshot | int | No | 0, 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
/v1/tasks/{task_id}/status
Poll the status of a monitoring task. Call every 5-10 seconds until status is completed.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| task_id | string | Task ID from submit response |
Status Values
| pending | Task submitted, waiting to start |
| processing | Task is being executed |
| completed | Task finished, results ready |
| failed | Task 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"
}
/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
| answerContent | Full AI response (Markdown format) |
| referenceList | All reference sources found |
| citationList | Sources actually cited in the answer |
| reasoningProcess | Thinking process (reasoning mode only) |
| recommendedQuestions | AI-suggested follow-up questions |
| mediaContent | Images and media content |
| pageScreenshot | Screenshot URL (if screenshot enabled) |
/v1/regions
PublicGet 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
| deepseek | DeepSeek | Leading reasoning model with deep thinking |
| doubao | Doubao | ByteDance AI assistant |
| qianwen | Tongyi Qianwen | Alibaba's AI platform |
| yuanbao | Yuanbao | Tencent AI + WeChat ecosystem |
| kimi | Kimi | Ultra-long context processing |
| baiduai | Baidu AI+ | AI-enhanced search by Baidu |
| quark | Quark | Built-in AI for search and learning |
| weibo_zhisou | Weibo Zhisou | Real-time social AI search |
Error Codes
| 400 | Missing required parameters or task not ready |
| 403 | Invalid API key or unauthorized |
| 404 | Task not found |
| 502 | Upstream API error |
| 504 | Request 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.