API
Read-only · v0

6 endpoints, none of which can change anything.

The scope is deliberately small. An operator wants to know what flies over a coordinate, and that question falls out of machinery that already exists and carries no risk. Posting requirements and submitting listings are a later version, and should be built when someone has asked twice rather than in anticipation of a caller who never arrives.

3 · Public API v03 · BPI — our own draft
Authentication

An API key, not a session. Send it as Authorization: Bearer <key>. Keys are issued per organisation and revoked one at a time. Only the hash is stored, for the same reason sign-in tokens are hashed: a leaked table must not be a set of live credentials.

Calls are metered per key, with an hourly limit that defaults to 1,000. Exceeding it returns 429 with a retry-after header, so an integration that runs away is visible before it is expensive.

Base: https://api.beamdesk.space/api/public

GET /v1/coverageread-only
What flies over a coordinate

The reason this API exists. The same computation the marketplace runs for a landowner, addressed by coordinate instead of by drawn boundary — beam time, contact windows and the sky over that exact point.

Parameterslat, lon — decimal degrees
Returnspoint · fleet · sky · provenance

Every response carries the sweep it came from, when that sweep was generated, the method and the beam mask. Two answers computed under different fleet epochs were never comparable, and without the provenance block a caller would have no way to know.

GET /v1/standardsread-only
The standards registry, as data

The same objects the console cites and the public standards page renders. Each entry carries a depth: computed here, emitted, named but not executed, or written by us.

Returnscount · standards[]

Machine readable so a conformance claim can be checked rather than believed. The depth field is the point of the endpoint — it is what separates a standard we implement from one we merely cite.

GET /v1/listingsread-only
Public listings in a bounding box

Enough to know a parcel exists and roughly where it is. Tier, region, verification level and acreage.

Parametersbbox=minLon,minLat,maxLon,maxLat · limit (max 500)
Returnscount · limit · listings[]

Centroids are rounded to two decimals — about a kilometre — and that is deliberate. Exact boundaries are released through an approach. A marketplace that publishes them has given away the thing operators pay it for, and has told the world which paddock to knock on.

GET /v1/bpi/conformanceread-only
Our own conformance declaration

BPI is a draft interoperability interface we wrote, and we are so far its only implementation. This serves the declaration itself, with the status tally recomputed from the document so the summary and the file cannot drift apart.

Returnsclaim · requirements · summary · selfPublished

Seventeen requirements are recorded as not implemented rather than filled with placeholder values — mostly signatures, because there is no organisational signing key. Three more are modelled rather than measured and are marked not-claimed: not offered for reliance.

GET /v1/bpi/capabilityread-only
Receiving-segment capability drafts

One capability document per ground facility in the roster. Append an aperture id for a single facility and its attestation bundle.

Parametersoptional /:apertureId
Returnscapability[] · attestation · authorship

Broker-authored and unsigned. Every response carries an authorship block saying so, plus a correction path — a message about a site is a pre-filled draft on that site’s behalf, never an attestation by its operator.

GET /v1/bpi/opportunitiesread-only
Delivery windows over a point

Passes for a coordinate over a short horizon, expressed as BPI delivery opportunities rather than as raw geometry.

Parameterslat, lon — decimal degrees
Returnsopportunities[] · authorship

Energy per window is nominal and provenance-tagged as estimated. Nothing on orbit beams power to a rectenna yet, so a delivered-energy figure here is a model, and it says which.

When the answer is a refusal

Coverage depends on a registered fleet. If none is installed, that route returns 503 with a reason rather than answering from the mock constellation. An API that silently substitutes invented geometry is worse than one that is briefly unavailable, because the caller cannot tell which one they got.

What the matching engine computes →The standards registry →Radar →