openapi: 3.0.0 info: title: Userpilot Analytics 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\nContact Support:\n Email: support@userpilot.com" contact: name: Userpilot url: https://userpilot.io email: support@userpilot.com license: name: MIT url: https://opensource.org/licenses/MIT servers: - url: https://{environment}.userpilot.io description: Analytical data endpoint for Userpilot API. Choose the appropriate environment based on your data residency requirements and account type. variables: environment: description: The Userpilot environment endpoint for your account. Most customers use the default US region (analytex), while EU customers with data residency requirements use the EU region (analytex-eu). You can find your specific endpoint URL in your Userpilot dashboard under [Environment Settings](https://run.userpilot.io/environment). enum: - analytex - analytex-eu default: analytex tags: - name: Analytics 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: 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 tags: - Analytics /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 tags: - Analytics /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 tags: - Analytics /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 tags: - Analytics /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 tags: - Analytics /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 tags: - Analytics /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 tags: - Analytics /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 tags: - Analytics /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 tags: - Analytics /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 tags: - Analytics /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 tags: - Analytics /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? tags: - Analytics /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 tags: - Analytics /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 tags: - Analytics /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 tags: - Analytics 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