Userpilot Analytics Export API (appex)
Userpilot Analytics Export API for triggering and retrieving export jobs and looking up resources (segments, flows, surveys, banners, checklists, properties).
Userpilot Analytics Export API for triggering and retrieving export jobs and looking up resources (segments, flows, surveys, banners, checklists, properties).
{
"openapi": "3.0.0",
"info": {
"title": "Userpilot API",
"version": "1.0.0",
"termsOfService": "https://userpilot.io/terms-of-service/",
"description": "Userpilot's API suite for user identification, event tracking, data import/export, and user/company management.\n\nAuthentication:\n All endpoints that require authentication expect an HTTP header in the following format:\n\n Authorization: Token {{API_KEY}}\n\nExample (cURL):\n curl -X GET 'https://appex.userpilot.io/v1/identify' \\\n -H 'Authorization: Token abcd1234efgh5678' \\\n -H 'Content-Type: application/json'\n\nContact Support:\n Email: [email protected]",
"contact": {
"name": "Userpilot",
"url": "https://userpilot.io",
"email": "[email protected]"
},
"license": {
"name": "MIT",
"url": "https://opensource.org/licenses/MIT"
}
},
"servers": [
{
"url": "https://appex.userpilot.io",
"description": "Application endpoint"
}
],
"paths": {
"/api/v1/analytics/exports/jobs/{job_id}": {
"parameters": [
{
"name": "job_id",
"in": "path",
"required": true,
"description": "(Required) Unique identifier for the export job",
"example": "<uuid>",
"schema": {
"type": "string"
}
}
],
"get": {
"summary": "Show Job by Job ID",
"parameters": [
{
"name": "Accept",
"in": "header",
"required": false,
"example": "application/json",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"headers": {
"Content-Type": {
"schema": {
"type": "string"
},
"example": "application/json"
}
},
"description": "OK - Export job details",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"app_token": {
"type": "string"
},
"completed_chunks": {
"type": "array",
"items": {
"type": "string"
}
},
"current_chunk": {
"type": "string"
},
"end_time": {
"type": "string"
},
"job_id": {
"type": "string"
},
"presigned_urls": {
"type": "array",
"items": {
"type": "object",
"properties": {
"filename": {
"type": "string"
},
"url": {
"type": "string"
}
}
}
},
"progress": {
"type": "string"
},
"start_time": {
"type": "string"
},
"status": {
"type": "string"
},
"all_chunks": {
"type": "array",
"items": {
"type": "string"
}
},
"type": {
"type": "string"
}
}
}
}
}
},
"401": {
"headers": {
"Content-Type": {
"schema": {
"type": "string"
},
"example": "application/json"
}
},
"description": "Unauthorized - Invalid API key",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"details": {
"type": "string"
},
"error": {
"type": "string"
},
"error_code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}
}
}
}
},
"404": {
"headers": {
"Content-Type": {
"schema": {
"type": "string"
},
"example": "application/json"
}
},
"description": "Not Found - Export job not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"details": {
"type": "string"
},
"error": {
"type": "string"
},
"error_code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}
}
}
}
}
}
}
},
"/api/v1/analytics/exports/jobs/": {
"parameters": [],
"get": {
"summary": "Show Jobs",
"parameters": [
{
"name": "Accept",
"in": "header",
"required": false,
"example": "application/json",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"headers": {
"Content-Type": {
"schema": {
"type": "string"
},
"example": "application/json"
}
},
"description": "OK - List of export jobs",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"elapsed_time": {
"type": "string"
},
"elapsed_time_seconds": {
"type": "string"
},
"end_time": {
"type": "string"
},
"job_id": {
"type": "string"
},
"progress": {
"type": "string"
},
"start_time": {
"type": "string"
},
"status": {
"type": "string"
}
}
}
}
}
}
},
"401": {
"headers": {
"Content-Type": {
"schema": {
"type": "string"
},
"example": "application/json"
}
},
"description": "Unauthorized - Invalid API key",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"details": {
"type": "string"
},
"error": {
"type": "string"
},
"error_code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}
}
}
}
}
}
}
},
"/api/v1/analytics/exports/lookups/user_properties": {
"get": {
"summary": "Get user properties",
"description": "Retrieve a list of user properties available for export.",
"parameters": [
{
"$ref": "#/components/parameters/AuthorizationHeader"
}
],
"responses": {
"200": {
"description": "A list of user properties.",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object"
}
},
"example": [
{
"id": 1,
"type": "user_property",
"key": "email",
"display_name": "Email",
"data_type": "string",
"is_auto_property": false
}
]
}
}
}
}
}
},
"/api/v1/analytics/exports/lookups/company_properties": {
"get": {
"summary": "Get company properties",
"description": "Retrieve a list of company properties available for export.",
"parameters": [
{
"$ref": "#/components/parameters/AuthorizationHeader"
}
],
"responses": {
"200": {
"description": "A list of company properties.",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object"
}
},
"example": [
{
"id": 10,
"type": "company_property",
"key": "company_name",
"display_name": "Company Name",
"data_type": "string",
"is_auto_property": false
}
]
}
}
}
}
}
},
"/api/v1/analytics/exports/lookups/segments": {
"get": {
"summary": "Get segments",
"description": "Retrieve a paginated list of segments available for export.",
"parameters": [
{
"$ref": "#/components/parameters/AuthorizationHeader"
}
],
"responses": {
"200": {
"description": "A paginated list of segments.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object"
}
},
"metadata": {
"type": "object",
"properties": {
"cursor": {
"type": "object",
"properties": {
"after": {
"type": "string",
"nullable": true
},
"before": {
"type": "string",
"nullable": true
}
}
},
"limit": {
"type": "integer"
},
"total_count": {
"type": "integer"
}
}
}
}
},
"example": {
"data": [
{
"id": 101,
"title": "Active Users",
"usage": "all",
"category": "user_id",
"is_hidden": false,
"is_protected": false,
"status": "published"
}
],
"metadata": {
"cursor": {
"after": "...",
"before": null
},
"limit": 50,
"total_count": 1
}
}
}
}
}
}
}
},
"/api/v1/analytics/exports/lookups/features_events": {
"get": {
"summary": "Get features & events",
"description": "Retrieve a list of features and events available for export.",
"parameters": [
{
"$ref": "#/components/parameters/AuthorizationHeader"
}
],
"responses": {
"200": {
"description": "A list of features and events.",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object"
}
},
"example": [
{
"display_name": "Feature A",
"key": "feature_a",
"data_type": "string"
}
]
}
}
}
}
}
},
"/api/v1/analytics/exports/lookups/events_properties": {
"get": {
"summary": "Get trackable events' properties/attributes (paginated)",
"description": "Retrieve a paginated list of trackable event properties and attributes. Supports cursor-based pagination.",
"parameters": [
{
"$ref": "#/components/parameters/AuthorizationHeader"
},
{
"name": "after_cursor",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Cursor for pagination. Use the value from the previous response's metadata.cursor.after."
}
],
"responses": {
"200": {
"description": "A paginated list of event properties.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object"
}
},
"metadata": {
"type": "object",
"properties": {
"cursor": {
"type": "object",
"properties": {
"after": {
"type": "string",
"nullable": true
},
"before": {
"type": "string",
"nullable": true
}
}
},
"limit": {
"type": "integer"
},
"total_count": {
"type": "integer"
}
}
}
}
},
"example": {
"data": [
{
"id": 12,
"key": "url",
"display_name": "URL",
"is_auto_property": true,
"is_mobile_auto_property": false,
"data_type": "string",
"category": "css_attribute",
"description": "Page URL",
"is_archived": false,
"event": {
"id": 33,
"display_name": "page_view"
},
"inserted_at": "2025-01-01T00:00:00Z",
"last_seen": "2025-01-10T00:00:00Z"
}
],
"metadata": {
"cursor": {
"after": "...",
"before": null
},
"limit": 50,
"total_count": 53
}
}
}
}
}
}
}
},
"/api/v1/analytics/exports/lookups/flows": {
"get": {
"summary": "Get flows (experiences)",
"description": "Retrieve a list of flows (experiences) available for export.",
"parameters": [
{
"$ref": "#/components/parameters/AuthorizationHeader"
}
],
"responses": {
"200": {
"description": "A list of flows (experiences).",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object"
}
},
"example": [
{
"id": 123,
"title": "Onboarding Flow"
}
]
}
}
}
}
}
},
"/api/v1/analytics/exports/lookups/banners": {
"get": {
"summary": "Get banners",
"description": "Retrieve a list of banners available for export.",
"parameters": [
{
"$ref": "#/components/parameters/AuthorizationHeader"
}
],
"responses": {
"200": {
"description": "A list of banners.",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object"
}
},
"example": [
{
"id": 77,
"title": "Promo Banner"
}
]
}
}
}
}
}
},
"/api/v1/analytics/exports/lookups/embeds": {
"get": {
"summary": "Get embeds",
"description": "Retrieve a list of embeds (banners and cards) available for export.",
"parameters": [
{
"$ref": "#/components/parameters/AuthorizationHeader"
}
],
"responses": {
"200": {
"description": "A list of embeds (banners and cards).",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object"
}
},
"example": [
{
"id": 77,
"title": "Promo Banner",
"type": "banner"
},
{
"id": 92,
"title": "Feature Card",
"type": "card"
}
]
}
}
}
}
}
},
"/api/v1/analytics/exports/lookups/spotlights": {
"get": {
"summary": "Get spotlights",
"description": "Retrieve a list of spotlights available for export.",
"parameters": [
{
"$ref": "#/components/parameters/AuthorizationHeader"
}
],
"responses": {
"200": {
"description": "A list of spotlights.",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object"
}
},
"example": [
{
"id": 88,
"title": "New Feature Spotlight"
}
]
}
}
}
}
}
},
"/api/v1/analytics/exports/lookups/surveys": {
"get": {
"summary": "Get surveys (with modules)",
"description": "Retrieve a list of surveys (with modules) available for export.",
"parameters": [
{
"$ref": "#/components/parameters/AuthorizationHeader"
}
],
"responses": {
"200": {
"description": "A list of surveys (with modules).",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object"
}
},
"example": [
{
"id": 45,
"title": "CSAT Survey",
"platform": "web",
"modules": [
{
"id": 1,
"order": 1,
"type": "open_text",
"question": "How was it?"
}
]
}
]
}
}
}
}
}
},
"/api/v1/analytics/exports/lookups/resource_center_modules": {
"get": {
"summary": "Get resource center modules",
"description": "Retrieve a list of resource center modules available for export.",
"parameters": [
{
"$ref": "#/components/parameters/AuthorizationHeader"
}
],
"responses": {
"200": {
"description": "A list of resource center modules.",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object"
}
},
"example": [
{
"display_name": "Resource Center Module A",
"key": "resource_center_module_a",
"data_type": "string"
}
]
}
}
}
}
}
},
"/api/v1/analytics/exports/lookups/checklists": {
"get": {
"summary": "Get checklists (with tasks)",
"description": "Retrieve a list of checklists (with tasks) available for export.",
"parameters": [
{
"$ref": "#/components/parameters/AuthorizationHeader"
}
],
"responses": {
"200": {
"description": "A list of checklists (with tasks).",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object"
}
},
"example": [
{
"display_name": "Checklist A",
"key": "checklist_a",
"data_type": "string"
}
]
}
}
}
}
}
},
"/api/v1/analytics/exports": {
"parameters": [
{
"$ref": "#/components/parameters/AuthorizationHeader"
}
],
"post": {
"summary": "Trigger an Export Job",
"parameters": [
{
"name": "Content-Type",
"description": "The content type of the request body. Must be `application/json`.",
"in": "header",
"required": false,
"example": "application/json",
"schema": {
"type": "string"
}
},
{
"name": "Accept",
"description": "The content type of the response body. Must be `application/json`.",
"in": "header",
"required": false,
"example": "application/json",
"schema": {
"type": "string"
}
}
],
"responses": {
"201": {
"headers": {
"Content-Type": {
"schema": {
"type": "string"
},
"example": "application/json"
}
},
"description": "Created - Export job successfully created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"environment_app_token": {
"type": "string",
"description": "The app token of the environment.",
"example": "NX-RE213S2"
},
"environment_name": {
"type": "string",
"description": "The name of the environment.",
"example": "production"
},
"job_id": {
"type": "string",
"description": "The ID of the export job.",
"example": "123e4567-e89b-12d3-a456-426614174000"
},
"links": {
"type": "string",
"description": "The links to the export job."
},
"start_time": {
"type": "string",
"description": "The start time of the export job."
}
}
}
}
}
},
"401": {
"headers": {
"Content-Type": {
"schema": {
"type": "string"
},
"example": "application/json"
}
},
"description": "Unauthorized - Invalid API key or insufficient permissions",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"details": {
"type": "string"
},
"error": {
"type": "string"
},
"error_code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}
}
}
}
},
"409": {
"headers": {
"Content-Type": {
"schema": {
"type": "string"
},
"example": "application/json"
}
},
"description": "Conflict - Export job already in progress",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"details": {
"type": "string"
},
"error": {
"type": "string"
},
"error_code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}
}
}
}
}
},
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"emails": {
"type": "array",
"items": {
"type": "string"
}
},
"event_type": {
"type": "array",
"items": {
"type": "string"
}
},
"user_id": {
"type": "array",
"items": {
"type": "string"
}
},
"company_id": {
"type": "array",
"items": {
"type": "string"
}
},
"segment_id": {
"type": "string"
},
"format": {
"type": "string",
"enum": [
"avro",
"csv",
"ndjson",
"parquet"
]
},
"exclusions": {
"type": "string"
}
}
}
}
}
}
}
}
},
"components": {
"parameters": {
"AuthorizationHeader": {
"name": "Authorization",
"in": "header",
"required": true,
"description": "API authentication token in the format: `Token {{API_KEY}}`. Obtain your API key from the [Userpilot Environment Settings](https://run.userpilot.io/environment).",
"schema": {
"type": "string"
},
"example": "Token abcd1234efgh5678"
}
},
"schemas": {
"ErrorResponse": {
"type": "object",
"properties": {
"errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"details": {
"type": "string",
"description": "Detailed error information."
},
"error": {
"type": "string",
"description": "Short error code or label."
},
"error_code": {
"type": "string",
"description": "Error code for programmatic handling."
},
# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/userpilot/refs/heads/main/openapi/userpilot-appex-openapi.json