---
title: "Client-side speech-to-text (JWT-based)"
method: POST
path: "/client_api"
---

# Client-side speech-to-text (JWT-based)

`POST /client_api`

Identical to the standard `/api` endpoint, but uses a client token (JWT)
in the Authorization header instead of an org-level API key.

## Request body

- object
  - `audio` string, required — Base64-encoded audio data (up to 25MB / 6 minutes)
  - `properties` object, required — Additional config for transcription

## Response `200`

Successful transcription

- object
  - `id` string, uuid
  - `text` string
  - `detected_language` string
  - `total_time` number
  - `generated_tokens` integer

## Other responses

- `400` — Bad request
- `401` — Unauthorized (invalid or expired client JWT)
- `413` — Payload too large
- `500` — Internal server error

---

[API](https://skmtc.dev/wisprflow/apis/client-side-authentication-api.md) · [All operations](https://skmtc.dev/wisprflow/apis/client-side-authentication-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/wisprflow/client-side-authentication-api/revisions/b310f2be849d/schema)
