---
title: "Start content match analysis"
method: POST
path: "/v1/creators/content-match"
tags: ["Analysis"]
---

# Start content match analysis

`POST /v1/creators/content-match`

## Request

- Base URL: `https://api.toksta.com`
- URL: `https://api.toksta.com/v1/creators/content-match`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/toksta/apis/toksta-public-api/docs/v1/creators/content-match/post.ts> (a function with typed inputs; its response is checked against the schema)

Start LinkedIn content-fit analysis for a creator selection. Requires a user-scoped key.

**Selection (provide exactly one):** `creator_ids`, `result_set_id`, or `result_set_ids`.

**Topic criteria:** for ad hoc runs (no `campaign_id`) you MUST provide `topic_keywords` (array of strings). The field is `topic_keywords`, NOT `topics`. When `campaign_id` is supplied, criteria are read from the campaign instead.

Returns `202` with **prefixed** job IDs in the form `content-fit:<uuid>` under `data.job_ids` and `data.jobs[].job_id`. `jobs_created` is 0 for creators already analyzed. Use those IDs with `POST /v1/content-match/results`. Cost: 3/5/8 credits per analysis based on `posts_to_analyze` (10/20/30).

## Request body

- object
  - `creator_ids` string[]: Creator UUIDs to operate on. Takes precedence over result_set_id / result_set_ids when provided.
  - `result_set_id` string: A single `result_set_id` returned by a prior discovery search. Resolved to its ranked creators.
  - `result_set_ids` string[]: Multiple result set IDs to merge (dedupe) into one creator selection.
  - `top_n` integer: When selecting from result set(s), take only the top N ranked creators.
  - `ranks` integer[]: When a single result_set_id is provided, select specific 1-based ranks (e.g. [1,3,5]).
  - `campaign_id` string: Optional campaign UUID. When set, content criteria come from the campaign.
  - `campaign_brief` string: Optional human-readable brief used as the analysis name.
  - `topic_keywords` string[]: Topic keywords for ad hoc content match. REQUIRED when no campaign_id is provided. (Alias: `keywords`.)
  - `linkedin_content_types` string[]: Optional content-type filter.
  - `posts_to_analyze` 10 | 20 | 30: Posts analyzed per creator. 10 (3cr), 20 (5cr), or 30 (8cr). Defaults to 10.

## Response `202`

Content match jobs queued. Job IDs are prefixed `content-fit:<uuid>`.

- object: Content match jobs queued. Job IDs are prefixed `content-fit:<uuid>`.
  - `success` true, required
  - `data` object, required: Operation payload. See the example for the exact field structure.
  - `meta` object, required
    - `request_id` string, required
    - `trace_id` string

## Other responses

- `400`: Bad request or validation error (`BAD_REQUEST` / `VALIDATION_ERROR`).
- `401`: Missing, invalid, or revoked API key.
- `402`: Insufficient credits for this operation.
- `403`: API access disabled or workspace entitlement required.
- `404`: Resource not found, or result expired past retention.
- `429`: Rate limit exceeded — back off per `Retry-After`.
- `500`: Unexpected server error.
- `501`: Endpoint is registered but not implemented yet.

---

[API](https://skmtc.dev/toksta/apis/toksta-public-api.md) - [All operations](https://skmtc.dev/toksta/apis/toksta-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/toksta/apis/toksta-public-api/revisions/a8cf8189fdd1?raw)
