Skip to main content
Public API exports use the same asynchronous export pipeline as the FITsociety software. A client queues an export request, polls the request status, and reads a temporary downloadUrl when the request is completed. Export types can expose xlsx, csv, or zip formats. The authenticated company and Public API client are always derived from the Bearer token. Public API clients can only see export requests that they created themselves. Software-created export requests, requests created by other Public API clients, raw params, metadata, internal actor fields, provider payloads, and internal error details are not exposed. Legacy direct XLSX routes and coach export templates are not part of the Public API.

Scopes

Integrations that create an export and later poll for status or download metadata need both scopes.

Workflow

  1. Use GET /public/v1/exports/types to discover active export types for the authenticated company.
  2. Queue an export with POST /public/v1/exports/requests.
  3. Poll GET /public/v1/exports/requests/{exportRequestId} until status is completed, failed, canceled, expired, or deleted.
  4. Download the file through the signed data.exportRequest.file.downloadUrl while it is present and before file.expiresAt.
  5. Optionally retry failed or completed jobs, cancel queued or running jobs, or delete terminal jobs to clear their public file URL.

List export types

Required scope: exports:read The response contains only export types that are active for the authenticated company, have an async handler, and support one of their configured formats. Response fields:

Create an export request

Required scope: exports:write Request body: When a single-sheet export is requested as csv, the download is a .csv file. When a multi-sheet export is requested as csv, the download is a .zip file containing one CSV file per worksheet so no worksheet data is dropped.
Response:

List export requests

Required scope: exports:read Query parameters: Only requests created by the authenticated Public API client are returned.

Export request fields

GET /public/v1/exports/requests returns data.exportRequests[]. GET /public/v1/exports/requests/{exportRequestId} returns data.exportRequest. Example completed request:

Cancel, retry, and delete

All write actions require exports:write and an Idempotency-Key header. Empty request bodies are accepted. Software-created requests and requests from another Public API client are returned as not found for these actions.