Standards
Overview
The Chinese national standards catalogue: which GB applies, its status, and whether the text is public. Catalogue only, not the text.
- status
- live
- document id
std_codee.g.GB/T 42729-2023- citation
[GB/T 42729-2023]- updated
- 2026-10
Common calls
Find standards
POST /v1/standards/search {"query": "锂离子电池安全", "filters": {"state": "现行"}}Read one entry
GET /v1/standards/read/GB%2FT%2042729-2023The fine print
- Metadata only: the text itself is on openstd (the `fulltext` flag says whether openstd has it online).
- English titles and tags are generated from the Chinese title alone — not authoritative translations.
- 48,406 are in force and 28,535 withdrawn — filter state=现行 before citing.
- The index holds no full text: level=full is not available yet (the standard text is not in this corpus — see openstd.samr.gov.cn).
Search
POST
/v1/standards/searchHybrid retrieval, one card per hit. 2 credits. Free sample:
锂离子电池 安全.Filter fields
| field | type · ops | meaning |
|---|---|---|
| nature | keyword · eq any强制性 · 推荐性 · 指导性技术文件 | Nature: mandatory / recommended / guiding |
| state | keyword · eq any现行 · 即将实施 · 废止 · 暂不实施 | Status: in force / coming into force / withdrawn / suspended |
| std_prefix | keyword · eq anyGB · GB/T · GB/Z | Code prefix |
| ics | keyword · eq any | ICS top-level class (see facets) |
| is_mandatory | bool · eq | Mandatory |
| issue_year | integer · eq range | Issue year, range |
| act_year | integer · eq range | Effective year, range |
1 more, all usable
| field | type · ops | meaning |
|---|---|---|
| tags | keyword · eq any | Topic tags (model-generated) |
Parameters
| Parameter | Type | Description |
|---|---|---|
| query REQUIRED | string | 1–1000 characters. Or an array of up to 5 (batch; hits become results[]). |
| top_k | integer= 10 | 1–100. |
| fields | brief · head= brief | head costs one more credit and returns the head view per hit. |
| filters | json | Filter DSL object (see Getting started); declared fields are listed above. |
| mode | hybrid · dense · bm25= hybrid | Retrieval mode. Leave it out to use the first. |
| offset | integer= 0 | Pagination. |
Example
{ "domain": "standards", "query": "…", "hits": [ { "id": "GB/T 42729-2023", "score": 0.83, "brief": { … } } ], "total": null, "coverage": …, "warnings": [],
"meta": { "request_id": "req_…", "credits": { "charged": 2, "balance": 1998, "pool": "allowance" }, "latency_ms": 41, "cached": false } } Undeclared filter fields return 400 rather than being ignored silently. Filters combine with AND;
_or / _not are available.Read
GET
/v1/standards/read/{std_code}Three depths.
detail is the default. Free sample: GB/T 42729-2023.Levels
| level | credits | returns |
|---|---|---|
| brief | 1 | Card: the fields needed to triage, same as in search hits |
| detail (default) | 2 | Every structured field (rule-derived plus model-generated; model fields are listed in _enrich.fields) |
| full | 5 | Full text (not available yet: the standard text is not in this corpus — see openstd.samr.gov.cn) |
Parameters
| Parameter | Type | Description |
|---|---|---|
| std_code (path) REQUIRED | string | Document id (std_code). |
| level | brief · detail · full= detail | How deep to read. |
| format | json · md · html= json | Response shape. |
Example
{ "domain": "standards", "id": "GB/T 42729-2023", "level": "detail", "view": "head", "data": { … } | "text": "…", "token_count": 1834, "meta": { … } } The older
GET /v1/standards/doc/{id}?view=… still works.Read many
POST
/v1/standards/readUp to 50 ids, one level. Missing ids come back with
error: "not_found" and are not charged.Parameters
| Parameter | Type | Description |
|---|---|---|
| ids REQUIRED | string[] | Document ids. |
| level | brief · detail · full= detail | Level for every id. |
Example
{ "domain": "standards", "level": "detail", "docs": [ { "id": "…", "data": { … } }, { "id": "…", "error": "not_found" } ], "meta": { … } } Facets
GET
/v1/standards/facets?field={field}Legal values for a filter field, so an agent never guesses; precomputed fields carry counts, declared enums come without. Free, no key.
Parameters
| Parameter | Type | Description |
|---|---|---|
| field REQUIRED | nature · state · std_prefix · ics | Filter field with facets. |
| limit | integer= 50 | Max values. |
Example
{ "domain": "standards", "field": "…", "values": [ { "value": "…", "count": 3120 } ], "meta": { … } } Askregistered key+ /stream
POST
/v1/standards/askAgentic Q&A, with one boundary up front: this domain holds catalogue metadata only, no clause text. It can answer which standards exist, how they are classified, whether they are in force and when they take effect; it cannot answer what a clause says — it will say so and point at openstd. Citations are [standards: ].
effort low / medium / high = 50 / 100 / 200 credits. Append /stream for NDJSON; the first event is always billing. A failure before the first answer_delta is refunded.Parameters
| Parameter | Type | Description |
|---|---|---|
| query REQUIRED | string | 1–2000 characters. Be specific; ask for numbers if you want numbers. |
| effort | low · medium · high= low | Reading rounds, and the price: 50 / 100 / 200 credits. Your plan caps it. |
| verbose | bool= false | Include the tool-call trace (tool_call / tool_result / thinking events when streaming). |
| top_k | integer= 10 | Speculative prefetch size. |
| stream_answer | bool= true | Streaming only: false emits one answer event instead of deltas. |
| max_rounds | integer | 0–8, overrides the effort preset. |
| force_answer_after | number | Seconds; hard cutover into the answer phase. |
| max_answer_tokens | integer= 4096 | Hitting it sets answer_truncated. |
| language | string | Answer language; defaults to the query’s. |
Example
{ "answer": "… [GB/T 42729-2023] …", "sources": [ … ], "stats": { "rounds": 1, "elapsed_s": 6.2, "answer_truncated": false }, "coverage"?: { … }, "meta": { "credits": { "charged": 50, … } } } Citations are real — every id in
answer exists in this domain (format [GB/T 42729-2023]). sources is the retrieval set, not the citation list. answer_truncated means incomplete.