---
title: "Admin Run Extraction"
method: POST
path: "/v2/admin/media/run-extraction"
tags: ["v2 - Admin"]
---

# Admin Run Extraction

`POST /v2/admin/media/run-extraction`

## Request

- Base URL: `https://api.jubjubapp.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.jubjubapp.com/v2/admin/media/run-extraction`
- Auth: HTTP bearer

Trigger L0/L1/L2 metadata extraction for a creator's content (or all
content when profile_id is null, capped at 200). Admin-only.

BYOK only — each layer runs on the content owner's connected AI key. JubJub
never pays. Returns immediately; extraction runs as background tasks.

Skip logic (force=false): a layer already done for a piece is skipped —
  l0 done = `provenance` key in media_metadata_v1/{content_id}
  l1 done = `transcript` key in media_metadata_v1/{content_id}
  l2 done = intelligence_status == "complete" in media_metadata_v1
force=true queues every requested layer regardless. Counts are per
(content, layer): `queued` is layer-tasks fired, `skipped` is layer-tasks
skipped (already done, or no owner to bill).

## Headers

- `Authorization` string
- `X-JubJub-Service-Key` string
- `X-JubJub-Agent-Key` string
- `X-JubJub-Platform-Key` string
- `Origin` string
- `Referer` string
- `X-JubJub-Trial-Token` string

## Request body

- RunExtractionRequest
  - `profile_id` string, nullable
  - `layers` string[]
  - `force` boolean

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/jubjubapp/apis/jubjub-api.md) - [All operations](https://skmtc.dev/jubjubapp/apis/jubjub-api/llms.txt) - [OpenAPI document](https://skmtc.dev/jubjubapp/apis/jubjub-api/revisions/353157b296f2?raw)
