Exports through the API¶
This page is for whoever takes an export with their own program or from the command line: asking for one, waiting until it is ready, downloading its parts and resuming a broken download. What an export is and what it holds is in Exports. How to make a request to OS (address, sign-in, pages, errors) is in The access API.
Asking for an export of your organisation¶
curl -s -X POST "$OS/api/v1/organisations/$ORG/exports" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{}'
{"id": "xpt_...", "scope": "organisation", "membership_id": null, "include_core": false,
"status": "queued", "size_bytes": null, "sha256": null, "counts": {}, "withheld": {},
"core": null, "downloads": 0, "created_at": "2026-10-17T09:14:03Z", "completed_at": null,
"expires_at": null, "allowed_actions": ["see", "use", "write"], "...": "..."}
- Name
"membership_id": "mem_..."for an export of one member. "include_core": trueasks for the AI features' part as well; only Artific may, so for anyone else OS answers403.
| Answer | Meaning |
|---|---|
202 |
Asked for, or the same one still running; Location points at it. |
404 |
You may not see exports here, or the member is not of this organisation. |
409 |
The organisation is being set up or deleted. |
429 |
Five exports were asked for in the last day. |
Waiting until it is ready¶
curl -s "$OS/api/v1/organisations/$ORG/exports/$EXPORT" -H "Authorization: Bearer $TOKEN"
Ask again every minute or so until status is ready. The requester also gets a notification. A
failed export says why in error, such as too_large (ask Artific) or requester_lost_access;
ask for a new one. GET .../exports lists the organisation's exports, newest first.
Downloading a part¶
curl -s -o export-os.zip "$OS/api/v1/organisations/$ORG/exports/$EXPORT/parts/os" \
-H "Authorization: Bearer $TOKEN" -D headers.txt
- The parts are
osand, when it was asked for,core. Digest: sha-256=<hex>is the SHA-256 of the whole part: compare it with your file's.- You need
useonexport; without it OS answers403.
| Answer | Meaning |
|---|---|
200 |
The whole part. |
206 |
The part from the byte you named. |
409 |
Not ready yet, or expired. |
416 |
The byte you named is past the end; Content-Range gives the length. |
Resuming a broken download¶
size=$(wc -c < export-os.zip)
curl -s "$OS/api/v1/organisations/$ORG/exports/$EXPORT/parts/os" \
-H "Authorization: Bearer $TOKEN" -H "Range: bytes=$size-" >> export-os.zip
A download can last up to six hours, and stops when a minute passes without a byte. Resume it as often as you need until the export expires.
Your own export¶
curl -s -X POST "$OS/api/v1/me/exports" -H "Authorization: Bearer $TOKEN"
curl -s "$OS/api/v1/me/exports/$EXPORT" -H "Authorization: Bearer $TOKEN"
{"id": "pxp_...", "status": "ready", "size_bytes": 18230, "sha256": "...",
"parts": [{"organisation_id": "org_...", "include_core": true, "ready": true}],
"expires_at": "2026-10-20T09:21:40Z", "...": "..."}
| Part | Download |
|---|---|
| your account | GET /api/v1/me/exports/$EXPORT/parts/account |
| OS's records of you in one organisation | GET /api/v1/me/exports/$EXPORT/parts/os/$ORG |
| your work in the AI features there | GET /api/v1/me/exports/$EXPORT/parts/core/$ORG, where include_core is true |
While you are being erased OS answers 409, and you ask for no new export.