Hosted API — Getting started¶
TrustTyped offers two ways to run the same extraction engine:
| Hosted API (this section) | Self-hosted engine | |
|---|---|---|
| Base URL | https://api.trusttyped.com |
your own typed-serve deployment |
| Endpoint | POST /v1/extract |
POST /v1/typed |
| Auth | API key (Authorization: Bearer) |
none / your own |
| Try it | console.trusttyped.com | local /ui/ |
This section covers the hosted service. The rest of this site documents the underlying engine (schemas, fields, rules, tool calls), which applies to both.
You can make your first call in under five minutes.
1. Get access¶
TrustTyped is in closed beta. Sign in at platform.trusttyped.com/login — Google sign-in only. If your email is on the beta list you go straight in; otherwise you are added to the waitlist.
2. Create an API key¶
In the platform, open API keys and create a key for a project. Two kinds:
tt_live_…— production traffic.tt_test_…— testing.
The key is shown once. Copy it somewhere safe; only a hash is stored. If it leaks, revoke it in the platform and create a new one — revocation takes effect within about a second. See Authentication.
A key belongs to one project
A key only ever reads and writes its own project. There is no parameter to reach another project, even by mistake.
3. Your first call¶
POST /v1/extract takes a schema (the fields you want) and an input (text,
messages, or an image). It returns typed values with confidence.
curl https://api.trusttyped.com/v1/extract \
-H "Authorization: Bearer tt_live_EXAMPLE0000000000000000000000000000000000" \
-H "Content-Type: application/json" \
-d '{
"schema": {
"merchant": {"type": "string", "instruction": "Store name"},
"total": {"type": "number", "integer": true, "instruction": "Final total"},
"paid": {"type": "bool", "instruction": "Was it paid?"}
},
"input": {
"text": "Sunrise Cafe. Fried Rice 25000, Iced Tea 8000. Total 33000. Paid in cash."
}
}'
A real response (trimmed):
{
"id": "req_01J9Z3K5T7W2Q8M4N6P0R1S2V3",
"object": "extraction",
"model": "typed-small-1",
"schema": {"id": null, "version": null, "hash": "sha256:ed33…"},
"result": {"merchant": "Sunrise Cafe", "total": 33000, "paid": true},
"fields": {
"merchant": {"confidence": 1.0, "needs_review": false},
"total": {"confidence": 1.0, "needs_review": false},
"paid": {"confidence": 0.9998, "needs_review": false}
},
"rejected": null,
"ended": null,
"provenance": {
"engine_version": "0.3.2",
"model_revision": "7479749d…",
"backend": "cpu",
"schema_hash": "sha256:ed33…",
"input_hash": "sha256:d8a5…",
"system_hash": null,
"messages_hash": null
},
"usage": {"input_tokens": 41, "output_tokens": 12, "fields": 3, "images": 0},
"timing": {"queue_ms": 3, "inference_ms": 4120, "total_ms": 4161}
}
The response header X-Request-Id carries the same id, so you can quote it in
a support request. The server also echoes a client-supplied X-Request-Id when
it matches the documented pattern.
The engine is CPU-only today
Responses usually take a few seconds and can take tens of seconds on large schemas. Use a client timeout of at least 120 seconds, and prefer streaming for progress.
4. Next steps¶
- :material-key: Authentication — keys, headers, revocation.
- :material-file-document-outline: Extract — the request and response in full.
- :material-progress-upload: Streaming — show results as they decode.
- :material-refresh: Idempotency — safe retries.
- :material-speedometer: Rate limits — limits and backoff.
- :material-alert-circle-outline: Errors — every code and what to do.
- :material-chart-line: Usage — programmatic usage summaries.