Skip to main content

Export API - 2.0

Team Enterpret avatar
Written by Team Enterpret
Updated this week

This Help Center article explains how to export bulk data from your Enterpret Knowledge Graph using the Knowledge Graph Export API (also referred to as the “Bulk Export API”).

These APIs are intended for customers who want to:

  • Build a data warehouse / lake sync from Enterpret

  • Perform offline analysis or reporting

  • Integrate Enterpret objects into internal tools


How your data is represented in Enterpret

Your domain data in Enterpret is represented as a set of related Knowledge Graph objects. These objects come together to build the Knowledge Graph for your Enterpret instance.

The Knowledge Graph is extensible: each tenant can have additional tenant-specific objects, fields, and relationships. However, the objects below are commonly present as part of core Enterpret functionality.

Core objects (commonly available)

Note: the Knowledge Graph is extensible, so object IDs can vary by tenant and configuration. Always use the “List exportable objects” endpoint to confirm the exact objectID values available in your workspace.

Feedback record

  • Feedback Record: Contains feedback records for your tenant (for example: reviews, support tickets, survey responses, call transcripts).

    • Export object ID: feedback_record

Taxonomy (product taxonomy)

Taxonomy is represented using a set of objects that describe both:

  • The nodes in the taxonomy (each level’s metadata), and

  • The hierarchy paths that connect nodes across levels

Common taxonomy objects:

  • product_taxonomy_hierarchy: A list of taxonomy “paths”. Each row represents a single path made of 5 levels, containing the IDs of:

    • l1, l2, l3, theme, subtheme

  • product_taxonomy_l1: Details for an L1 ID

  • product_taxonomy_l2: Details for an L2 ID

  • product_taxonomy_l3: Details for an L3 ID

  • theme: Details for a Theme ID

  • subtheme: Details for a Subtheme ID

Feedback summaries

  • Feedback Summary: A feedback record can have one or more summaries.

    • Example: For audio feedback, each chapter/segment may have its own summary for a sub-part of the record.

    • Summaries are captured in the feedback_summary object.

    • Export object ID: feedback_summary

Predictions (taxonomy assignments)

  • Predictions: A feedback record can have more than one taxonomy path predicted on it.

    • These predictions are captured in the product_feedback_envelope object, which includes details like the predicted taxonomy path (and associated metadata).

    • Export object ID: product_feedback_envelope


Authentication

All endpoints require Bearer token authentication. Include your API token in the Authorization header:

Authorization: Bearer <your-api-token>

Base URL

https://api.enterpret.com/export

API endpoints

1. List exportable objects

Use this endpoint to discover which Knowledge Graph objects are available to export in your workspace, and what their objectID values are.

Endpoint: POST /external/v2/objects

Request

Request body (optional):

{   "paginationToken": "string (optional)" }

Field

Type

Required

Description

paginationToken

string

No

Token from previous response for pagination

Response

{
"objects": [
{
"id": "string",
"name": "string",
"description": "string"
}
],
"paginationToken": "string (optional)"
}

Field

Type

Description

objects

array

List of Knowledge Graph objects

objects[].id

string

Unique identifier of the object (use this as objectID in the export endpoint)

objects[].name

string

Human-readable name of the object

objects[].description

string

Description of what the object contains

paginationToken

string

Present if there are more objects to list

Example request

curl -X POST "https://api.enterpret.com/export/external/v2/objects" \
-H "Authorization: Bearer <your-api-token>" \
-H "Content-Type: application/json" \
-d '{}'

Example response

{
"objects": [
{
"id": "feedback_record",
"name": "Feedback Record"
},
{
"id": "feedback_summary",
"name": "Feedback Summary"
},
{
"id": "product_feedback_envelope",
"name": "Product Feedback Envelope"
},
{
"id": "product_taxonomy_hierarchy",
"name": "Product Taxonomy Hierarchy"
},
{
"id": "product_taxonomy_l1",
"name": "Product Taxonomy L1"
},
{
"id": "product_taxonomy_l2",
"name": "Product Taxonomy L2"
},
{
"id": "product_taxonomy_l3",
"name": "Product Taxonomy L3"
},
{
"id": "theme",
"name": "Theme"
},
{
"id": "subtheme",
"name": "Subtheme"
}
]
}

2. Export object data (bulk CSV)

Exports bulk data for a specific Knowledge Graph object and time range. The API returns signed URLs to one or more CSV files that contain the exported rows.

Endpoint: POST /external/v2/export

Request

{
"objectID": "string",
"startTime": "string",
"endTime": "string (optional)",
"cursor": "string (optional)"
}

Parameters

Field

Type

Required

Description

objectID

string

Yes

The ID of the Knowledge Graph object to export (discover using POST /external/v2/objects)

startTime

string

Yes

Start of the time range in ISO 8601 format: YYYY-MM-DDTHH:MMZ

endTime

string

No

End of the time range in ISO 8601 format. Defaults to current time if not provided

cursor

string

No

Pagination cursor from a previous response to retrieve the next batch of files

Time format

The startTime and endTime fields must be in ISO 8601 format with UTC timezone:

Format: YYYY-MM-DDTHH:MMZ

Examples:
- "2025-12-12T00:00Z" (December 12, 2025 at midnight UTC)
- "2025-12-31T23:00Z" (December 31, 2025 at 11 PM UTC)

How time windows work (important)

The export time window is based on when the record was created or updated inside Enterpret, not when the record was originally created in your source system.

  • If a record was created in your source system in May 2025, but it was first ingested into Enterpret on Oct 25, it will appear in the export file for Oct 25 (for the corresponding object).

  • If that same record is updated again in Enterpret on Nov 10, it will appear again in the export file for Nov 10 with the updated values.

You can think of export files as deltas (changes within the window), and you should upsert downstream using the object’s primary identifier.

Minimum granularity is currently hourly, and timestamps are rounded to the hour boundary for window boundaries.

Response

{
"files": ["string"],
"cursor": "string (optional)"
}

Field

Type

Description

files

array of strings

Signed URLs to the exported CSV files. URLs are valid for a limited time.

cursor

string

Present if there are more files to retrieve. Pass this in the next request to continue pagination.

Example request

curl -X POST "https://api.enterpret.com/export/external/v2/export" \
-H "Authorization: Bearer <your-api-token>" \
-H "Content-Type: application/json" \
-d '{
"objectID": "feedback_record",
"startTime": "2025-12-12T00:00Z",
"endTime": "2025-12-31T23:00Z"
}'

Example response

{
"files": [
"https://s3.amazonaws.com/enterpret-exports/org-123/feedback/2025-12-12.csv?X-Amz-Signature=...",
"https://s3.amazonaws.com/enterpret-exports/org-123/feedback/2025-12-13.csv?X-Amz-Signature=..."
],
"cursor": "eyJsYXN0S2V5IjoiMjAyNS0xMi0xNCJ9"
}

Pagination (fetch all files)

If the cursor field is present in the response, there are more files to retrieve. Make subsequent requests with the cursor to get all files:

curl -X POST "https://api.enterpret.com/external/v2/export" \
-H "Authorization: Bearer <your-api-token>" \
-H "Content-Type: application/json" \
-d '{
"objectID": "feedback",
"startTime": "2025-12-12T00:00Z",
"endTime": "2025-12-31T23:00Z",
"cursor": "eyJsYXN0S2V5IjoiMjAyNS0xMi0xNCJ9"
}'

CSV file format

Exported CSV files contain attributes of the exported object (columns can vary by object and by tenant configuration). The first row contains column headers.

Example CSV structure for a feedback-like object:

record_id,event_time,channel,message_text,language_code
fbk_001,2025-12-12T10:30:00Z,Support,"Login fails after 2FA setup",en
fbk_002,2025-12-12T11:45:00Z,Reviews,"App crashes when opening settings",en

Error responses

All endpoints return errors in the following format:

{
"error": {
"code": "string",
"message": "string"
}
}

Common error codes

HTTP Status

Code

Description

400

INVALID_REQUEST_ARGUMENT

Invalid or missing required parameters

401

UNAUTHORIZED

Invalid or expired authentication token

403

FORBIDDEN

Token does not have required permissions

404

NOT_FOUND

Requested object not found

429

RATE_LIMITED

Too many requests, please retry later

500

INTERNAL_ERROR

Internal server error


Rate limits

  • Export object data: 10 requests per minute per organization

  • List exportable objects: 60 requests per minute per organization


Best practices

  1. List objects first: Start with POST /external/v2/objects to discover the correct objectIDs for your tenant.

  2. Use pagination: Always check for the cursor field and continue fetching until no cursor is returned.

  3. Download files promptly: Signed URLs have a limited validity period. Download files as soon as you receive the URLs.

  4. Respect rate limits: Implement exponential backoff when receiving 429 errors.

  5. Use appropriate time ranges: For large datasets, export data in smaller time ranges to manage file sizes and speed up downstream ingestion.


Did this answer your question?