REST API · MCP · agent order

Order a UGC campaign with an AI agent.

UGC Pocket exposes a commerce layer for agents: an agent can estimate and order a campaign. The order creates a draft; a human confirms and funds it in the app.

API base https://ugcpocket.com/api · MCP https://ugcpocket.com/mcp

Draft created by agent
POST /api/campaigns → 201
status: "draft"
ordered_by_agent: true
🐶 dogTikTokvideo_post
Budget / creator€120
Confirm & fund
Human confirmation required
REST + MCP
two order surfaces
draft
confirmed by a human
€50–2000
budget per creator
30 / min
rate per API key
Getting started

An agent doesn't sign up on its own: access is bootstrapped by a human.

  1. Install the UGC Pocket app and create an organization account (brand side).
  2. Go to Profile → "API keys (agents)" and generate a ugcp_live_… key. The key is shown only once: copy it immediately.
  3. Paste the key into your agent or MCP client configuration, header Authorization: Bearer ugcp_live_….
Order model. An agent order always creates a campaign with draft status, attached to the organization that owns the key. The brand must then confirm and fund the campaign in the app ("Publish" button). No payment is triggered by the agent.
Integration surfaces

Three surfaces: llms.txt, REST API + OpenAPI, and MCP.

llms.txt

LLM-readable product discovery and context.

/llms.txt · /llms-full.txt

REST + OpenAPI

Base https://ugcpocket.com/api. OpenAPI 3.1 spec.

/openapi.json

MCP

Streamable HTTP MCP server: https://ugcpocket.com/mcp. 4 tools.

REST endpoints

Method + pathAuthRole
GET /service-infononeProduct descriptor (categories, budget floor, links).
POST /estimatenoneFree-text brief → suggested fields + indicative total.
POST /campaignsAPI keyCreates a campaign draft.
GET /campaigns/{id}API keyStatus of an owned campaign.

Connect in 10 seconds (Claude Code, Cursor…)

Discovery (initialize, tools/list, get_service_info) works without any key. Paste this into your MCP client config; add your key to order:

{
  "mcpServers": {
    "ugc-pocket": {
      "type": "http",
      "url": "https://ugcpocket.com/mcp",
      "headers": { "Authorization": "Bearer ugcp_live_YOUR_KEY" }
    }
  }
}

MCP tools: https://ugcpocket.com/mcp

ToolRole
get_service_infoProduct descriptor.
estimate_campaign{ brief } → suggested fields + indicative total.
create_campaign_orderCampaignDraftInput schema → creates a draft.
check_campaign_status{ campaign_id } → status.
Example

Order a draft (REST).

The key to the funnel: the order creates a draft. The response returns a confirm_url that opens the campaign in the app for confirmation and funding by a human.

curl -X POST https://ugcpocket.com/api/campaigns \
  -H "Authorization: Bearer ugcp_live_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"title":"Bowl launch","brief":"TikTok video…","prestation":"video_post","target_categories":["dog"],"platforms":["TikTok"],"budget_per_creator_cents":12000,"creators_wanted":5}'

Response 201: { "campaign_id":"…","status":"draft","ordered_by_agent":true,"next_step":"…","confirm_url":"https://ugcpocket.com/c/…" }

Field reference

CampaignDraftInput: the object sent to POST /campaigns.

FieldTypeDetail
title requiredstring ≤120Short campaign title.
brief requiredstring ≤2000Creative instructions, tone, constraints.
budget_per_creator_cents requiredintegerEuro cents. Min 5000 (€50), max 200000 (€2000).
creators_wanted requiredinteger1 to 50.
prestationenumugc_only (default), video_post, post_provided.
target_categoriesenum[]dog, cat, car, cooking, couple, business, podcast.
platformsenum[]TikTok, Instagram, YouTube, Snapchat, Facebook.
payment_triggerenumpublication or views.
views_thresholdintegerViews threshold (if payment_trigger=views).
deadlineISO dateYYYY-MM-DD.

Full reference schema: /openapi.json (CampaignDraftInput component, additionalProperties=false).

Constraints & limits

Budget, rate and idempotency.

Budget & quantity

Budget per creator ≥ 5000 (€50), ≤ 200000 (€2000). creators_wanted ∈ [1, 50]. EUR currency, amounts in cents. A value < 5000 is rejected (validation_error).

Rate

30 requests/minute per key; beyond that 429 + Retry-After: 60. Cap of 200 drafts/day per key.

Idempotency

Optional Idempotency-Key header on POST /campaigns to replay a request without creating a duplicate.

Error codes

invalid_api_key (401), rate_limited (429), validation_error (422), not_found (404), internal (500).

Consumer-side limitation. The MCP connectors of consumer claude.ai currently only accept OAuth authentication, not a bearer key. The UGC Pocket MCP server is therefore mainly used via custom-header clients (Claude Code, Cursor, etc.). The REST API remains usable everywhere with the bearer key. An OAuth MCP connector is a future iteration.
Agent FAQ

Frequently asked questions.

Can an AI agent pay for a campaign automatically?

No. An agent order always creates a campaign with draft status. The brand must confirm and fund the campaign in the app; no payment is triggered by the agent.

How do I get an API key?

A human installs the app, creates an organization account, then generates a ugcp_live_… key in Profile → "API keys (agents)". The key is shown only once.

What budget limits apply to an order via the API?

Budget per creator from €50 to €2000 (budget_per_creator_cents from 5000 to 200000) and 1 to 50 creators per campaign.

What are the rate limits?

30 requests/minute per key (429 + Retry-After: 60 beyond that), with a cap of 200 drafts/day per key.

Ready to plug in your agent?

Start with the OpenAPI schema and the llms.txt file, then create your first draft.

An integration question? support@ugcpocket.com