API
esc

Saisissez votre recherche.

Référence API

Exports

Freeze a selection of the catalog into a file: a JSONL manifest of image items, or a ZIP rendered by the same pipeline as the dashboard's export, with your naming template.

L'objet ExportJob

Attributs

  • idstring
    Crockford-base32 ULID (26 chars).
  • formatenum
    • manifest
    • zip
  • statusenum
    • queued
    • processing
    • completed
    • failed
  • urlstring (URL), nullable
    Signed URL to the artifact once completed (the JSONL manifest or the ZIP). Re-signed on every read; do not cache the URL, cache the file. null again once a ZIP is past expires_at.
  • url_expires_attimestamp, nullable
    RFC 3339 / ISO 8601 timestamp.
  • expires_attimestamp, nullable
    When the ZIP itself is deleted: 48 hours after it was produced. From then on the job stays completed and url is null; create a new export to get the files again. null for a manifest, and until a ZIP is completed.
  • total_imagesinteger
    Images in the selection at creation time.
  • errorobject, nullable
    Afficher les attributs enfantsMasquer les attributs enfants
    • codestring
    • messagestring
    • paramstring
  • created_attimestamp
    RFC 3339 / ISO 8601 timestamp.
  • started_attimestamp, nullable
    RFC 3339 / ISO 8601 timestamp.
  • finished_attimestamp, nullable
    RFC 3339 / ISO 8601 timestamp.

L'objet ExportJob

{
  "id": "01HX5K2MZ7A3Q4FBNDC0EVDXEX",
  "format": "manifest",
  "status": "queued",
  "url": "https://example.com/…",
  "url_expires_at": "2026-04-27T14:32:00Z",
  "expires_at": "2026-04-27T14:32:00Z",
  "total_images": 1,
  "error": {
    "code": "product_not_found",
    "message": "Product 01HX...XY1 was not found.",
    "param": "inputs.product_id"
  },
  "created_at": "2026-04-27T14:32:00Z",
  "started_at": "2026-04-27T14:32:00Z",
  "finished_at": "2026-04-27T14:32:00Z"
}

Create an export job

POST/v1/exports

The same items GET /v1/images pages through, as a stable artifact: a JSONL manifest (one image per line, with its product_id, role, signed url and suggested_filename) or a ZIP of the image files rendered by the same export pipeline the dashboard uses, with your organization's naming template and per-workflow formats.

Select up to 500 products with product_ids, or omit it for the whole catalogue visible to the API (same cap). Narrow with role.

  • format: manifest is written immediately: the response is already completed with a signed url.
  • format: zip is rendered asynchronously: poll GET /v1/exports/{id} (it carries Retry-After) or subscribe to export.completed / export.failed.

Image URLs inside a manifest are valid one hour after it was written; the image ids are permanent — re-fetch bytes with GET /v1/images/{id}. A ZIP is deleted 48 hours after it was produced (expires_at on the job); download it within that window, or create a new export. Send Idempotency-Key to make retries return the same job.

Paramètres

  • formatenumoptionnel
    • manifest
    • zip
  • product_idsarray of stringsoptionnel
    Freeze these products. Omit for the whole catalogue visible to the API (at most 500 products per job; page through GET /v1/images for more).
  • rolearray of enumsoptionnel
    Only images of these roles.

Retour

Retourne un objet ExportJob avec le statut 202.

Erreurs
  • 400

    Invalid selection

  • 404

    One or more product_ids not found

  • 500

    Server error

  • 502

    Export pipeline unavailable

POST/v1/exports

curl https://api.veeton.com/v1/exports \
  -H "Authorization: Bearer $VEETON_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "format": "manifest",
  "product_ids": [
    "01HX5K2MZ7A3Q4FBNDC0EVDXY1"
  ],
  "role": [
    "source"
  ]
}'

Réponse · 202

{
  "id": "01HX5K2MZ7A3Q4FBNDC0EVDXEX",
  "format": "manifest",
  "status": "queued",
  "url": "https://example.com/…",
  "url_expires_at": "2026-04-27T14:32:00Z",
  "expires_at": "2026-04-27T14:32:00Z",
  "total_images": 1,
  "error": {
    "code": "product_not_found",
    "message": "Product 01HX...XY1 was not found.",
    "param": "inputs.product_id"
  },
  "created_at": "2026-04-27T14:32:00Z",
  "started_at": "2026-04-27T14:32:00Z",
  "finished_at": "2026-04-27T14:32:00Z"
}

List export jobs

GET/v1/exports

Your export jobs, newest first, with a freshly signed artifact URL on each completed one. Filter by status. To read the catalogue itself, page through GET /v1/images.

Paramètres

  • limitinteger· queryoptionnel

    Par défaut : 25

  • cursorstring· queryoptionnel
  • statusenum· queryoptionnel
    • queued
    • processing
    • completed
    • failed

Retour

Retourne un objet ExportJobList avec le statut 200.

Erreurs
  • 400

    Invalid cursor

  • 500

    Server error

GET/v1/exports

curl https://api.veeton.com/v1/exports \
  -H "Authorization: Bearer $VEETON_KEY"

Réponse · 200

{
  "data": [
    {
      "id": "01HX5K2MZ7A3Q4FBNDC0EVDXEX",
      "format": "manifest",
      "status": "queued",
      "url": "https://example.com/…",
      "url_expires_at": "2026-04-27T14:32:00Z",
      "expires_at": "2026-04-27T14:32:00Z",
      "total_images": 1,
      "error": {
        "code": "product_not_found",
        "message": "Product 01HX...XY1 was not found.",
        "param": "inputs.product_id"
      },
      "created_at": "2026-04-27T14:32:00Z",
      "started_at": "2026-04-27T14:32:00Z",
      "finished_at": "2026-04-27T14:32:00Z"
    }
  ],
  "next_cursor": "eyJpZCI6InByb2RfMDFIWCJ9",
  "has_more": true
}

Retrieve an export job

GET/v1/exports/{export_id}

Status and, once completed, a signed URL to the artifact (valid one hour, re-signed on every read). A ZIP is deleted 48 hours after it was produced: past expires_at the job stays completed with a null url. While queued or processing the response carries Retry-After.

Paramètres

  • export_idstringrequis
    Crockford-base32 ULID (26 chars).

Retour

Retourne un objet ExportJob avec le statut 200.

Erreurs
  • 404

    Not found

GET/v1/exports/{export_id}

curl https://api.veeton.com/v1/exports/01HX5K2MZ7A3Q4FBNDC0EVDXY1 \
  -H "Authorization: Bearer $VEETON_KEY"

Réponse · 200

{
  "id": "01HX5K2MZ7A3Q4FBNDC0EVDXEX",
  "format": "manifest",
  "status": "queued",
  "url": "https://example.com/…",
  "url_expires_at": "2026-04-27T14:32:00Z",
  "expires_at": "2026-04-27T14:32:00Z",
  "total_images": 1,
  "error": {
    "code": "product_not_found",
    "message": "Product 01HX...XY1 was not found.",
    "param": "inputs.product_id"
  },
  "created_at": "2026-04-27T14:32:00Z",
  "started_at": "2026-04-27T14:32:00Z",
  "finished_at": "2026-04-27T14:32:00Z"
}