# API pricing

A run's price is additive: a small base fee, a download charge per artifact fetched, and, when you pass a schema, an AI rate per second per modality. Model-independent. 1 credit = **$0.0001**. Your first top-up earns **1,000 bonus credits**.

## Base fee

Every fresh pipeline run costs **50 credits** ($0.0050). It covers the probe, metadata, thumbnail and description, which every run includes. Cached results (previously extracted URLs) are free.

## Download rates

| Artifact | Rate |
| --- | --- |
| `transcript` | $0.001 flat (10 credits) |
| `comments` | $0.002 flat (20 credits) |
| `audio` | $0.00002/second of video |
| `video` | $0.00005/second of video |

Charged per artifact you request, on download-only runs (`parts`) and on AI runs alike (an AI run downloads whatever its `inputs` need). Artifacts that turn out unavailable (a video with no subtitles, hidden comments) are refunded automatically on completion.

## AI rates

| Modality | USD / second | Credits / second | Covers |
| --- | --- | --- | --- |
| `text` | $0.00005 | 0.5 | transcript and/or comments (charged once, never doubled) |
| `audio` | $0.0001 | 1 | the audio track (not billed when video is also selected) |
| `video` | $0.0002 | 2 | the full video (thumbnail analysis rides along free) |

`total = base + Σ(download rates) + Σ(selected modality rate × video seconds)`. Download-only runs (no `schema` / `schemaId`) skip the AI component entirely; probes are free.

## The probe is the canonical quote

`POST /v1/probe` with your URL and intended `inputs` returns the exact price that the matching submit will debit:

```
POST /v1/probe
{ "url": "https://...", "inputs": ["transcript", "comments", "video"] }

200
{
  "durationSec": 212,
  "price": {
    "credits": 716,
    "usd": 0.0716,
    "baseUsd": 0.0050,
    "downloadUsd": 0.0136,
    "downloadBreakdown": { "transcript": 0.0010, "comments": 0.0020, "video": 0.0106 },
    "breakdown": { "text": 0.0106, "audio": 0.0000, "video": 0.0424 }
  }
}
```

## Worked example

A 3m32s video (212s) with `inputs: ["transcript", "comments", "video"]`:

- **base fee**: $0.0050
- **downloads** (transcript + comments flat, video per-second): $0.0136
- **AI text** (transcript + comments, charged once): $0.00005 × 212s = $0.0106
- **AI video**: $0.0002 × 212s = $0.0424
- **audio**: $0. The video already carries the audio track, so it isn't billed separately.
- Total: **$0.0716** = **716 credits**.

## Debits, refunds and caching

- Credits are debited **up-front at submit**, atomically with creating the extraction.
- Failed extractions are **refunded in full**, automatically.
- When the platform hides the video duration (`durationSec: null` on the probe), the worst-case 300s is debited and the difference is refunded once the real duration is known. You never pay more than the worst case.
- If an identical extraction (same URL, schema and inputs) completed recently, the result is reused and **nothing is charged** (`creditsDebited: 0`, `cached: true`).

## First top-up bonus

Your first top-up, whatever the amount, comes with **1,000 bonus credits** on top of what you buy, once per account. At the text rate that's about 33 extra minutes of transcript extraction. Top up from the [billing page](/billing). See also the [general pricing guide](/docs/pricing).
