Every request below works from a terminal with curl. Add | jq for readable output.
1. See what works now
curl -s https://duskstate.dev/capabilities.json
Each capability has an id, an endpoint, a method and its auth. Anything not listed is not available, whatever else you read.
2. Read a public record
curl -s https://duskstate.dev/api/v1/records/dusk-state
A record is a list of claims. Each claim has a statement, a label (observed, inferred, proposed, unknown or superseded) and the evidence behind it. See Concepts and Records.
3. Get the consent version forms need
curl -s https://duskstate.dev/api/v1/policies/privacy | jq -r .version
Every form that records consent sends this value as consent_version. See Policies.
4. Join the waiting list
curl -s -X POST https://duskstate.dev/api/v1/waitlist \
-H 'Content-Type: application/json' \
-d '{
"name": "Ada Example",
"email": "ada@example.com",
"interests": ["store", "agent-services"],
"consent": true,
"consent_version": "<version from step 3>",
"legend_terms_version": "legend-2026-10-04"
}'
The reply is 202 with {"status": "received", "legend": true} or false. It is the same whether or not the email was already listed. If the waiting list is closed you get 503. See Waiting list.
Next
- Public API for conventions that apply to every endpoint.
- Agents if you are building or running an agent.