# DispatchHashtagCapture

> Spends credits; prefer start_capture. Paid hashtag capture into a campaign. Resolve the… Write access, capture toolset, MCP tool dispatch_hashtag_capture.

Spends credits; prefer start_capture. Paid hashtag capture into a campaign. Resolve the campaign before dispatching: runs cannot be re-filed.

> **Warning:**
> This operation removes or replaces something. MCP clients see it with `destructiveHint` set, and an agent should tell you what it will change and wait for your yes.

> **Warning:**
> This operation spends capture credits, and the balance gate is the real limit on it. Prefer the `start_capture` tool, which quotes the cost first (`quote_capture`) and only runs at a price the merchant approved.

**Access:** [Write](https://developer.missin.co.uk/get-started/authentication.md#access-levels)

## Variables

| Variable | Type | Required | Accepts | Description |
|---|---|---|---|---|
| `campaignId` | `UUID!` | yes |  |  |
| `cap` | `Int!` | yes | 32-bit integer | Per hashtag per run — required. TikTok reads at most 800, the others 250. |
| `caps` | `JSON` | no | Any JSON value | Per-surface caps keyed by surface, e.g. tiktok-hashtag: 55 — a surface not listed reads cap. |
| `hashtags` | `[String!]!` | yes |  |  |
| `mode` | `String` | no |  | Instagram only: posts \| reels \| both (both = two runs). |
| `quotedCredits` | `Float` | no |  | The flow's 'up to' as the dialog summed it. Refused with quote_changed if the sum differs. |
| `surfaces` | `[String!]!` | yes |  | instagram-hashtag \| tiktok-hashtag \| youtube-hashtag |

## Call it

```bash curl
curl https://api.missin.co.uk/graphql/v1 \
  -H "Authorization: Bearer $MISSIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"operationName":"DispatchHashtagCapture","variables":{"campaignId":"00000000-0000-0000-0000-000000000000","cap":20,"hashtags":[],"surfaces":[]},"extensions":{"persistedQuery":{"version":1,"sha256Hash":"a86022d9d091108d3b68afc3923c62f0ecd741d64f2c185c8c48936320492636"}}}'
```

## Document

```graphql
mutation DispatchHashtagCapture($campaignId: UUID!, $cap: Int!, $caps: JSON, $hashtags: [String!]!, $mode: String, $quotedCredits: Float, $surfaces: [String!]!) { __typename dispatchHashtagCapture( input: {campaignId: $campaignId, hashtags: $hashtags, surfaces: $surfaces, cap: $cap, caps: $caps, mode: $mode, quotedCredits: $quotedCredits} ) { __typename balance { __typename availableGbp } enrichmentPerVideo flowId projectedCredits runIds state userErrors { __typename code field message } } }
```

Source: https://developer.missin.co.uk/reference/capture/dispatch-hashtag-capture
