Skip to content
Pre-Launch · Filing seed · Series A — Q4 2026

API reference · REST + gRPC

Two surfaces. One protocol. Full schemas below.

Wavestar exposes a REST surface at api.wavestar.space and a gRPC surface at grpc.wavestar.space:443. Both surfaces carry the same protocol. REST is preferred for tooling and read paths; gRPC is mandatory for settlement-path integrations.
REST base
api.wavestar.space
gRPC base
grpc.wavestar.space:443
Auth · REST sandbox
Bearer token
Auth · gRPC prod
mTLS + Bearer

Registry · did:orbit

Resolve and mint did:orbit identifiers

The registry is the shared identity spine. Every asset in orbit, every ground station, every operator has a did:orbit identifier.
GET /v1/did/resolve/{did}
Resolve a did:orbit

Returns the DID Document. Safe, idempotent, cacheable.

POST /v1/did/mint
Mint a new did:orbit

Creates a new entry in the registry. Requires operator-scoped authentication.

GET /v1/registry/proof/{entry}
Inclusion proof for a registry entry

Returns the Merkle inclusion proof for a specific entry against the current log head.

GET /v1/registry/head
Current log head

Returns the signed tree head with size, root hash, and timestamp.

GET /v1/registry/consistency
Consistency proof between two heads

Prove that a newer tree head is an extension of an older tree head.

Attest · quorum signatures

Submit facts and verify quorum signatures

POST /v1/attest/sign
Submit an observer partial signature

Observer endpoint — posts a partial BLS signature on a fact into the aggregation queue.

GET /v1/attest/fact/{id}
Retrieve a signed fact

Returns the fact payload, aggregated BLS signature, and list of contributing observer DIDs.

POST /v1/attest/verify
Verify a quorum signature

Verifies an aggregated BLS signature against a fact payload and observer set. Stateless.

GET /v1/attest/observers
Active observer roster

Returns the current set of observers, their public keys, and their rotation schedule.

ORCH · clearing engine

Submit orders and read the book

GET /v1/orch/book/{instrument}
Order book snapshot

Current resting orders for an instrument. Read-only; suitable for market-data consumers.

POST /v1/orch/submit
Submit an order

Submits a new order to the clearing engine. Requires clearing-member authentication in production.

POST /v1/orch/cancel
Cancel an order

Cancels a resting order by client order ID or system order ID.

GET /v1/orch/position/{member}
Member position snapshot

Net position, unrealised P&L, and posted margin for a clearing member.

GET /v1/orch/settlement/{id}
Settlement record

Returns the settled record, state machine history, and linked attestations.

GET /v1/orch/risk/{member}
Member risk view

IM requirement, VM owed, default-fund contribution, and stress-test utilisation.

Terminal · read-path

Aggregated dashboards and reports

GET /v1/terminal/summary/{member}
Member daily summary

Aggregate daily view across all instruments — positions, margin, P&L, attestation counts.

GET /v1/terminal/trades/{member}
Trade history

Paginated trade history with filtering by instrument, side, and window.

GET /v1/terminal/report/{period}
Periodic regulatory report

Pre-generated report for the period (daily, weekly, quarterly). Signed by Wavestar.

Market · discovery

Hosted-payload capacity and listings

GET /v1/market/listings
Browse hosted-payload listings

Filter by orbit regime, power envelope, availability window, and host-bus class.

GET /v1/market/listing/{id}
Single listing detail

Full listing including SLA, host-bus reputation, attached specifications, and message thread.

POST /v1/market/enquire
Send a structured enquiry

Opens a thread with the listing host. Wavestar routes messages and holds them for audit.

POST /v1/market/list
Create a listing

Hosts only. Creates a new hosted-payload listing with required fields validated against the canonical schema.

Response format

What every response looks like

Every response carries a protocol-version header, a request ID for correlation, and the current anchor height for any record returned. Any deprecated field surfaces in a Deprecation response header with a sunset date.

http
HTTP/1.1 200 OK
Content-Type: application/json
X-Wavestar-Protocol-Version: 0.4
X-Wavestar-Request-Id: 6f1b4f72-c17e-4a19-9d0f-6e6a14d8c8f1
X-Wavestar-Anchor-Height: 2038471
Deprecation: none

{
  "did": "did:orbit:sat:planet:norad-47428",
  "controller": "did:orbit:org:planet",
  "verificationMethod": [
    {
      "id": "did:orbit:sat:planet:norad-47428#bls-2026",
      "type": "Bls12381G2Key2020",
      "publicKeyMultibase": "zUC7K...",
      "purpose": ["attestation"]
    }
  ]
}

Errors

Error model

  • 01

    Structured error codes

    Every 4xx and 5xx response includes a structured error object with code, message, correlation_id, and (where relevant) the specific field that failed validation.
  • 02

    Stable across versions

    Error codes are part of the public API contract. New codes may be added; existing codes never change meaning within a major version.
  • 03

    Retry semantics in the response

    Retriable errors set the Retry-After header. Non-retriable errors explicitly indicate terminal status. SDKs honour this header automatically.
  • 04

    Correlation ID in every log line

    The request ID in the response header is attached to every Wavestar-side log line. Include it in support tickets and we can trace the request end-to-end.

OpenAPI and protobuf

Full schemas live in one place.

The canonical OpenAPI 3.1 document and the protobuf source are published on github.com/wavestar/proto. SDKs regenerate from that source on every release. If a field is not in the schema, it is not in the API.