Analytics Order API¶
The Analytics Order API generates and manages async analytics reports (e.g. chat usage exports) for a company.
Overview¶
Create and manage analytics orders with:
- Report generation for configurable date ranges and types
- Optional filtering by assistant
- Status polling until completion
- CSV download once the order is done
Analytics types¶
Report type must be one of the strings in AnalyticsOrder.ANALYTICS_TYPE_VALUES. The static type of type is AnalyticsOrder.AnalyticsTypeLiteral (a Literal[...] of the same set), matching the product AnalyticsType values:
ACTIVE_USER, CHAT_INTERACTION, CHAT_INTERACTION_DETAILED, INGESTION_STAT, MODEL_USAGE, NPS, PRODUCT_METRICS, REFERENCE_STAT, USER_CHAT_EXPORT.
Methods¶
unique_sdk.AnalyticsOrder.create - Create an analytics order
Start a new analytics order. The order is processed asynchronously — poll retrieve until state reaches DONE or ERROR.
Parameters:
type(str, required) - Analytics type; must be a member of Analytics types (e.g."CHAT_INTERACTION")startDate(str, required) - Report start date in ISO 8601 format (e.g."2024-01-01")endDate(str, required) - Report end date in ISO 8601 format (e.g."2024-12-31")assistantId(str, optional) - Filter the report to a specific assistant
Returns:
Returns an AnalyticsOrder object.
Example:
order = unique_sdk.AnalyticsOrder.create(
user_id=user_id,
company_id=company_id,
type="CHAT_INTERACTION",
startDate="2024-01-01",
endDate="2024-12-31",
)
print(order["id"], order["state"]) # e.g. "ord_abc123", "PENDING"
Scoped to an assistant:
order = unique_sdk.AnalyticsOrder.create(
user_id=user_id,
company_id=company_id,
type="CHAT_INTERACTION",
startDate="2024-01-01",
endDate="2024-12-31",
assistantId="asst_xyz789",
)
unique_sdk.AnalyticsOrder.list - List analytics orders
List analytics orders for the company, sorted by creation date descending.
Parameters:
skip(int, optional) - Number of orders to skip (default:0)take(int, optional) - Number of orders to return (default:20, max:100)
Returns:
Returns a list of AnalyticsOrder objects.
Example:
orders = unique_sdk.AnalyticsOrder.list(
user_id=user_id,
company_id=company_id,
skip=0,
take=20,
)
for order in orders:
print(order["id"], order["state"])
unique_sdk.AnalyticsOrder.retrieve - Get an analytics order
Fetch a single analytics order by ID. Use this to poll for status changes.
Parameters:
order_id(str, required) - Analytics order ID
Returns:
Returns an AnalyticsOrder object.
Example:
order = unique_sdk.AnalyticsOrder.retrieve(
user_id=user_id,
company_id=company_id,
order_id="ord_abc123",
)
print(order["state"]) # "PENDING" | "RUNNING" | "DONE" | "ERROR"
unique_sdk.AnalyticsOrder.delete - Delete an analytics order
Delete an analytics order by ID.
Parameters:
order_id(str, required) - Analytics order ID
Returns:
Returns the deleted AnalyticsOrder object.
Example:
deleted = unique_sdk.AnalyticsOrder.delete(
user_id=user_id,
company_id=company_id,
order_id="ord_abc123",
)
print(deleted["id"])
unique_sdk.AnalyticsOrder.download - Download analytics order CSV
Download the CSV content of a completed analytics order. The order must be in DONE state.
Parameters:
order_id(str, required) - Analytics order ID
Returns:
Returns the CSV content as a str.
Example:
csv_content = unique_sdk.AnalyticsOrder.download(
user_id=user_id,
company_id=company_id,
order_id="ord_abc123",
)
with open("report.csv", "w") as f:
f.write(csv_content)
Use Cases¶
List and clean up old orders
import unique_sdk
orders = unique_sdk.AnalyticsOrder.list(
user_id=user_id,
company_id=company_id,
take=100,
)
for order in orders:
if order["state"] == "ERROR":
unique_sdk.AnalyticsOrder.delete(user_id, company_id, order["id"])
print(f"Deleted failed order: {order['id']}")
Return Types¶
AnalyticsTypeLiteral and ANALYTICS_TYPE_VALUES¶
AnalyticsOrder exposes:
AnalyticsTypeLiteral— atyping.Literal[...]of the allowedtypestrings.ANALYTICS_TYPE_VALUES— atuple[str, ...]of the same strings (suitable for membership checks, UI dropdowns, or validation at runtime).
AnalyticsOrder¶
The AnalyticsOrder object represents an analytics report order
Fields:
id(str) - Unique order identifiertype(str) - Analytics type (one of the values in Analytics types)state(str) - Current state:"PENDING","RUNNING","DONE", or"ERROR"configuration(dict) - Order configuration (includesstartDate,endDate, and optionallyassistantId)createdAt(str) - Creation timestamp (ISO 8601)updatedAt(str) - Last update timestamp (ISO 8601)stateUpdatedAt(str) - Timestamp of the last state change (ISO 8601)object(str) - Always"analytics-order"
Returned by: AnalyticsOrder.create(), AnalyticsOrder.retrieve(), AnalyticsOrder.delete()
Related Resources¶
- Analytics order run utility - End-to-end create → poll → download helper
- Benchmarking API - Similar async job pattern for xlsx benchmarking