Skip to content

Sandchest docs

The open-source speech-to-text API. Real word-level timestamps in milliseconds, an AssemblyAI-compatible surface, and a native TypeScript SDK.

Open .md

Sandchest turns audio into words. Every word comes back with its own start and end in milliseconds, its own confidence score, and the identifier of the model that actually produced it. This page tells you which door to walk through; the rest of the docs are linear, imperative and end with something you can check.

What it is#

A speech-to-text API you can read the source of. Two HTTP surfaces sit on the same engine: an AssemblyAI-compatible one at /v2/*, and a native one at /api/v1/*. The hosted service runs at https://stt-api.sandchest.com; the same code runs on your own GPU or Apple Silicon machine.

Base URLhttps://stt-api.sandchest.com
AuthAuthorization: <your key> (a Bearer prefix also works)
Dashboardsandchest.com/dashboard
SourceCapSoftware/Sandchest
Machine-readable/llms.txt · /llms-full.txt · /openapi.json

Three ways in#

Keep the AssemblyAI SDK you already have. Change apiKey and baseUrl, change nothing else. Upload, create, poll, list, delete, sentences, paragraphs, word search, SRT and VTT all work. See Using the AssemblyAI SDK.

transcribe.ts
import { AssemblyAI } from "assemblyai";

const client = new AssemblyAI({
  apiKey: process.env.SANDCHEST_API_KEY,
  baseUrl: "https://stt-api.sandchest.com",
});

Use the native SDK. @sandchest/sdk is small, fully typed, and cancels through uploads, requests and polling. See TypeScript SDK.

transcribe.ts
import { Sandchest } from "@sandchest/sdk";

const client = new Sandchest({ apiKey: process.env.SANDCHEST_API_KEY });

Call the HTTP API directly. Ten endpoints, { "error": "..." } on failure, no client library required. See the API reference.

shell
curl https://stt-api.sandchest.com/v2/transcript/$ID \
  -H "Authorization: $SANDCHEST_API_KEY"

Give this to your agent#

These docs are written to be handed to an AI coding agent. Paste this prompt into Claude Code, Cursor, Codex or anything else that can fetch a URL:

text
Add Sandchest speech-to-text to this project.
Docs: https://sandchest.com/llms.txt (index) — fetch https://sandchest.com/llms-full.txt for everything.
API key: read it from the SANDCHEST_API_KEY environment variable (never hardcode it).
Base URL: https://stt-api.sandchest.com
Use the official assemblyai package if it is already installed (change apiKey + baseUrl), otherwise @sandchest/sdk.
Transcribe <file>, print each word with its start/end in milliseconds, and add a small test.

Every page here is also served as plain Markdown at /docs/<slug>.md, and answers to Accept: text/markdown. Set up with an AI agent has the details and a snippet for your CLAUDE.md or AGENTS.md.

Everything else#

PageWhat it covers
QuickstartKey, environment variable, first transcript, three ways
Set up with an AI agentThe agent prompt, llms.txt, raw Markdown, editor rules
AuthenticationKeys, header forms, workspaces and roles, rotation
Using the AssemblyAI SDKThe two-line swap, what is supported, what is rejected
Transcript optionsEvery request field, the transcript object, the word object
LanguagesDetection, explicit codes, the supported list, models
WebhooksPayload, auth header, retries, local testing
API referenceEvery endpoint, request, response and error
TypeScript SDK@sandchest/sdk in full
Errors and limitsStatus codes, size limits, rate limits, deadlines
BillingPrepaid credits, per-second metering, top-ups
Self-hostingApple Silicon, Docker Compose, required environment

Verify#

You are ready to start when this prints your workspace's ten most recent transcripts (an empty list is a pass — it means the key authenticated):

shell
curl -sS "https://stt-api.sandchest.com/v2/transcript?limit=10" \
  -H "Authorization: $SANDCHEST_API_KEY"
expected shape
{
  "page_details": { "limit": 10, "result_count": 0, "current_url": "...", "prev_url": null, "next_url": null },
  "transcripts": []
}

If you get {"error":"A valid Sandchest API key is required."}, the key is missing, misspelled or revoked. Start at the Quickstart.

Next#

Quickstart — get a key and your first transcript in about two minutes.