Andromededocumentation

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>/download

The 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.

RouteWhat it returns
GET /my/orgsThe organisations this key can act in.
GET /my/orgs/{org}/ordersYour 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}/downloadThe whole delivery, as a .tar.gz.
GET /my/orgs/{org}/orders/{order}/tasks/{task}/downloadOne task on its own.
GET /my/orgs/{org}/orders/{order}/environments/{environment}/downloadOne 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.