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

projectId
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

name
string
required
A human-readable name for the transcript. 1–500 characters.
turns
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
modelName
string
The name of the model that produced the assistant turns. Max 100 characters.
language
string
Optional language code. Max 10 characters.
sourceSystem
string
Optional source system identifier. Max 100 characters.
externalId
string
Your system’s identifier for this conversation. Max 500 characters. Useful for cross-referencing.
externalUserId
string
Optional end-user identifier from your system. Max 500 characters.
metadata
object
Arbitrary metadata object stored alongside the transcript.
sourceTimestamp
string
ISO 8601 timestamp of when the conversation took place.
process
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

data.id
string
The transcript ID. Use this in subsequent calls to fetch detail.
data.processing_status
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

page
number
default:"1"
Page number (1-indexed).
limit
number
default:"20"
Results per page. Max 100.
q
string
Full-text search across transcript content.
model_name
string
Filter by model name.
language
string
Filter by language code.
source_system
string
Filter by source system.
annotation
string
Filter by annotation, formatted as key:value.
date_from
string
ISO 8601 lower bound (inclusive) on source_timestamp.
date_to
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