---
title: "Transcribe a Post"
method: POST
path: "/api/v1/transcriptions"
---

# Transcribe a Post

`POST /api/v1/transcriptions`

## Request

- Base URL: `https://viraloutliers.com`
- URL: `https://viraloutliers.com/api/v1/transcriptions`
- Auth: HTTP bearer

Queues AI transcription of the spoken audio for a video post. Accepts a public post URL or an internal post id. Asynchronous: returns a job reference to poll with get_job_status; once complete the transcript is attached to get_post responses. Credits are charged on queueing and automatically refunded if the job fails. Image slideshows and photo posts have no audio and are rejected up front with no charge: use request_visual_analysis for their on-screen text instead.

Cost: 10 credits per call. Asynchronous: poll GET /api/v1/jobs/{jobRef}.

## Request body

- object
  - `url` string: Public post URL (e.g. a TikTok/Reel/Short link). The easy path when you have a link.
  - `postId` string: Internal post id (from search results). Provide this or url.

## Response `200`

Success

- object

## Other responses

- `401`: Invalid or revoked API key (or, on free skills, no key sent); code key_suspended means the key was suspended when its account was claimed by the email owner and can be reactivated in Settings
- `402`: Payment required. Without an API key (billable skills only) the code is payment_required and error.payment.checkoutUrl (or, when no link is configured, error.payment.pageUrl at https://viraloutliers.com/api-access) buys a key without an account; with a key it is insufficient_credits and error.payment points at create_topup_link.
- `429`: Rate limited

---

[API](https://skmtc.dev/viraloutliers/apis/viral-outliers-agent-api.md) · [All operations](https://skmtc.dev/viraloutliers/apis/viral-outliers-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/viraloutliers/apis/viral-outliers-agent-api/revisions/0099977bd629?raw)
