user / assistant (and optionally tool / system / human_agent) turns — that you upload into a project. The Transcripts API lets you push conversations from your AI system into Bigspin programmatically, list the transcripts in a project, and fetch a single transcript with its turns and AI-generated annotations.
Prerequisites
- An API key from your workspace with the
projects-writepermission (forPOST) orprojects-readpermission (forGET). See Authentication. - A project ID (
hp-{uuid}format). Create one withPOST /projectsif you don’t have one yet. - The base URL:
https://app.bigspin.ai/public/api/v1
Endpoints
Upload a transcript — POST /projects/{projectId}/transcripts
Request
Path parameter
string
required
The ID of the project to upload into. Must match the
hp-{uuid} format. The project must belong to the same workspace as your API key.Request body
string
required
A human-readable name for the transcript. 1–500 characters.
array
required
Array of conversation turns. At least 1 turn, at most 1000.Each turn has:
role— one ofuser,assistant,system,tool,human_agentcontent— string, up to 1 MB per turntoolCalls— (optional) array of{ name, args }objects for assistant tool callstoolResults— (optional) array of{ name, result }objects for tool responsesmetadata— (optional) arbitrary objectcreatedAt— (optional) ISO 8601 timestamp for the turn
string
The name of the model that produced the assistant turns. Max 100 characters.
string
Optional language code. Max 10 characters.
string
Optional source system identifier. Max 100 characters.
string
Your system’s identifier for this conversation. Max 500 characters. Useful for cross-referencing.
string
Optional end-user identifier from your system. Max 500 characters.
object
Arbitrary metadata object stored alongside the transcript.
string
ISO 8601 timestamp of when the conversation took place.
boolean
default:"true"
Whether to run Bigspin’s annotation pipeline (structural + LLM annotation + pattern detection) after upload. Set to
false to upload without analysis — useful for backfills.Total request body size is capped at approximately 5 MB. For larger datasets, split into multiple requests or use the dashboard’s file upload (which supports up to 500 MB per file).
Response — 201 Created
string
The transcript ID. Use this in subsequent calls to fetch detail.
string
One of:
queued— the annotation job was submitted to the pipelineskipped—process: falsewas set; no analysis will runerror— the annotation job could not be submitted (the transcript was still created successfully)
Error responses
List transcripts in a project — GET /projects/{projectId}/transcripts
Query parameters
number
default:"1"
Page number (1-indexed).
number
default:"20"
Results per page. Max 100.
string
Full-text search across transcript content.
string
Filter by model name.
string
Filter by language code.
string
Filter by source system.
string
Filter by annotation, formatted as
key:value.string
ISO 8601 lower bound (inclusive) on
source_timestamp.string
ISO 8601 upper bound (inclusive) on
source_timestamp.Get a single transcript — GET /transcripts/{transcriptId}
404 not_found_error if the transcript ID is unknown or belongs to a different workspace.
Next steps
- Authentication — set up your API key.
- Projects API — create the project you’ll upload into.
- Upload transcripts via the dashboard — for CSV/JSONL bulk loads up to 500 MB.