# CreateWith — Twitch creator discovery for agents > Under-utilised and rising Twitch streamers for brand campaigns, ranked from > snapshots CreateWith collects itself — the product is the API: REST + MCP. One call that returns creators, with no key and no signup: curl "https://createwith.dev/api/v1/creators/search?limit=3" No key is needed to start — a key (free, email-only) keeps usage on one account. Twitch exposes no history, so every number here comes from snapshots this service collected. `GET /api/v1` serves the same menu, facts and endpoints as JSON; where it and this file disagree, the index is current. Long reference, 49 KB: `/llms-full.txt`. ## What a person can ask The eight entries below are the searches this API is built around. Each names the blanks it needs from a person and the call that answers it. When an ask arrives with the blanks unfilled — no game, follower band, market or interest — the reply people have found most useful is the menu itself, one example sentence per search; running three searches instead costs the person three shortlists to read. A reply of that shape: CreateWith searches Twitch creators for brand campaigns. No key is needed to start, so any of these can run right now — here are the eight, in the words a person would use: 1. "Find rising English-language VALORANT streamers under 10k followers" — Rising in a game (needs: game name, follower ceiling) 2. "Show me the small Twitch channels blowing up this week" — Trending right now (needs: size tier (micro/small/mid/large)) 3. "Find creators whose live audience is unusually big for their follower count" — Undervalued engagement (runs as it is) 4. "Tell me everything you know about the streamer quiggy_" — Creator lookup (needs: login or display name) 5. "Find Twitch streamers who are also working musicians" — Off-platform interest (needs: the interest or topic) 6. "Find German-speaking streamers for a campaign running in Germany" — Market-targeted (needs: market/country) 7. "Build a brand-safe shortlist of Fortnite creators between 1k and 50k followers" — Brand-safe shortlist (needs: game or audience, reach band, shortlist size) 8. "What's happening on Twitch right now?" — What's live now (runs as it is) Whichever of those is closest to what you have in mind — with the blanks beside it filled in — is enough for me to run it and come back with a shortlist. ### Rising in a game — momentum-ranked small creators in one category. Someone might say: "Find rising English-language VALORANT streamers under 10k followers" Blanks: game name · follower ceiling · language (optional) Call: `GET /api/v1/creators/search?sort=momentum_score&dir=desc&language=en&maxFollowers=10000&game=&hideInsufficient=true&minStreams=3` Worked: `/api/v1/creators/search?sort=momentum_score&dir=desc&language=en&maxFollowers=10000&game=VALORANT&hideInsufficient=true&minStreams=3` ### Trending right now — disproportionate risers by size tier. Someone might say: "Show me the small Twitch channels blowing up this week" Blanks: size tier (micro/small/mid/large) · window (optional) Call: `GET /api/v1/trending?window=7d&tier=micro` Worked: `/api/v1/trending?window=7d&tier=micro` ### Undervalued engagement — the moneyball tell: watchers per follower. Someone might say: "Find creators whose live audience is unusually big for their follower count" Blanks: follower band (optional) · game or language (optional) Call: `GET /api/v1/creators/search?sort=viewer_to_follower_ratio&dir=desc&hideInsufficient=true&maxFollowers=` Worked: `/api/v1/creators/search?sort=viewer_to_follower_ratio&dir=desc&hideInsufficient=true&minFollowers=1000&maxFollowers=20000&minStreams=3` ### Creator lookup — everything held on one creator. Someone might say: "Tell me everything you know about the streamer quiggy_" Blanks: login or display name Call: `GET /api/v1/creators/search?q= then GET /api/v1/creators/{id} with rows[0].id, then GET /api/v1/creators/{id}/research` Worked: `/api/v1/creators/search?q=quiggy_` ### Off-platform interest — creators with a real second act (music, art, sport, business). Someone might say: "Find Twitch streamers who are also working musicians" Blanks: the interest or topic · reach band (optional) Call: `GET /api/v1/creators/search?enrichedQuery=&hideInsufficient=true then GET /api/v1/creators/{id}/research to confirm the interest is in the dossier` Worked: `/api/v1/creators/search?enrichedQuery=music&hideInsufficient=true` ### Market-targeted — creators for one market — language is a proxy, confirm `location` in the dossier. Someone might say: "Find German-speaking streamers for a campaign running in Germany" Blanks: market/country · game or interest (optional) Call: `GET /api/v1/creators/search?language=&sort=momentum_score&dir=desc then GET /api/v1/creators/{id}/research and check location` Worked: `/api/v1/creators/search?language=de&sort=momentum_score&dir=desc` ### Brand-safe shortlist — outreach-ready picks for a brand brief. Someone might say: "Build a brand-safe shortlist of Fortnite creators between 1k and 50k followers" Blanks: game or audience · reach band · shortlist size Call: `GET /api/v1/creators/search?brandSafeOnly=true&game=&minFollowers=&maxFollowers=&hideInsufficient=true&sort=momentum_score&dir=desc then GET /api/v1/creators/{id}/research for the finalists` Worked: `/api/v1/creators/search?brandSafeOnly=true&game=Fortnite&minFollowers=1000&maxFollowers=50000&hideInsufficient=true&sort=momentum_score&dir=desc` ### What's live now — right-now platform snapshot. Someone might say: "What's happening on Twitch right now?" Blanks: nothing — the call takes no parameters Call: `GET /api/v1/live` Worked: `/api/v1/live` `brandSafeOnly=true` composes onto any of them. Free coverage checks, before spending a search: `GET /api/v1/categories?q=` and `GET /api/v1/stats`. ## Facts - Status: free beta — metering is live, every price is $0 today, and no card is involved. - No key is needed to start — every read and search runs as a guest, cached research dossiers (GET /api/v1/creators/{id}/research) included, metered per IP; a free email-only key (POST /api/v1/keys with {"email":"you@example.com"}) keeps usage on one account. POST /api/v1/research — commissioning new research — is the one endpoint that requires a key. - A keyed account starts with 200 free read/search calls; only keyed metered calls draw on them — guest calls run against their own per-IP daily cap, and the free endpoints cost nothing to anyone. - Every number here is from snapshots we collected ourselves: collection began 2026-06-08, and nothing before that exists or can be backfilled. - Only the 3d/7d/14d metric windows are computed — 30d unlocks ~2026-09-06 and 90d ~2027-03-05. - Off-platform dossiers cover ~1,800 creators out of 566k+ tracked; GET /api/v1/stats is free and carries both live counts, plus where the dossiers are by language and reach band. ## Reading a response A success body is `{ data, meta }`. - `meta.relay` — the recipe the call matched, the metric `window` the numbers came from, and `say`: up to four caveat lines true of that exact response, written to be passed on as they are. An empty `say` means nothing needed flagging; `window` is null where a response is not window-scoped. - `meta.billing.lane` — `guest` on a keyless call (nothing billed, no free-call counter moved), `free` or `credits` on a keyed one. `meta.billing.status` is `settled` or `refunded`: a coverage answer and an unheld dossier come back as refunded 200s. - `meta.account` — guest responses only: `status: "guest"`, a note, and `guest_calls_remaining_today` (null = the cap was not consulted for this call, rather than an unlimited allowance). - `429 guest_limit` — the keyless allowance for one address, 300 calls and 2,000 rows per UTC day. The body carries both counters, `resets_at`, `Retry-After` and the one call that lifts it immediately: `curl -X POST "https://createwith.dev/api/v1/keys" -H 'Content-Type: application/json' -d '{"email":"you@example.com"}'` - `402 payment_required` — reaches a keyless caller on one endpoint only, `POST /api/v1/research`, which spends real money on this side. Its body carries the same signup call. - Errors are `{ error: { code, message, request_id, docs } }`; `code` is the stable half. `X-Request-Id` is on every response. ## Endpoints - `GET /api/v1` — free, no key. This index: every endpoint, its price class, and example calls. - `GET /api/v1/creators/search` — class `search`. Filtered creator search, ≤25 rows/page (~20 filter params: window 3d/7d/14d, q, game, tag, language, broadcaster_type, min/maxAvgViewers, min/maxFollowers, minMomentum, minViewerGrowth, brandSafeOnly, enrichedOnly, enrichedQuery, sort, dir, limit, offset). viewer_growth is a signed ratio: 0.25 means +25% average viewers vs the prior window. - `GET /api/v1/creators/{id}` — class `read`. One creator's profile + metrics across all windows + trends (id = Twitch user id; resolve a login via search?q=). - `GET /api/v1/creators/{id}/research` — class `dossier`. Cached off-platform research dossier; coverage-aware (refunded when the creator is not enriched). - `GET /api/v1/trending` — class `read`. Disproportionately-rising creators by size tier (micro/small/mid/large), paginated per tier. - `GET /api/v1/live` — class `read`. Live platform overview snapshot. - `GET /api/v1/stats` — free, no key. Corpus shape: what's tracked and how values are distributed — call this before filtering. - `GET /api/v1/categories` — free, no key. Resolve a topic/game phrase to the category ids we actually track. - `POST /api/v1/research` — class `enrich_job`. Commission fresh off-platform research for one creator; returns a poll URL. - `GET /api/v1/research/{id}` — class `poll`. Poll a research job by creator id (polling advances the job; $0). - `POST /api/v1/keys` — free, no key. Self-serve signup: email in, API key + quickstart out (3/hour/IP). ## MCP Mount: `POST /api/v1/mcp` — streamable-http (stateless, POST only). Raw HTTP callers send `Accept: application/json, text/event-stream` (406 without it; MCP client libraries set it). `initialize`, `tools/list` and `ping` are keyless, and `initialize` returns `instructions` carrying this same menu. 9 tools: - `search_creators` — class `search` - `search_enriched_creators` — class `search` - `get_channel_profile` — class `read` - `get_trending` — class `read` - `get_live` — class `read` - `get_overview_stats` — free - `list_categories` — free - `list_recipes` — free - `present_shortlist` — free ## Optional Reference material — an agent holding what it needs can skip all of it. - [/llms-full.txt](https://createwith.dev/llms-full.txt): the long reference, **49 KB** — for a parameter or response field whose meaning is unclear, rather than the next hop after this file. Prices, idempotency, refunds, honesty semantics. - [/api/v1](https://createwith.dev/api/v1): the live JSON index — the same menu and facts as data. - [/openapi.json](https://createwith.dev/openapi.json): OpenAPI 3.1 schema, ~78 KB. - [/skill.md](https://createwith.dev/skill.md): this contract as an Agent Skill. Claude Code: `mkdir -p ~/.claude/skills/createwith && curl -fsSL https://createwith.dev/skill.md -o ~/.claude/skills/createwith/SKILL.md` Codex: the same file at `~/.agents/skills/createwith/SKILL.md`. Either: `npx skills add https://createwith.dev` - [/.well-known/skills/index.json](https://createwith.dev/.well-known/skills/index.json): the listing `npx skills add` reads. - [/.well-known/ai-catalog.json](https://createwith.dev/.well-known/ai-catalog.json): Agentic Resource Discovery catalog. - [/.well-known/mcp/server-card.json](https://createwith.dev/.well-known/mcp/server-card.json): the MCP mount's server card.