Getting your data
Two ways to take delivery — download it from the user portal, or pull it over the HTTP API with a key — and exactly what a delivery contains.
When an order reaches delivered, the data is yours to take. There are two routes and they hand you the same bytes.
Download it
Open the order in the user portal and download the delivery. You get one archive containing every delivered task, plus the quality contract report — the clauses and their readings, as described in the quality contract.
Deliveries stay downloadable after the order closes. We do not expire them.
Pull it over the API
If you would rather pull the data into your own systems, create an API key with the artifacts:read scope and call the API over HTTP. See API keys for how keys, scopes and budgets work.
There is no Andromede command-line tool to install. The API is plain HTTP, so any client in any language works, and the key travels in a header:
curl -L -o order.tar.gz \
-H "Authorization: Bearer $ANDROMEDE_API_KEY" \
https://<your-api-host>/my/orgs/<org id>/orders/<order id>/downloadThe host is issued with your key. -L matters: the download may redirect to storage, and a client that does not follow redirects will save the redirect instead of your data.
The routes
Everything is scoped to one of your organisations. GET /my/orgs lists the ones your key can see.
| Route | What it returns |
|---|---|
GET /my/orgs | The organisations this key can act in. |
GET /my/orgs/{org}/orders | Your orders, one object each. |
GET /my/orgs/{org}/orders/{order} | One order: its state, price, expected delivery, anything wrong with it, and the quality contract clause by clause. |
GET /my/orgs/{org}/orders/{order}/download | The whole delivery, as a .tar.gz. |
GET /my/orgs/{org}/orders/{order}/tasks/{task}/download | One task on its own. |
GET /my/orgs/{org}/orders/{order}/environments/{environment}/download | One environment on its own. |
A delivery can be large, which is what the last two are for: the index inside the archive names every task, and you can fetch them one at a time instead.
What an order tells you
An order object carries what you ordered, what it cost, where it has got to, and how the contract is holding up — the same fields the user portal shows you, and nothing besides. What you download and what you read here agree with each other.
When a request fails
Every refusal carries the same three fields:
{
"code": "not_found",
"message": "We have no record of that order.",
"correlation_id": "9f2c41ab8e7d3c05"
}A refusal for lack of budget is the one exception: it answers 402 with a body that names the amounts, so an integration can report the shortfall rather than just the refusal. See API keys.
code is stable and safe to branch on. Quote the correlation_id to your Andromede contact and we can find the exact request in our logs. The message stays short on purpose — the detail lives in our logs rather than in a response body that might end up in yours.
One shape is worth knowing: a 404 with this body means the thing you asked for does not exist. A 404 without it means the URL is not a route we serve, which usually means a typo in the path or the wrong host.
Availability. The user portal download is the route we support today. The API is being released alongside the user portal, and the routes above are the shape it is built to. If you need it now, ask — we would rather agree the timing with you than have you build against a promise.