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-Type
Single objectapplication/json
Array of objectsapplication/json
JSON Lines — newline-delimited JSON objects, one per lineapplication/jsonl
CSVtext/csv
Excelapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet

Size limits

JSONL is the preferred format for large uploads — a JSONL request can be gigabytes. The other formats (a JSON array, CSV, or XLSX) are capped at 100 MB per request, and a single object (one record) at 100 KB.

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.