Skip to content

05 Reference

Export API

Pull your Dimensions out of Dimension Labs into your own systems, by integration and date range.

The Export API returns the enrichments (your Dimensions) for one or more integrations over a date range, as a zip file with the enrichments by day. Use it to load your Dimensions into a warehouse, a BI tool or your own application.

Base URL: https://api.dimensionlabs.io

Export API keys are in the Settings menu of the app. This is a different key from a source’s tracker key (the one in DL_API_KEY on the universal API page). The examples read it from DL_EXPORT_KEY.

Every request sends the key in the Authorization header. A key that isn’t valid for the integrations you ask for returns 403.

You also need the integration ID of each source you want to export. If you can’t find it, email [email protected] with the source’s name.

GET https://api.dimensionlabs.io/export?startDate=2026-09-01&endDate=2026-10-01&botIds=12345&promptNames=support_ticket_info
Authorization: <your Export API key>

Fetches the enrichments for the listed integrations between the two dates. promptNames is an optional filter: with it, only those prompts’ Dimensions come back.

ParameterInRequiredDescription
AuthorizationheaderYesYour Export API key, from Settings
startDatequeryYesStart of the range, inclusive. YYYY-MM-DD or Unix milliseconds.
endDatequeryYesEnd of the range, exclusive. YYYY-MM-DD or Unix milliseconds.
botIdsqueryYesComma-separated integration IDs, for example 12345,12346
promptNamesqueryNoComma-separated prompt names, to export only those prompts

Because endDate is exclusive, startDate=2026-09-01&endDate=2026-10-01 covers all of September.

Terminal window
curl -H "Authorization: $DL_EXPORT_KEY" \
"https://api.dimensionlabs.io/export?startDate=2026-09-01&endDate=2026-10-01&botIds=12345"
StatusBodyMeaning
200{ "zipFile": "..." }The export: a zip of the enrichments, by day. zipFile is always present.
403{ "message": "..." }Forbidden: the key isn’t valid for one of the integrations. message says what went wrong.
// export.mjs. Node 18 or later. DL_EXPORT_KEY is your Export API key; DL_INTEGRATION_ID is the source's integration ID.
import { writeFile } from 'node:fs/promises';
export async function exportDimensions({ startDate, endDate, integrationIds = process.env.DL_INTEGRATION_ID }) {
const params = new URLSearchParams({ startDate, endDate, botIds: integrationIds });
const res = await fetch(`https://api.dimensionlabs.io/export?${params}`, { headers: { Authorization: process.env.DL_EXPORT_KEY } });
if (!res.ok) throw new Error(`Export returned ${res.status}: ${await res.text()}`);
const { zipFile } = await res.json();
// zipFile is either a download link or the zip itself as base64 text; this handles both.
const zip = /^https?:\/\//.test(zipFile)
? Buffer.from(await (await fetch(zipFile)).arrayBuffer())
: Buffer.from(zipFile, 'base64');
const path = `dimensions-${startDate}-to-${endDate}.zip`;
await writeFile(path, zip);
return path;
}

Unzip it (unzip dimensions-2026-09-01-to-2026-10-01.zip -d dimensions/) and you have the enrichments, one set per day. Open one day’s file before you build a table on it, and match your table’s columns to what you find. The warehouse guides load these files into Snowflake, BigQuery, Databricks and Redshift.

GET https://api.dimensionlabs.io/index
Authorization: <your Export API key>

The entry point of the Export API. It lists the endpoints the API supports.

StatusBodyMeaning
200{ "_links": ... }Links to the other endpoints this API supports
403{ "message": "..." }Forbidden. message says what went wrong.
  • Dates are partitioned by US Pacific day. When you export on a schedule, overlap each export with the last one by a day, so nothing falls between them. For a weekly export every Monday, ask for the last 8 days: startDate the Sunday before last, endDate today.
  • Overlapping exports return the same rows again. Load each day into your table by replacing that day’s rows rather than appending, or remove the repeats after loading.
  • A long-running conversation can appear as more than one row, one per time segment. See Sessions and conversations.
  • Dimensions exist only for conversations that have been enriched. History sent to /trackhistorical or uploaded as a file needs a backfill before it shows up in an export.
  • To export one prompt’s output, pass its name in promptNames, for example support_ticket_info. The Prompts tab lists every prompt. See Custom Dimensions.
  • The Export API returns Dimensions. To keep your raw conversations, keep them in your own systems: they are already there, in the source you sent them from.

Rate limits are not published. Run exports one at a time, and retry a 429 or 5xx with a growing pause.

Last reviewed on 2026-10-14.