Skip to main content
A transcript is a single conversation — a sequence of 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-write permission (for POST) or projects-read permission (for GET). See Authentication.
  • A project ID (hp-{uuid} format). Create one with POST /projects if 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 of user, assistant, system, tool, human_agent
  • content — string, up to 1 MB per turn
  • toolCalls — (optional) array of { name, args } objects for assistant tool calls
  • toolResults — (optional) array of { name, result } objects for tool responses
  • metadata — (optional) arbitrary object
  • createdAt — (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 pipeline
  • skippedprocess: false was set; no analysis will run
  • error — 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}

Returns the transcript plus all turns and annotations. Returns 404 not_found_error if the transcript ID is unknown or belongs to a different workspace.

Next steps