RealHand API 文档
AI 实地核验 API。让 AI Agent 和企业系统调用真人完成地址真实性核验,并获得 GPS、水印照片、审核结论和结构化报告。
1
鉴权说明RealHand 对客户 API 采用 API Key 鉴权。每个 Key 有独立余额和任务记录。
API Key
X-API-Key: rh_xxx
API 调用方
▼
鉴权头
X-API-Key: rh_xxxxxxxxxxxxxxxxxxxx
API Key 由 RealHand 为试点客户开通。请不要把 API Key 放在公开前端页面或公开代码仓库。
2
API 调用方接口路径前缀:
/api/v1 | 鉴权:X-API-Key
POST
/api/v1/task/create
创建任务
▼
请求头
X-API-Key: rh_xxxxxxxxxxxxxxxxxxxx Content-Type: application/json
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | 必填 | 任务内容描述,最多 2000 字 |
| address | string | 必填 | 任务执行地址,最多 300 字 |
| price | number | 必填 | 单价,1-100 的数字(元) |
| task_type | string | 可选 | address_verify / store_verify,默认 address_verify |
| require_photo | int | 可选 | 需要照片数量,1-9 张,地址核验建议 3 张 |
| callback_url | string | 可选 | 任务完成后回调通知地址,仅支持 http/https URL |
| target_lat | number | 可选 | 目标纬度(-90 到 90),需和 target_lng 同时填写 |
| target_lng | number | 可选 | 目标经度(-180 到 180),需和 target_lat 同时填写 |
| deadline_minutes | int | 可选 | 执行时限,10-1440 的整数分钟,默认 240 |
响应示例
{
"code": 200,
"msg": "任务创建成功",
"data": {
"task_id": "a1b2c3d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "assigned",
"price": 10,
"expires_at": "2026-06-25T06:00:00.000Z",
"deadline_minutes": 240
}
}
POST
/api/v1/task/batch-create
批量创建任务
▼
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | 必填 | 统一核验要求,最多 2000 字 |
| addresses | string[] | 必填 | 地址数组,一次最多 50 个,单个地址最多 300 字 |
| price | number | 必填 | 单地址价格,1-100 的数字(元) |
| task_type | string | 可选 | address_verify / store_verify,默认 address_verify |
| require_photo | int | 可选 | 每个地址需要的照片数量,1-9 张 |
| callback_url | string | 可选 | 任务完成后回调通知地址,仅支持 http/https URL |
| deadline_minutes | int | 可选 | 执行时限,10-1440 的整数分钟,默认 240 |
请求示例
{
"task_type": "address_verify",
"content": "请核验该地址是否真实存在,拍摄入口、地址标识和周边环境。",
"addresses": [
"佛山市禅城区祖庙路33号",
"佛山市南海区桂城街道灯湖东路"
],
"require_photo": 3,
"price": 10,
"deadline_minutes": 240
}响应示例
{
"code": 200,
"msg": "批量任务创建成功",
"data": {
"count": 2,
"task_ids": [
"a1b2c3d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"b2c3d4e5-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
],
"total_price": 20,
"deadline_minutes": 240
}
}
GET
/api/v1/task/query
查询任务状态
▼
查询参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| task_id | string | 必填 | 任务ID |
响应示例
{
"code": 200,
"data": {
"task_id": "a1b2c3d4-...",
"status": "completed",
"content": "请到现场核验该地址是否真实存在,拍摄入口和周边环境",
"address": "北京市朝阳区建国路88号",
"report_url": "https://realhand.top/api/v1/task/a1b2c3d4-.../report",
"gps": { "lat": 39.9087, "lng": 116.3975, "accuracy": 10 },
"photos": [
{ "url": "https://realhand.top/uploads/photos/wm_xxx.jpg", "location": { "lat": 39.9087, "lng": 116.3975 } }
],
"text_result": "现场地址存在,入口和周边环境可识别",
"review_status": "approved",
"review_note": "地址真实性核验通过",
"verify_score": 95,
"completed_at": "2026-06-25T02:30:00.000Z"
}
}
任务状态
pending
待接单
assigned
已派单
executing
执行中
completed
已完成
rejected
已驳回
cancelled
已取消
GET
/api/v1/task/:task_id/report
HTML 核验报告
▼
路径参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| task_id | string | 必填 | 任务ID |
使用同一 API Key 访问。报告可用于存档、转发、打印或保存 PDF。
报告包含
核验地址
地址、任务编号、任务状态
交付清单
照片、GPS 记录、人工审核、报告链接
现场证据
照片、水印、上传位置和时间
审核结果
现场结论、审核备注、服务边界
请求示例
GET /api/v1/task/a1b2c3d4-.../report X-API-Key: rh_xxxxxxxxxxxxxxxxxxxx
POST
/api/v1/task/:task_id/cancel
取消任务
▼
路径参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| task_id | string | 必填 | 任务ID |
只能取消 assigned 或 executing 状态的任务,取消后自动退款。
响应示例
{ "code": 200, "msg": "任务已取消,已退款" }
GET
/api/v1/task/list
任务列表
▼
查询参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| status | string | 可选 | 按状态筛选 |
| page | int | 可选 | 页码,默认1 |
| limit | int | 可选 | 每页数量,默认20 |
返回的 total 会按同一 status 条件统计,可用于分页和状态同步。
响应示例
{
"code": 200,
"data": {
"tasks": [
{
"id": "a1b2c3d4-...",
"content": "请到现场核验该地址是否真实存在,拍摄入口和周边环境",
"address": "北京市朝阳区建国路88号",
"status": "completed",
"review_status": "approved",
"review_note": "地址真实性核验通过",
"price": 10,
"verify_score": 95,
"report_url": "https://realhand.top/api/v1/task/a1b2c3d4-.../report",
"created_at": "2026-06-25T01:30:00.000Z",
"completed_at": "2026-06-25T02:30:00.000Z"
}
],
"total": 1
}
}
GET
/api/v1/account/balance
账户余额
▼
响应示例
{
"code": 200,
"data": {
"balance": 95.0,
"total_spent": 5.0,
"total_tasks": 1
}
}
快速接入示例
Python
import requests
API_BASE = "https://realhand.top/api/v1"
API_KEY = "rh_xxxxxxxxxxxxxxxxxxxx"
headers = {
"X-API-Key": API_KEY,
"Content-Type": "application/json"
}
# 创建任务
resp = requests.post(f"{API_BASE}/task/create", headers=headers, json={
"content": "请到现场核验该地址是否真实存在,拍摄入口和周边环境",
"address": "北京市朝阳区建国路88号",
"task_type": "address_verify",
"require_photo": 3,
"price": 10,
"callback_url": "https://your-server.com/callback"
})
task_id = resp.json()["data"]["task_id"]
print(f"任务已创建: {task_id}")
# 查询任务状态
resp = requests.get(f"{API_BASE}/task/query", headers=headers, params={"task_id": task_id})
print(resp.json())
Node.js
const axios = require('axios');
const API_BASE = 'https://realhand.top/api/v1';
const API_KEY = 'rh_xxxxxxxxxxxxxxxxxxxx';
const headers = {
'X-API-Key': API_KEY,
'Content-Type': 'application/json'
};
async function createTask() {
const resp = await axios.post(`${API_BASE}/task/create`, {
content: '请到现场核验该地址是否真实存在,拍摄入口和周边环境',
address: '北京市朝阳区建国路88号',
task_type: 'address_verify',
require_photo: 3,
price: 10,
callback_url: 'https://your-server.com/callback'
}, { headers });
console.log('任务已创建:', resp.data.data.task_id);
return resp.data.data.task_id;
}
createTask();
cURL
curl -X POST https://realhand.top/api/v1/task/create \
-H "X-API-Key: rh_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"content": "请到现场核验该地址是否真实存在,拍摄入口和周边环境",
"address": "北京市朝阳区建国路88号",
"task_type": "address_verify",
"require_photo": 3,
"price": 10,
"callback_url": "https://your-server.com/callback"
}'
3
错误码所有接口返回统一 JSON 格式:{ code, msg, data? }
200
成功
400
参数错误
401
未授权(API Key 无效)
402
余额不足
403
无权限(信用分不足 / 被封禁)
404
资源不存在
409
冲突(手机号已注册 / 有未完成任务)
429
请求过于频繁
500
服务器内部错误
4
回调通知创建任务时提供 callback_url,任务完成或取消后向该地址发送 POST 请求。
POST
任务完成回调
▼
{
"task_id": "a1b2c3d4-...",
"status": "completed",
"verify_score": 95,
"review_status": "pending",
"report_url": "https://realhand.top/api/v1/task/a1b2c3d4-.../report",
"result": {
"text": "门店正常营业,门头照片已拍摄",
"photos": ["https://realhand.top/uploads/photos/wm_xxx.jpg"],
"gps": { "lat": 39.9087, "lng": 116.3975, "accuracy": 10 }
}
}
POST
任务取消回调
▼
{
"task_id": "a1b2c3d4-...",
"status": "cancelled",
"reason": "任务取消,等待重新处理"
}
RealHand API v1.0
如需开通 API Key、充值或试点支持,请联系 RealHand 对接人。
