# Extract endpoint

`POST /extract` submits one public extraction job. It accepts multipart form data with one `file` and an optional JSON `options` field.

Requires `X-Fast-Api-Key` from an account with Pro access. Free-tier and other non-Pro API keys return `403 api_key.pro_required` before job creation.

## Request

```http
POST /extract
Content-Type: multipart/form-data
X-Fast-Api-Key: YOUR_API_KEY
```

```bash
curl https://api.tools.fast/extract \
  -H "X-Fast-Api-Key: $API_KEY" \
  -F "file=@slides.pptx" \
  -F 'options={
    "extraction": {
      "selectedCapabilities": [
        "powerpoint.images",
        "powerpoint.text",
        "powerpoint.markdown"
      ],
      "includeManifest": true
    }
  }'
```

## Form fields

| Field | Required | Notes |
| --- | --- | --- |
| `file` | Yes | Exactly one source file. |
| `options` | No | JSON option payload. Defaults are format-specific. |

## Response

```json
{
  "id": "0190f2d5b8d87c8bbf647a38f954cb81",
  "status": "Queued",
  "fileName": "slides",
  "format": "pptx",
  "queue": {
    "pool": "DocumentPool",
    "position": 1
  }
}
```

The `Location` header points to the public job URL: `/extract/job/{id}` or an absolute URL with that path.

## Transcript add-on

For audio and video extraction jobs, include `media.transcript` in the same `/extract` request when you want transcript output bundled with other extracted artifacts.

```json
{
  "extraction": {
    "selectedCapabilities": ["video.audio", "video.metadata", "media.transcript"],
    "capabilityOptions": {
      "media.transcript": {
        "transcription.mode": "fast"
      }
    }
  }
}
```

This is one job, one debit, and one ZIP. The transcript add-on is priced from the configured `media.transcript` capability policy and does not require a separate `/transcribe` request.

When transcription succeeds, the add-on automatically includes the full transcript bundle: `transcript.txt`, `transcript.pdf`, `transcript.docx`, `transcript.md`, `transcript.epub`, `transcript.srt`, and `transcript.vtt`. Meeting intelligence mode also includes `analysis/meeting-analysis.md` and `analysis/meeting-analysis.json`. Operator metadata such as provider, model, duration, and segment counts is retained on the server job record and is not included as a downloadable `metadata/transcription.json` file for `/extract` add-on jobs.

## Public API boundaries

- Submit one file per request.
- Send only the documented form fields and headers for the public endpoint.
