Export annotation results from datasets and projects.
List Exports
Returns all exports visible to the authenticated user, ordered by most recent first.
Parameters
| Name | Type | Required | Description |
|---|
ordering | string | No | Field to order results by (query parameter) |
cursor | string | No | Cursor for pagination (query parameter) |
limit | integer | No | Number of results per page (query parameter) |
Request
curl "https://server.avala.ai/api/v1/exports/" \
-H "X-Avala-Api-Key: $AVALA_API_KEY"
Response
{
"next": null,
"previous": null,
"results": [
{
"uid": "880b0700-h51e-74g7-d049-779988770000",
"name": "Training Data Export",
"format": "avala-json-external",
"status": "exported",
"total_task_count": 1000,
"exported_task_count": 1000,
"download_url": "https://storage.avala.ai/exports/880b0700.zip",
"datasets": ["550e8400-e29b-41d4-a716-446655440000"],
"slices": [],
"projects": ["770a9600-g40d-63f6-c938-668877660000"],
"organization": null,
"created_at": "2025-01-21T10:00:00Z"
}
]
}
Fields
| Field | Type | Description |
|---|
uid | string (UUID) | Unique identifier for the export |
name | string | Display name of the export |
format | string | Export format used |
status | string | Current export status |
total_task_count | integer | Total number of tasks to export |
exported_task_count | integer | Number of tasks exported so far |
download_url | string | URL to download the export file (available when status is exported) |
datasets | array | Array of dataset UUIDs included in the export |
slices | array | Array of slice UUIDs included in the export |
projects | array | Array of project UUIDs included in the export |
organization | object | Associated organization, if any |
created_at | string (datetime) | ISO 8601 timestamp of when the export was created |
Create Export
Creates a new export job. Exports are processed asynchronously — poll the List Exports endpoint to check status and retrieve the download URL when complete.
Parameters
| Name | Type | Required | Description |
|---|
name | string | Yes | Export name (1-255 characters) |
format | string | Yes | Export format (see Supported Formats below) |
datasets | array | Yes | Array of dataset UUIDs to export |
projects | array | Yes | Array of project UUIDs to export |
slices | array | Yes | Array of slice UUIDs to export |
filter_query_string | string | No | Filter query to narrow exported results |
Request
curl -X POST "https://server.avala.ai/api/v1/exports/" \
-H "X-Avala-Api-Key: $AVALA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My Export",
"format": "avala-json-external",
"datasets": ["550e8400-e29b-41d4-a716-446655440000"],
"projects": [],
"slices": []
}'
Response
{
"uid": "880b0700-h51e-74g7-d049-779988770000",
"name": "My Export",
"format": "avala-json-external",
"status": "requested",
"total_task_count": null,
"exported_task_count": null,
"download_url": null,
"datasets": ["550e8400-e29b-41d4-a716-446655440000"],
"slices": [],
"projects": [],
"organization": null,
"created_at": "2025-01-21T10:00:00Z"
}
Fields
| Field | Type | Description |
|---|
uid | string (UUID) | Unique identifier for the created export |
name | string | Export name as provided |
format | string | Export format as provided |
status | string | Initial status, always requested |
total_task_count | integer | null until processing begins |
exported_task_count | integer | null until processing begins |
download_url | string | null until export completes |
datasets | array | Dataset UUIDs included |
slices | array | Slice UUIDs included |
projects | array | Project UUIDs included |
organization | object | Associated organization |
created_at | string (datetime) | ISO 8601 timestamp of creation |
| Format | Description |
|---|
avala-json-external | Avala’s native JSON format with full metadata and annotation details |
YOLO | YOLO format for object detection models |
Avala Grouped JSON Schema
The avala-json-external format exports all annotation data in a single structured JSON file. The top-level structure groups data by datasets, projects, and results.
Top-Level Fields
| Field | Type | Description |
|---|
scheme_version | string | Schema version number (e.g., "1.0") |
export_info | object | Export metadata including name, creation timestamp, and export parameters |
datasets | array | Array of dataset objects with their items |
projects | array | Array of project objects with their configurations and label taxonomies |
results | array | Array of annotation result objects containing the actual annotations |
Sample Structure
{
"scheme_version": "1.0",
"export_info": {
"name": "Training Data Export",
"created_at": "2025-01-21T10:00:00Z",
"format": "avala-json-external",
"filter_query_string": null
},
"datasets": [
{
"uid": "550e8400-e29b-41d4-a716-446655440000",
"name": "Highway Scenes",
"items": [
{
"uid": "660f9500-f30c-52e5-b827-557766551111",
"ref_id": "frame_001",
"metadata": { "weather": "clear", "time": "day" }
}
]
}
],
"projects": [
{
"uid": "770a9600-g40d-63f6-c938-668877660000",
"name": "Object Detection",
"labels": [
{ "name": "car", "color": "#FF0000" },
{ "name": "pedestrian", "color": "#00FF00" }
]
}
],
"results": [
{
"uid": "880b0700-h51e-74g7-d049-779988770000",
"dataset_item_uid": "660f9500-f30c-52e5-b827-557766551111",
"project_uid": "770a9600-g40d-63f6-c938-668877660000",
"annotations": [
{
"label": "car",
"type": "bounding_box",
"coordinates": { "x": 100, "y": 200, "width": 150, "height": 80 },
"attributes": { "occluded": false, "truncated": false }
}
]
}
]
}
Export Statuses
| Status | Description |
|---|
requested | Export has been requested and is queued for processing |
exporting | Export is actively being processed |
exported | Export completed successfully and download_url is available |
failed | Export failed during processing |
aborted | Export was aborted before completion |
Polling for Completion
Exports are processed asynchronously. After creating an export, poll the List Exports endpoint to check whether it has completed and retrieve the download URL.
We recommend a polling interval of 5 seconds. The download_url field will be populated once the export status transitions to exported.
import time
import requests
def wait_for_export(export_uid, api_key):
headers = {"X-Avala-Api-Key": api_key}
while True:
response = requests.get(
"https://server.avala.ai/api/v1/exports/",
headers=headers
)
exports = response.json()["results"]
export = next(
(e for e in exports if e["uid"] == export_uid),
None
)
if export and export["status"] == "exported":
return export["download_url"]
elif export and export["status"] == "failed":
raise Exception("Export failed")
time.sleep(5)
Error Responses
Validation Error (400)
{
"name": ["This field is required."],
"format": ["\"invalid\" is not a valid choice."]
}
Returned when the request body is missing required fields or contains invalid values.
Unauthorized (401)
{
"detail": "Invalid API key."
}
Returned when the X-Avala-Api-Key header is missing or contains an invalid key.
Permission Denied (403)
{
"detail": "You do not have permission to perform this action."
}
Returned when the authenticated user does not have access to the requested resources.
Not Found (404)
{
"detail": "Not found."
}
Returned when a referenced dataset, project, or slice UUID does not exist.