Skip to content

Data API ​

The Data API is how you get data into axite. You upload objects to a named entry point on a Content Engine; from there the engine's workflow stores, generates, quality-checks and delivers the content.

This is one half of the integration — data in. For content out, see Receiving Webhooks.

Need a custom data source?

Prefer a connector to your PIM, or want axite to pull from your system instead of pushing? We build custom in-integrations with you as part of onboarding — just ask your axite contact.

Entry points ​

You don't upload to a data pool directly. Every upload targets a named entry point — a labelled starting node in your engine's workflow. The entry-point name is the last segment of the upload URL, so you can route different feeds (e.g. products, categories) into different parts of the workflow.

A new entry point becomes available once the workflow is published.

Authentication ​

Requests are authenticated with a bearer token — an API client created in your Content Engine's settings, scoped to that engine. Send it on every request; never embed it in client-side code.

Upload data ​

Upload one or more objects to an entry point with a PUT request:

PUT https://{organization}.api.axite.app/v4/pipelines/{pipeline}/upload/{entryPoint}
  • Send a single JSON object to upload one object.
  • Send a JSON array, JSONL, CSV or XLSX to upload many at once. For tabular formats, each row becomes one object.
  • Set the matching Content-Type for the body you send.
BodyContent-TypeSize limit
Single objectapplication/json150 kB
Array of objectsapplication/json100 MB
JSON Lines — newline-delimited JSON objects, one per lineapplication/jsonl5 GB
CSVtext/csv5 GB
Excelapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet100 MB

TIP

JSONL is the preferred format for large uploads — CSV may be used as an alternative, but does not support nested data structures.
Including a Content-Length header is required.

Request ​

bash
curl --request PUT \
  --url https://yourorg.api.axite.app/v4/pipelines/yourPipeline/upload/yourEntrypoint \
  --header 'Authorization: Bearer $AXITE_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "sku": "SKU-4815",
    "name": "Cordless drill 18V",
    "price": 89.99,
    "brand": "OBI"
  }'

Upload many objects in one request by sending an array:

bash
curl --request PUT \
  --url https://yourorg.api.axite.app/v4/pipelines/yourPipeline/upload/yourEntrypoint \
  --header 'Authorization: Bearer $AXITE_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '[
    { "sku": "SKU-4815", "name": "Cordless drill 18V", "price": 89.99 },
    { "sku": "SKU-2342", "name": "Impact driver",      "price": 64.50 }
  ]'

…or a file (JSONL is preferred for large uploads):

bash
curl --request PUT \
  --url https://yourorg.api.axite.app/v4/pipelines/yourPipeline/upload/yourEntrypoint \
  --header 'Authorization: Bearer $AXITE_API_KEY' \
  --header 'Content-Type: application/jsonl' \
  --data-binary @products.jsonl

The identifier field ​

Each record needs a stable identifier — the field that tells axite which object an upload refers to, so re-uploading updates that object instead of creating a duplicate. Internally this becomes the object's uid.

Talk to us about your identifier

Which field is your identifier — e.g. a product sku or id — and how it maps to the object uid is set up per engine during onboarding. Tell us about your data and we'll configure it with you.

What happens after upload ​

  1. The raw upload is received at the entry point and kept — every upload is kept. See Uploads.
  2. It runs through the engine's workflow from that entry point.
  3. When it reaches a Data Pool node it's stored as objects, keyed by the identifier.
  4. If autogenerate is on, each new or changed object continues through the workflow — generate, quality-check, route — and the finished content is delivered to your webhook.