跳到正文

开发者 / 接入文档 · 文档版本 1.2.0

接入文档

开放接口与智能体工具共用一把密钥、一套能力和同样的规则。以下内容读自线上文档,随版本更新。

还没有密钥?测试密钥不计费;填完申请,1 个工作日内联系你。申请测试密钥

概览

一把密钥能用两种方式接:自己的系统调 HTTP 开放接口,或者让 AI 助手通过 MCP 直接调工具。返回的都是脱敏的公开卡,联系方式要对方同意后才交换。

项值
接口地址https://geekwork.cc/api/open/v1
MCP 地址https://geekwork.cc/api/open/v1/mcp
鉴权请求头 Authorization: Bearer <你的密钥>
密钥测试密钥 gk_test_ 开头、正式密钥 gk_live_ 开头
格式请求与返回都是 JSON,UTF-8;每个返回带 request_id

快速开始

四步,十分钟以内能跑通第一次调用。

  1. 拿测试密钥

    机构填一张申请(单位、联系人、要接的能力、用途),1 个工作日内联系你,审核通过后发测试密钥;个人开发者登录并实名后,在「设置 · 开放能力」里自助生成,当场可用。

    申请测试密钥
    终端
    export GEEKHUB_KEY="gk_test_..."   # 把密钥放环境变量,不要写进代码
  2. 配置客户端

    用 AI 助手的,把 MCP 地址填进客户端;只用 HTTP 的跳过这一步。

    客户端配置
    claude mcp add --transport http geekhub https://geekwork.cc/api/open/v1/mcp --header "Authorization: Bearer <你的密钥>"
  3. 第一次调用

    用一句话找机会。测试密钥回的是 30 张测试卡里对得上的几张,结构和正式环境一样。

    请求
    curl -X POST 'https://geekwork.cc/api/open/v1/match' \  -H 'Authorization: Bearer $GEEKHUB_KEY' \  -H 'Content-Type: application/json' \  -d '{"need":"想找苏州的视觉质检场景","limit":10}'
    返回(测试密钥)
    {  "matches": [    {      "type": "tech_scene",      "board_label": "商业机会",      "card_code": "ctestcardaab",      "title": "示例:工厂视觉质检试点场景",      "city": "苏州",      "verified": true,      "reason": "这是沙箱示例卡,不对应真实内容",      "connect_url": "https://geekwork.cc/c/sandbox-1",      "amount_text": "50–200 万",      "deadline": "2026-12-20",      "cover_url": "https://geekwork.cc/api/v1/scene/sample_neutral-2.webp"    }  ]}
  4. 换正式密钥

    测试跑通后开通正式环境:平台审核 → 合同与报价单 → 对公转账 → 到账开通,发正式密钥(gk_live_ 开头)。把环境变量换掉即可,地址和代码都不用改。正式环境每天有免费检索,对接成功才计费。

测试与正式

测试密钥和正式密钥调的是同一个地址、同一套字段,区别只在数据和计费。

  • 测试密钥(gk_test_):只回测试卡,标题以「示例:」开头;不计费、不写库、不占免费检索次数。
  • 正式密钥(gk_live_):回真实公开卡;每天有免费检索次数,对接成功才计费。

限流与额度

超了会回 429,返回里带 retry_at(最早可以重试的时间)。

项值
正式密钥每分钟30 次
每天合计5000 次
测试密钥每分钟60 次
被降速后每分钟5 次
每天代提需求20 条

POST /match

用一句话说明你要找什么,返回最多 10 张候选卡;每张卡的 reason 是一句理由(对得上哪几项由规则判定,带 reason_ai: true 的由 AI 写成句子),connect_url 是网页链接(URL Link,不提供小程序码)。

请求

请求
curl -X POST 'https://geekwork.cc/api/open/v1/match' \  -H 'Authorization: Bearer $GEEKHUB_KEY' \  -H 'Content-Type: application/json' \  -d '{"need":"想找苏州的视觉质检场景","limit":10}'
返回(测试密钥)
{  "matches": [    {      "type": "tech_scene",      "board_label": "商业机会",      "card_code": "ctestcardaab",      "title": "示例:工厂视觉质检试点场景",      "city": "苏州",      "verified": true,      "reason": "这是沙箱示例卡,不对应真实内容",      "connect_url": "https://geekwork.cc/c/sandbox-1",      "amount_text": "50–200 万",      "deadline": "2026-12-20",      "cover_url": "https://geekwork.cc/api/v1/scene/sample_neutral-2.webp"    }  ]}

常见错误

出错时返回 4xx / 5xx 状态码,返回内容里写着错误码、原因说明,以及哪几项缺了或填错了。

错误码什么时候怎么处理
validation_failedneed(要找什么)少于 2 字或多于 500 字改到 2–500 字
validation_failedneed 和 structured(筛选条件)都没给至少给一项:一句话需求,或城市、行业等条件
validation_failedstructured.boards(板块)写了可选值以外的板块改成参数表里列出的板块
validation_failedlimit(条数)小于 1 或不是整数改成 1 到 10 之间的整数;超过 10 不报错,按 10 条返回
quota_exhausted今天的免费检索用完了把返回里的恢复时间(retry_at)告诉用户,到点再查;不要反复重试
rate_limited一分钟内调得太多等到 retry_at 之后再调

POST /demands

提交一条需求,审核通过后进入对应板块;每个合作方每天最多 20 条(可被调低),所属组织需已有负责人账号。

请求

请求
curl -X POST 'https://geekwork.cc/api/open/v1/demands' \  -H 'Authorization: Bearer $GEEKHUB_KEY' \  -H 'Content-Type: application/json' \  -d '{"title":"采购一批视觉质检相机","detail":"产线检测用,需要 20 台工业相机,希望本月内有供应商联系我们。","kind":"purchase","region":"苏州","idempotency_key":"demo-0001"}'
返回(测试密钥)
{  "request_id": "req_sandbox_0001",  "demand_id": "dmd_test_0a1b2c3d4e",  "status": "sandbox",  "created": true}

常见错误

出错时返回 4xx / 5xx 状态码,返回内容里写着错误码、原因说明,以及哪几项缺了或填错了。

错误码什么时候怎么处理
scope_denied用的是个人密钥告诉用户:代提需求要机构密钥
validation_failed没带 user_confirmed(用户已确认)先把标题、说明、类型念给用户,用户说确认后带 user_confirmed: true 再调
validation_failedtitle(标题)少于 4 字或多于 40 字按用户原意改写到 4–40 字,再念给用户确认
validation_faileddetail(说明)少于 10 字或多于 120 字补上数量、时间等要点,或删到 120 字以内
validation_failedkind(类型)不是 purchase(采购)、pilot(试点)、channel(渠道)之一按用户的意思选一个
needs_owner机构还没有负责人账号请机构先在工作台补一位负责人,再提交
content_rejected内容没通过安全检查,比如写了电话、微信按返回的 category 改写,去掉联系方式后再提交
quota_exhausted今天的需求条数用完了(每个合作方每天 20 条)明天再提

GET /connections/:code

查一次对接的当前状态。开了「找人找资源」或「代提需求」任一项都能调。

请求

请求
curl -X GET 'https://geekwork.cc/api/open/v1/connections/c_sandbox_0001' \  -H 'Authorization: Bearer $GEEKHUB_KEY'
返回(测试密钥)
{  "request_id": "req_sandbox_0002",  "connection_id": "c_sandbox_0001",  "status": "initiated",  "created_at": "2026-10-25T09:30:00.000Z",  "decided_at": null,  "achieved_at": null,  "billing": {    "state": "frozen"  }}

常见错误

出错时返回 4xx / 5xx 状态码,返回内容里写着错误码、原因说明,以及哪几项缺了或填错了。

错误码什么时候怎么处理
not_found对接编号写错了,或不是这把密钥发起的核对编号;只能查自己发起的对接

POST /supply

新增一条供给。

常见错误

出错时返回 4xx / 5xx 状态码,返回内容里写着错误码、原因说明,以及哪几项缺了或填错了。

错误码什么时候怎么处理
validation_failedexternal_id(你们的编号)为空、超过 80 位,或有字母数字和 _ . : - 以外的字符改成你们系统里的编号,只用这些字符
validation_failedboard(板块)写了不接收外部供给的板块只能是商业机会、技术成果、政策、融资对接(tech_scene / tech_result / policy / capital)
validation_failedfields(板块字段)少了必填项按返回里的 missing 补上;商业机会要 title、summary、city、coopModes、budgetBand
validation_failedfields 里的取值不在发布表单的选项里按返回里的 invalid 改成可选值
content_rejected字段里写了手机号、邮箱、微信号或 QQ 号删掉联系方式;对接由平台托管

PUT /supply/:external_id

按你自己的编号更新一条供给。

常见错误

出错时返回 4xx / 5xx 状态码,返回内容里写着错误码、原因说明,以及哪几项缺了或填错了。

错误码什么时候怎么处理
not_found这个编号没新增过先用 POST /supply 新增
validation_failed路径里的编号和请求体里的 external_id 不一样两处写同一个编号

DELETE /supply/:external_id

按你自己的编号下架一条供给。

常见错误

出错时返回 4xx / 5xx 状态码,返回内容里写着错误码、原因说明,以及哪几项缺了或填错了。

错误码什么时候怎么处理
not_found这个编号没新增过,或已经下架核对编号

POST /mcp

智能体工具入口(MCP,Streamable HTTP 无状态,JSON-RPC 2.0,一次一条消息):先 initialize,再 tools/list 看你这把密钥能用的工具;共 7 个:find_people_resources(找机会和资源)、get_card(看卡片详情)、match_policies(查政策)、today_updates(今日更新)、find_incubators(找孵化器)、submit_demand(代提需求)、get_connection_status(查对接状态)。find_people_resources、match_policies、find_incubators 各计入一次免费检索;submit_demand 必须带 user_confirmed:true,个人密钥不能用。测试密钥的回包见文档「沙箱」一节。

常见错误

出错时返回 4xx / 5xx 状态码,返回内容里写着错误码、原因说明,以及哪几项缺了或填错了。

这个接口没有专门要说明的错误,通用错误见「错误」一节。

GET /cards/:code

看卡片详情(与智能体工具 get_card 同一处理器):code 是候选卡的 card_code;在孵项目、找合伙人只回板块、阶段档、标签和链接。不占免费检索。

常见错误

出错时返回 4xx / 5xx 状态码,返回内容里写着错误码、原因说明,以及哪几项缺了或填错了。

错误码什么时候怎么处理
not_found卡片编号对不上,或者这张卡已经下架换个说法重新找

GET /today

今日更新(与 today_updates 同一处理器):查询参数 board、limit;各板块今日与本周新增数按访客口径分档。不占免费检索。

常见错误

出错时返回 4xx / 5xx 状态码,返回内容里写着错误码、原因说明,以及哪几项缺了或填错了。

错误码什么时候怎么处理
validation_failedboard(板块)不在可选值里不传 board,看全部
validation_failedlimit(条数)不在 1–10改成 1 到 10

GET /incubators

找孵化器(与 find_incubators 同一处理器):查询参数 city、industry、limit;回公开站点与入孵入口,不出负责人和联系人。占 1 次免费检索。

常见错误

出错时返回 4xx / 5xx 状态码,返回内容里写着错误码、原因说明,以及哪几项缺了或填错了。

错误码什么时候怎么处理
validation_failedlimit(条数)不在 1–10改成 1 到 10
quota_exhausted今天的免费检索用完了把返回里的恢复时间(retry_at)告诉用户,到点再查;不要反复重试

MCP 总览

智能体工具走 MCP。七个工具和开放接口共用同一套处理器,返回同一套字段。

七个工具

参数说明
find_people_resources找机会和资源
get_card看卡片详情
match_policies查政策
today_updates今日更新
find_incubators找孵化器
submit_demand代提需求
get_connection_status查对接状态

接入方要守的规则

  • 任何返回都不带联系方式;用户想联系时,把对接页链接交给用户本人点开确认。
  • 在孵项目、找合伙人只给脱敏标签和阶段档。
  • reason_ai 为 true 的理由由 AI 写成,展示给最终用户时要标出(AI)。
  • 卡片来源只写「发布方自填」或「平台整理」。

错误分三层

层什么时候怎么返回
HTTP密钥不对或作废、平台或智能体入口未开放、每分钟超限开放接口错误体(401 / 503 / 429,带 request_id;429 带 retry_at)
JSON-RPC批量消息、方法不存在、工具名不存在、版本头无法识别error.code 用标准段(-32600 / -32601 / -32602)
工具缺参数、取值不对、找不到、免费次数用完、个人密钥调代提需求、用户未确认result.isError: true,content 里是中文说明,structuredContent.error 带 code、fields、retry_at;HTTP 200

find_people_resources

找机会和资源

用一句话或一段项目介绍,在平台公开卡里挑候选(客户、试点、技术成果、服务商、投资方、孵化器、在孵项目、合伙人;政策用 match_policies),每张带推荐理由和对接页链接。占 1 次免费检索。

只读占 1 次免费检索个人密钥可用

参数

参数类型说明
need必填string要找什么,10 到 500 字;可以直接贴项目介绍
boardsarray只在这些板块里找:tech_scene 商业机会、tech_result 技术成果、marketing 企业服务、capital 融资对接、accelerator 孵化器、incubate 在孵项目、partner 找合伙人。用户没点名板块就不要填,不要替他加。
可选值:tech_scenetech_resultmarketingcapitalacceleratorincubatepartner
citystring城市,写中文名即可,比如「苏州」。用户没说就不要填,不要替他加
industrystring行业或方向,比如「人工智能」。用户没说就不要填,不要替他加
stagestring阶段,比如「天使轮」「已有收入」。用户没说就不要填,不要替他加
limitinteger返回几张,1 到 10,默认 5

常见错误

出错时接口照样返回成功状态,具体原因写在返回内容的 error 里:错误码、哪几项填错了、多久后能重试。

错误码什么时候怎么处理
validation_failedneed(要找什么)少于 10 字请用户多说一句要找什么,再调
validation_failedboards(板块)写了可选值以外的板块改成参数表里列出的板块,或者不传
validation_failedlimit(条数)小于 1 或不是整数改成 1 到 10 之间的整数;超过 10 不报错,按 10 条返回
quota_exhausted今天的免费检索用完了把返回里的恢复时间(retry_at)告诉用户,到点再查;不要反复重试
rate_limited一分钟内调得太多等到 retry_at 之后再调

get_card

看卡片详情

用户追问某一张卡时调:传 card_code,回这张卡的公开字段与重新签发的对接页链接(7 天有效)。在孵项目、找合伙人只回板块、阶段档、标签和链接。不占免费检索。

只读不占免费次数个人密钥可用

参数

参数类型说明
card_code必填string卡片编号,来自 find_people_resources 或 today_updates 的结果

常见错误

出错时接口照样返回成功状态,具体原因写在返回内容的 error 里:错误码、哪几项填错了、多久后能重试。

错误码什么时候怎么处理
not_found卡片编号对不上,或者这张卡已经下架告诉用户这张卡不在了,换个说法重新找
validation_failedcard_code(卡片编号)格式不对,应是 c 开头的 12 位字母用上一次结果里的 card_code 原样传

match_policies

查政策

按地区、行业、阶段配已公开的政策,回前 5 条与自测链接;三项都对不上时回只差一项的。占 1 次免费检索。

只读占 1 次免费检索个人密钥可用

参数

参数类型说明
region必填string城市或省份中文名(如「苏州」「江苏」),6 位行政区划码,或「全国」
industry必填string行业或方向,不超过 20 字
stage必填stringidea 想法期、registered 已注册、revenue 有收入、scale 规模化
可选值:idearegisteredrevenuescale
sizestring选填,规模;目前不参与匹配

常见错误

出错时接口照样返回成功状态,具体原因写在返回内容的 error 里:错误码、哪几项填错了、多久后能重试。

错误码什么时候怎么处理
validation_failedregion(地区)或 industry(行业)没填先问用户公司在哪、做什么,再调
validation_failedstage(阶段)不是 idea、registered、revenue、scale 之一先问用户公司走到哪一步:想法、已注册、有收入、成规模
quota_exhausted今天的免费检索用完了把返回里的恢复时间(retry_at)告诉用户,到点再查;不要反复重试

today_updates

今日更新

今天有什么新机会、新政策:各板块今日和本周新增数(访客口径分档)与最新几条。不占免费检索。

只读不占免费次数个人密钥可用

参数

参数类型说明
boardstring只看一个板块:policy 政策、tech_scene 商业机会、tech_result 技术成果、accelerator 孵化器、marketing 企业服务、capital 融资对接
可选值:policytech_scenetech_resultacceleratormarketingcapital
limitinteger最多几条,1 到 10,默认 8

常见错误

出错时接口照样返回成功状态,具体原因写在返回内容的 error 里:错误码、哪几项填错了、多久后能重试。

错误码什么时候怎么处理
validation_failedboard(板块)不在可选值里不传 board,看全部板块

find_incubators

找孵化器

按城市、方向找孵化器:回公开站点和入孵入口,有当期批次时带批次名与截止日。不出负责人和联系人。占 1 次免费检索。

只读占 1 次免费检索个人密钥可用

参数

参数类型说明
citystring城市中文名
industrystring方向,比如「硬件」「生物医药」
limitinteger最多几家,1 到 10,默认 5

常见错误

出错时接口照样返回成功状态,具体原因写在返回内容的 error 里:错误码、哪几项填错了、多久后能重试。

错误码什么时候怎么处理
validation_failedcity(城市)或 industry(方向)超过 40 字只写城市名、方向名,比如「上海」「区块链」
validation_failedlimit(条数)小于 1 或不是整数改成 1 到 10 之间的整数;超过 10 不报错,按 10 条返回
quota_exhausted今天的免费检索用完了把返回里的恢复时间(retry_at)告诉用户,到点再查;不要反复重试

submit_demand

代提需求

代用户提交一条需求(进审核队列,不会立刻发布)。必须先把内容念给用户确认,确认后才带 user_confirmed: true 调;缺项或取值不对时会说明要改哪个字段。需要机构密钥。

会写入(进审核队列)不占免费次数需要机构密钥

参数

参数类型说明
title必填string需求标题,4 到 40 字
detail必填string需求说明,10 到 120 字,不要写联系方式
kind必填stringpurchase 采购、pilot 试点、channel 渠道
可选值:purchasepilotchannel
regionstring选填,不超过 40 字
budget_bandstring选填,不超过 40 字
periodstring选填,不超过 40 字
target_tenantinteger选填,指定孵化器编号
idempotency_keystring选填,重试时带同一个值不会重复提交
user_confirmed必填boolean用户已确认提交内容时才填 true

常见错误

出错时接口照样返回成功状态,具体原因写在返回内容的 error 里:错误码、哪几项填错了、多久后能重试。

错误码什么时候怎么处理
scope_denied用的是个人密钥告诉用户:代提需求要机构密钥
validation_failed没带 user_confirmed(用户已确认)先把标题、说明、类型念给用户,用户说确认后带 user_confirmed: true 再调
validation_failedtitle(标题)少于 4 字或多于 40 字按用户原意改写到 4–40 字,再念给用户确认
validation_faileddetail(说明)少于 10 字或多于 120 字补上数量、时间等要点,或删到 120 字以内
validation_failedkind(类型)不是 purchase(采购)、pilot(试点)、channel(渠道)之一按用户的意思选一个
needs_owner机构还没有负责人账号请机构先在工作台补一位负责人,再提交
content_rejected内容没通过安全检查,比如写了电话、微信按返回的 category 改写,去掉联系方式后再提交
quota_exhausted今天的需求条数用完了(每个合作方每天 20 条)明天再提

get_connection_status

查对接状态

查一次对接的当前状态(只能查你这把密钥发起的)。不占免费检索。

只读不占免费次数个人密钥可用

参数

参数类型说明
connection_id必填string对接编号

常见错误

出错时接口照样返回成功状态,具体原因写在返回内容的 error 里:错误码、哪几项填错了、多久后能重试。

错误码什么时候怎么处理
not_found对接编号写错了核对编号,用发起对接时返回的那个
not_found这条对接不是这把密钥发起的只能查自己发起的对接

Skill 接入包

Skill 包告诉 AI 什么时候该用这些工具、怎么把候选讲给用户、哪些话不能说,包里还带接口描述和工具对照表。

下载 Skill 接入包

各客户端的界面文字以当前版本为准;支持 OpenAPI 的平台可导入接口描述。

回调与事件

在工作台填一个回调地址、勾上要订阅的事件,发生变化时平台会 POST 一条消息给你。消息里只有编号、状态和时间,不带联系方式和对方的原话。

  • 没收到 2xx 会自动重试:间隔 0、1、5、15、30、60、180、360 分钟,共 8 次。
  • 30 天内的事件可以在工作台重放。
  • 同一事件可能送达不止一次,用事件编号去重。

合作方可订阅

需求审核有结果demand.reviewed你代用户提交的需求审核完(通过或没通过)

能拿来做什么:在你的系统里更新这条需求的状态,通知提需求的用户

字段

字段含义
demand_id需求编号(提交需求时返回的那个)
status变化后的状态
category没通过时的原因类别
reviewed_at审核时间
对方回复了connection.replied你发起的对接,对方第一次在会话里回消息(一次对接只发一次,不带回复原文)

能拿来做什么:提醒用户去看回复;对方还没同意时不算对接成功,不计费

字段

字段含义
connection_id对接编号
demand_id需求编号(提交需求时返回的那个)
status变化后的状态
replied_at回复时间
对方同意对接connection.agreed对方点了同意,双方可以交换联系方式

能拿来做什么:通知用户可以开始沟通;对接成功才计费,从这一步起算

字段

字段含义
connection_id对接编号
demand_id需求编号(提交需求时返回的那个)
status变化后的状态
agreed_at同意时间
对接结束connection.closed对方婉拒、超时没回或你这边撤回

能拿来做什么:把这条对接标为结束;这次对接冻结的对接次数退回你的对接包(免费检索次数与对接无关,不受影响)

字段

字段含义
connection_id对接编号
demand_id需求编号(提交需求时返回的那个)
status变化后的状态
closed_at结束时间
对接达成合作connection.achieved双方确认达成合作

能拿来做什么:记一笔成交,用于对账

字段

字段含义
connection_id对接编号
demand_id需求编号(提交需求时返回的那个)
status变化后的状态
achieved_at达成时间
供给审核有结果supply.reviewed你接入的供给审核完(上架或没通过)

能拿来做什么:同步上架状态;没通过时按原因改了再提交

字段

字段含义
supply_id供给编号(就是你的 external_id)
board板块
status变化后的状态
reviewed_at审核时间
对接阶段变了connection.stage_changed对接从一个阶段进到下一个阶段

能拿来做什么:在你的看板里移动这条对接

字段

字段含义
connection_id对接编号
demand_id需求编号(提交需求时返回的那个)
stage变化后的阶段
changed_at变化时间

孵化器可订阅

入孵申请状态变了application.status_changed有人申请入孵、补材料、通过、婉拒或撤回

能拿来做什么:在自己的台账里同步申请进度,提醒负责人处理

字段

字段含义
application_id入孵申请编号
status变化后的状态
changed_at变化时间
在孵企业商业化进展换了阶段commercial.stage_changed在孵企业把一条商业化进展推进到新阶段(只发给企业共享了商业化进展的孵化器;不带对方名称和金额)。stage 的值:lead 线索、connected 已对接、poc 方案或 PoC、piloting 试点中、signed 已签约、expanding 复购或扩展

能拿来做什么:在自己的台账里更新这条进展的阶段,跟进卡住的企业

字段

字段含义
opportunity_id商业机会编号
stage变化后的阶段
changed_at变化时间
场地预约booking.*场地或设备的预约有变化

能拿来做什么:同步到自己的排期表,提醒管理员确认或释放场地

包含这些事件

事件什么时候status 的值
booking.created建单(占位)held
booking.confirmed确认confirmed
booking.rejected驳回rejected
booking.cancelled取消cancelled
booking.completed用完completed
booking.expired占位超时过期expired

字段

字段含义
booking_id预约编号
resource_id场地或设备编号
status变化后的状态
starts_at预约开始时间
ends_at预约结束时间
changed_at变化时间
资源申请resource_request.*在孵企业提交的资源申请有变化

能拿来做什么:安排对接人、按排期跟进交付

包含这些事件

事件什么时候status 的值
resource_request.created提交pending
resource_request.scheduled排期scheduled
resource_request.delivered交付delivered
resource_request.declined婉拒declined
resource_request.cancelled取消cancelled

字段

字段含义
request_id资源申请编号
resource_id场地或设备编号
status变化后的状态
changed_at变化时间
服务券核销voucher.*服务券核销有变化

能拿来做什么:对账、结算给服务商

包含这些事件

事件什么时候status 的值
voucher.created发起核销pending
voucher.confirmed确认confirmed
voucher.settled结算settled

字段

字段含义
voucher_id服务券核销编号
status变化后的状态
changed_at变化时间
活动报名event_signup.*活动报名有变化

能拿来做什么:更新报名名单、发入场提醒

包含这些事件

事件什么时候status 的值
event_signup.created报名(名额满时进候补)signed 或 waitlist
event_signup.cancelled取消报名cancelled
event_signup.promoted候补转正signed

字段

字段含义
event_id活动编号
signup_id报名编号
status变化后的状态
changed_at变化时间

回调长什么样

请求体是 JSON;请求头带事件编号、事件名和签名。签名 = 用你的签名密钥对「时间戳.原始正文」做 HMAC-SHA256;换密钥后 24 小时内新旧两个签名都会带上,对得上任意一个就行。

回调请求
POST <your-callback-url>Content-Type: application/json; charset=utf-8User-Agent: GeekHub-Webhooks/1X-Geekhub-Event-Id: <event-id>X-Geekhub-Event-Type: booking.confirmedX-Geekhub-Signature: t=<unix-seconds>,v1=<signature>

对接状态

对接从发起到结束会经过这些状态;回调与查询接口里的 status 就是这里的值。

状态含义
initiated已发出,等对方回应;占用 1 次对接次数(冻结)
agreed对方同意对接;扣减 1 次对接次数
declined对方婉拒;冻结的次数退回
expired超过对方回应时限没有处理,含对方注销;冻结的次数退回
withdrawn发起人撤回;同意之前撤回的次数退回,同意之后撤回不退
achieved双方在平台确认达成合作
unbilled发起时对接次数余额为 0,没有占用也不计费

错误

出了错先看错误码:大多数是参数没填对或者调得太快,按「怎么处理」改了再调就行。

错误码状态码含义
invalid_key401密钥不存在或格式不对
key_revoked401密钥已停用
not_active403合作方还没开通正式环境
partner_paused403合作方被暂停
scope_denied403这把密钥没有该能力的范围
validation_failed400请求内容不合要求
content_rejected422内容没通过安全检查
needs_owner422你们的组织还没有负责人账号,提交的需求没有地方归属,请先联系我们补上
rate_limited429请求太快,请按 retry_at 重试
quota_exhausted429今日免费检索或今日需求条数已用完,按 retry_at 次日再试
no_balance402对接次数余额不足
not_found404没有这个对象
not_open501这个接口即将开放,现在还不能调用(文档「即将开放」一节列着)
platform_paused503开放接口临时维护中
internal500服务端出错,请带上 request_id 联系我们
给开发者看的返回格式

错误体固定有 code、message、request_id;按情况多出下面这些字段:

字段含义
retry_at限流或额度用完时,最早可以重试的时间
missing没有填的必填字段(或这把密钥缺少的能力范围)
invalid填了但取值不对的字段,message 里写明可选值
category内容没通过安全检查时的类别
错误返回(HTTP 400)
{  "code": "validation_failed",  "message": "need: 2-500",  "request_id": "req_01M68K2Q4S6U8W0Y2A4C6E8G0J",  "missing": [    "need"  ]}