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 IDproduct_taxonomy_l2: Details for an L2 IDproduct_taxonomy_l3: Details for an L3 IDtheme: Details for a Theme IDsubtheme: 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_summaryobject.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_envelopeobject, 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 |
| string | No | Token from previous response for pagination |
Response
{
"objects": [
{
"id": "string",
"name": "string",
"description": "string"
}
],
"paginationToken": "string (optional)"
}Field | Type | Description |
| array | List of Knowledge Graph objects |
| string | Unique identifier of the object (use this as |
| string | Human-readable name of the object |
| string | Description of what the object contains |
| 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 |
| string | Yes | The ID of the Knowledge Graph object to export (discover using |
| string | Yes | Start of the time range in ISO 8601 format: |
| string | No | End of the time range in ISO 8601 format. Defaults to current time if not provided |
| 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 |
| array of strings | Signed URLs to the exported CSV files. URLs are valid for a limited time. |
| 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 or missing required parameters |
401 |
| Invalid or expired authentication token |
403 |
| Token does not have required permissions |
404 |
| Requested object not found |
429 |
| Too many requests, please retry later |
500 |
| 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
List objects first: Start with
POST /external/v2/objectsto discover the correctobjectIDs for your tenant.Use pagination: Always check for the
cursorfield and continue fetching until no cursor is returned.Download files promptly: Signed URLs have a limited validity period. Download files as soon as you receive the URLs.
Respect rate limits: Implement exponential backoff when receiving 429 errors.
Use appropriate time ranges: For large datasets, export data in smaller time ranges to manage file sizes and speed up downstream ingestion.
