Base URL
https://api.rafflesia.aiThe published surface
The REST surface is deliberately small and grows one route at a time. A route is public only when it is declared in the API’s public-route manifest; everything else the engine serves is internal and is not part of this reference, the SDKs, or the generated CLI. Today that surface is homology search. The endpoint pages in this section are the complete published API — if a capability is documented in a guide but has no endpoint page here, it is not yet exposed as a public route.The
rafflesia CLI covers a much wider set of primitives than the published
REST surface. Those commands are the supported way to reach them; the REST
contract is what carries a stability promise.Authentication
Send an API key as a bearer token. Create keys in the dashboard.Shape of a request
Most primitives arePOST with a JSON body, including read-only ones. That is
deliberate: the inputs are structured (multiple identifiers, budgets, release
pins, source declarations), and a canonical JSON body is what makes
provenance.input_hash reproducible.
Response headers
Idempotency
EveryPOST accepts an Idempotency-Key. Retrying with the same key returns the
original result instead of creating a second job or object — which matters
because a timeout tells you nothing about whether the work happened.
Errors
Failures use the envelope withok: false and a typed error whose code is
stable. The categories and their HTTP statuses are in Errors.
Error bodies for transport-level problems follow
application/problem+json; primitive-level failures come back in the standard
envelope.
Pagination
List endpoints return an opaquenext_cursor. Pass it back as cursor to
continue. Do not construct or parse cursors — they encode server-side position
and are not stable input.
Durable jobs
Long operations — structure prediction, background searches, exports — are submitted as jobs. The submit call returns a job id; poll the job endpoint until it reaches a terminal state, then read the content-addressed objects it produced.Rate limits
Rate-limited requests return429 with type: rate_limit_error. Back off and
retry; the same request will succeed later.