API.PUBLIC.13
K.PUBLIC.API / D.LAYOUT.CONTROL
AENET Public API
The read-only Public API v1: open reads, optional anonymous keys, signed responses, the endpoint registry and the error catalog.
New API key issuance paused — New API keys are temporarily unavailable while we prepare the service. Public reads do not require a key. Existing keys remain subject to their expiry, quotas and revocation; response signing is unchanged. Reopening requires an approved release.
D01REQUEST
D02KEY OPTIONAL
D03ROUTE
D04SNAPSHOT
D05ENVELOPE
D06CACHE
D07SIGNED
D08EVIDENCE
S1
Get started
Four calls cover the whole lifecycle. Reads need no key; a key adds a revocable quota.
- 01
Call without a key
Every GET endpoint marked Open answers anonymously with the JSON envelope.
curl "$ORIGIN/api/v1/status" - 02
New API key issuance paused
New API keys are temporarily unavailable while we prepare the service. Public reads do not require a key. Existing keys remain subject to their expiry, quotas and revocation; response signing is unchanged. Reopening requires an approved release.
curl -H "Authorization: Bearer $AENET_KEY" "$ORIGIN/api/v1/status" - 03
Verify the signature
Every JSON response is Ed25519-signed. Pin the key id from an independent channel.
node scripts/api-verify-response.js \ "$ORIGIN/api/v1/status" --kid <pinned key id> - 04
Revoke when done
Revocation is immediate and permanent; there is no account to recover it from.
curl -X DELETE \ -H "Authorization: Bearer $AENET_KEY" \ "$ORIGIN/api/v1/keys/self"
S1 / KEY
New API key issuance paused
New API keys are temporarily unavailable while we prepare the service. Public reads do not require a key. Existing keys remain subject to their expiry, quotas and revocation; response signing is unchanged. Reopening requires an approved release.
New API keys are temporarily unavailable while we prepare the service. Public reads do not require a key. Existing keys remain subject to their expiry, quotas and revocation; response signing is unchanged. Reopening requires an approved release.
1–40 characters: letters, digits, space . _ - only. Never an email or a name.
Save this key now. It is shown only once and cannot be recovered. If you lose it, request a new one.
Your API keySend it in a header only: Authorization: Bearer <key>. Never put it in a URL.
Service and versions
Discovery, status, time, release version and changelog.
API.PUBLIC.14
API.PUBLIC.22
API.PUBLIC.21
API.PUBLIC.01
API.PUBLIC.02
API.PUBLIC.15
API.PUBLIC.16
API.PUBLIC.17
/api/v1/versions/{snapshotId}
Schema: aenet.public.version-snapshot.v1
active
beta · 0.4.0
OPEN JSON ↗
Keys and trust
Issue, inspect and revoke an anonymous read-only key; fetch the signing public key.
API.PUBLIC.23
/api/v1/keys
Schema: aenet.public.api.key.v1
preview
beta · 0.6.0
Issue an API key
INVALID_JSONINVALID_INPUTPAYLOAD_TOO_LARGEUNSUPPORTED_MEDIA_TYPETURNSTILE_FAILEDRATE_LIMITEDKEYS_UNAVAILABLE
API.PUBLIC.25
/api/v1/keys/self
Schema: aenet.public.api.key-revoked.v1
active
beta · 0.6.0
Revoke the calling key
KEY_REQUIREDKEY_INVALIDKEY_EXPIREDKEY_RATE_LIMITEDKEYS_UNAVAILABLE
API.PUBLIC.24
/api/v1/keys/self
Schema: aenet.public.api.key-self.v1
active
beta · 0.6.0
Inspect the calling key
KEY_REQUIREDKEY_INVALIDKEY_EXPIREDKEY_RATE_LIMITEDKEYS_UNAVAILABLE
API.PUBLIC.26
Architecture and roadmap
Sanitized architecture, development queue and roadmap snapshots.
API.PUBLIC.03
API.PUBLIC.04
API.PUBLIC.05
Wallet snapshots
Read-only public wallet-system evidence and snapshot mirrors.
API.PUBLIC.12
API.PUBLIC.08
API.PUBLIC.09
/api/v1/wallet/architecture
Schema: aenet.public.wallet.architecture.v1
active
stable · v1
OPEN JSON ↗
API.PUBLIC.18
API.PUBLIC.20
API.PUBLIC.11
API.PUBLIC.19
API.PUBLIC.10
Early access
The waitlist status and the one public write path.
API.PUBLIC.06
API.PUBLIC.07
/api/v1/early-access/register
Schema: aenet.public.early-access.registration.v1
active
beta · v1
OPEN FLOW ↗
Early access waitlist registration (D1 only)
INVALID_JSONINVALID_INPUTINVALID_EMAILFORBIDDEN_FIELDINVALID_LOCALEINVALID_INTERESTSCONSENT_REQUIREDINVALID_USE_CASEINVALID_SESSION_IDTURNSTILE_REQUIREDTURNSTILE_FAILEDREQUEST_REJECTEDPAYLOAD_TOO_LARGEUNSUPPORTED_MEDIA_TYPERATE_LIMITEDREGISTRATION_UNAVAILABLEDUPLICATE
S3
Error catalog
Every error returns the same envelope with a stable code. Retry only where marked.
| HTTP | Code | Retry | Meaning |
|---|---|---|---|
200 | DUPLICATE | no | This email is already on the early-access list. Returned with HTTP 200 and the error envelope so the list is never revealed by status code. |
400 | CONSENT_REQUIRED | no | Consent is required. |
400 | FORBIDDEN_FIELD | no | The request carries a field that is never accepted. |
400 | INVALID_EMAIL | no | A valid email address is required. |
400 | INVALID_INPUT | no | The request body is not an acceptable object (unknown field, wrong shape). |
400 | INVALID_INTERESTS | no | Interests must be a short array of known interest areas. |
400 | INVALID_JSON | no | Request body must be valid JSON. |
400 | INVALID_LOCALE | no | Unsupported locale. |
400 | INVALID_SESSION_ID | no | Session id is not acceptable. |
400 | INVALID_USE_CASE | no | Use case must be text within the length limit. |
400 | TURNSTILE_REQUIRED | no | A Turnstile token is required. |
401 | KEY_EXPIRED | no | The API key has expired. Issue a new one. |
401 | KEY_INVALID | no | The API key is not valid. |
401 | KEY_REQUIRED | no | This endpoint needs an API key (Authorization: Bearer aek_…). |
403 | PREVIEW_NOT_ENABLED | no | The preview namespace is not enabled. |
403 | REQUEST_REJECTED | no | We could not accept this request. The rule that matched is never revealed. |
403 | TURNSTILE_FAILED | no | Verification failed. |
404 | NOT_FOUND | no | Public API route not found. |
404 | VERSION_NOT_FOUND | no | Version snapshot not found. |
405 | METHOD_NOT_ALLOWED | no | The method is not allowed for this route; the Allow header lists the valid methods. |
413 | PAYLOAD_TOO_LARGE | no | Request body too large. |
415 | UNSUPPORTED_MEDIA_TYPE | no | Content-Type must be application/json. |
429 | KEY_RATE_LIMITED | yes | This API key exceeded its request quota. |
429 | RATE_LIMITED | yes | Too many requests. Please try again later. |
503 | KEYS_UNAVAILABLE | yes | API key issuance or verification is temporarily unavailable. |
503 | REGISTRATION_UNAVAILABLE | yes | Registration is temporarily unavailable. |
503 | SIGNING_UNAVAILABLE | yes | Response signing is not configured. |
503 | SNAPSHOT_UNAVAILABLE | yes | Snapshot is temporarily unavailable. |