List exports
curl --request GET \
--url https://api.get-exo.com/v1/exports \
--header 'X-Exo-API-Key: <api-key>'import requests
url = "https://api.get-exo.com/v1/exports"
headers = {"X-Exo-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Exo-API-Key': '<api-key>'}};
fetch('https://api.get-exo.com/v1/exports', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"createdAt": "2023-11-07T05:31:56Z",
"format": "<string>",
"id": "<string>",
"scope": "<string>",
"status": "<string>",
"bytes": 123,
"completedAt": "2023-11-07T05:31:56Z",
"counts": {
"chunks": 123,
"edges": 123,
"identitySignals": 123,
"nodes": 123
},
"downloadUrl": "<string>",
"error": "<string>"
}
],
"hasMore": false,
"nextCursor": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}Account and platform
List exports
List the caller’s visible exports, newest first, keyset-paginated.
GET
/
v1
/
exports
List exports
curl --request GET \
--url https://api.get-exo.com/v1/exports \
--header 'X-Exo-API-Key: <api-key>'import requests
url = "https://api.get-exo.com/v1/exports"
headers = {"X-Exo-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Exo-API-Key': '<api-key>'}};
fetch('https://api.get-exo.com/v1/exports', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"createdAt": "2023-11-07T05:31:56Z",
"format": "<string>",
"id": "<string>",
"scope": "<string>",
"status": "<string>",
"bytes": 123,
"completedAt": "2023-11-07T05:31:56Z",
"counts": {
"chunks": 123,
"edges": 123,
"identitySignals": 123,
"nodes": 123
},
"downloadUrl": "<string>",
"error": "<string>"
}
],
"hasMore": false,
"nextCursor": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}{
"code": "<string>",
"detail": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"documentationUrl": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>",
"pointer": "<string>"
}
],
"requestId": "",
"suggestedAction": "<string>"
}Per-user/subject scoped, identical to
Every error is an RFC 9457
GET /v1/jobs: a non-admin key sees
only its own exports plus those of subjects provisioned in its org; an admin
key sees the whole organization. Page with nextCursor until hasMore
is false; no totals are returned (cursor pagination).
Authorization
This route requires theread scope.
A missing or invalid credential returns 401 authentication_error. A valid credential without the scope returns 403 permission_denied, and the problem body names the exact scope required.
Headers
These are request conventions the contract does not declare as parameters, so they do not appear in the schema tables below.| Header | Applies | What it does |
|---|---|---|
X-Exo-API-Key | Required | Your Exo API key, exo_<env>_<token>. Authorization: Bearer exo_... is accepted as an alternate. |
X-Exo-Subject | Not applicable | This route is not subject-scoped. |
Idempotency-Key | Not applicable | The replay engine covers POST requests only. |
X-Request-Id | Response | Returned on every response, including 204s. Quote it in a support request. |
Success responses
| Status | Meaning |
|---|---|
200 | Successful Response |
Errors
| Status | Code | When |
|---|---|---|
400 | invalid_request | Malformed request, for example an invalid cursor. |
401 | authentication_error | Missing or invalid credentials. |
403 | permission_denied | Missing scope, or an unprovisioned subject selector. |
404 | not_found | The resource does not exist, or is not visible to this caller. |
409 | conflict | A conflict with the current state of the resource. |
422 | validation_error | The request was understood but failed field validation. |
429 | rate_limit_exceeded | Rate limit exceeded. Retry after the Retry-After interval. |
503 | service_degraded | A dependency is temporarily unavailable. Safe to retry. |
application/problem+json body carrying a stable code, a requestId, and a suggestedAction where Exo has one. See Errors.Authorizations
ApiKeyHeaderBearerAuth
An Exo API key (exo_...) sent as the X-Exo-API-Key header.
Query Parameters
Opaque cursor from a previous nextCursor.
Page size, coerced into [1, 100] (default 25).
⌘I