Integrate: five things you can just take
All five tools are free and open — embed them anywhere. Verification and issuance always resolve back to JIAOZI servers. Ordered by effort: the first takes 30 seconds.
1. Live badge — 30 seconds
One line of Markdown for your README or site. The image is rendered live by our servers: red-and-white “alive” while valid, amber “suspended” if locked, black “revoked” the moment it's revoked — viewers always see the current truth, never a stale screenshot.
Markdown (swap in your credential ID):
[](https://www.jiaozi.io/certs/JIAOZI-2026-000027)Or HTML:
<a href="https://www.jiaozi.io/certs/JIAOZI-2026-000027">
<img src="https://www.jiaozi.io/api/badge/JIAOZI-2026-000027.svg" alt="JIAOZI JIAOZI-2026-000027" height="28" />
</a>2. Embeddable verifier — 2 minutes
Two lines of code embed a live credential status card into any page: the script finds every data-jiaozi-verify element and renders it. Status is signed live by JIAOZI servers (60-second-TTL signed status credential) — the host page cannot fake it, and revocation shows immediately.
Embed code (swap in your credential ID):
<script src="https://www.jiaozi.io/verify-widget.js" async></script>
<div data-jiaozi-verify="JIAOZI-2026-000027"></div>Want more personality? Add one attribute for the JIAOZI Guardian skin — it scans while verifying, jumps when alive, shakes its head when revoked:
<div data-jiaozi-verify="JIAOZI-2026-000027" data-jiaozi-style="guardian"></div>Or an iframe alternative (if you'd rather not add a script):
<iframe src="https://www.jiaozi.io/embed/JIAOZI-2026-000027"
width="340" height="150" style="border:0" title="JIAOZI verify"></iframe>
<!-- 守门人皮肤 guardian skin: -->
<iframe src="https://www.jiaozi.io/embed/JIAOZI-2026-000027?style=guardian"
width="340" height="480" style="border:0" title="JIAOZI verify"></iframe>Consistency rule: the card's styling, copy and status colors are not customizable — it looks identical on every site, exactly as on our portals. Green=alive / red=revoked means the same everywhere; that is both a brand rule and an anti-spoofing requirement. The only option is the skin (plain card / Guardian).
Universal verification: data-jiaozi-verify also accepts a full did:web. JIAOZI-issued DIDs render the normal status card; any other did:web gets a neutral grey-blue standards-conformance card (DID resolution, document validity, keys present — explicitly not a JIAOZI endorsement). No JIAOZI credential required.
Live demo (both below are the widget itself; the right one wears the Guardian skin):
3. Verify snippet — 5 minutes
Give your site or agent the power to check someone's credential. Both endpoints are public, no key needed: resolve returns the credential record; status returns an Ed25519-signed, 60-second-TTL live status credential (active / suspended / revoked / unknown). For high-value operations, fail closed: no valid credential, no deal.
Command line:
curl "https://www.jiaozi.io/api/resolve?q=JIAOZI-2026-000027"JavaScript (browser or Node):
// 任何网站/后端都能贴:查凭证 + 验活状态(公开端点,无需密钥)
const certId = "JIAOZI-2026-000027";
const status = await fetch("https://www.jiaozi.io/api/status/" + certId).then(r => r.json());
if (status.payload?.status === "active") {
console.log("凭证有效,信任等级:", status.payload.trustLevel);
} else {
// suspended(锁定)/ revoked(吊销)/ unknown(查无此证)→ 按你的风险策略拒绝
console.warn("凭证状态:", status.payload?.status);
}
// 凭证由 Ed25519 签名、60 秒有效期;验签公钥: GET https://www.jiaozi.io/api/status-key4. SDK — half an hour
Wraps resolve / verify / attest into four methods. JavaScript and Python, mapping 1:1 to the API: npm install @jiaozi-protocol/sdk, pip install jiaozi-gdid.
TypeScript / JavaScript:
import { Gdid } from "@jiaozi-protocol/sdk";
const gdid = new Gdid({ coreUrl: "https://www.jiaozi.io", apiKey: process.env.JIAOZI_API_KEY });
await gdid.resolve("JIAOZI-2026-000027"); // 查凭证
await gdid.verify("did:web:..."); // 验真伪
await gdid.attest(summary); // 提交体检摘要发证Python:
from jiaozi_gdid import Gdid
g = Gdid(core_url="https://www.jiaozi.io", api_key="YOUR_KEY")
g.resolve("JIAOZI-2026-000027")
g.verify("did:web:...")
g.attest(summary_dict)5. Validator — your path to a credential
An open-source CLI that examines your agent on your own machine: computes the sha256 code-metric hash, runs checks, and emits a jiaozi.attest.v1 summary. Privacy rule: source code never leaves your machine — only digests and hashes travel. Add --boundary-file to declare a behavior boundary (permissions / objectives / constraints, aligned with China's GB/Z 185.3).
# 1) 安装(本地运行,源码永不上传)
python -m pip install jiaozi-validator
# 2) 生成主人密钥(私钥自持、永不上传;任何装有 Node.js 的机器)
node -e "const c=require('crypto'),f=require('fs');const{publicKey,privateKey}=c.generateKeyPairSync('ed25519');f.writeFileSync('owner.pem',privateKey.export({type:'pkcs8',format:'pem'}),{mode:0o600});const d=publicKey.export({type:'spki',format:'der'});f.writeFileSync('owner.pub','z'+d.subarray(d.length-32).toString('base64url')+'\n');console.log('written: owner.pem (private, keep safe) + owner.pub')"
# 3) 本地体检,先看看摘要长什么样(不提交)
jiaozi-validator --agent-name MyAgent --path ./my-agent --owner-pubkey-file owner.pub --dry-run
# 4) 正式提交发证(需要 X-Jiaozi-Key,试运行期免费申领)
export JIAOZI_API_KEY=your-key
jiaozi-validator --agent-name MyAgent --path ./my-agent --owner-pubkey-file owner.pub \
--boundary-file ./boundary.json \
--api-url https://www.jiaozi.io/api/verifyA successful submission returns your credential ID (JIAOZI-YYYY-NNNNNN) and did:web identity. Resubmitting the same key + same code never double-issues — it idempotently returns the existing credential, so retries are safe.
Which portal do I submit to?
Operators in mainland China submit via jiaozi.tech (Q Jupiter Technology intake, PRC rules); everyone else via jiaozi.io (Singapore intake). Credentials are identical either way — all are issued and stored by the Singapore node. Machine entry: /llms.txt.
