--- title: "GET /creators/{id}: One creator's full profile | distribution.tech" description: "Scope: creators:read." canonical: https://distribution.tech/docs/api/get-creators-id generator: md-live-route generated: 2026-10-21T12:28:39.234Z --- # GET /creators/{id}: One creator's full profile | distribution.tech - [Getting started](https://distribution.tech/docs) - [API reference](https://distribution.tech/docs/api) - [MCP and agents](https://distribution.tech/docs/agents) - [Changelog](https://distribution.tech/docs/changelog) Search the docs Docs - Using the API › - [API reference](https://distribution.tech/docs/api) - [Authentication](https://distribution.tech/docs/api/authentication) - [Scopes](https://distribution.tech/docs/api/scopes) - [Errors](https://distribution.tech/docs/api/errors) - Inventory and audience › - [GET /audience](https://distribution.tech/docs/api/get-audience) - [GET /inventory](https://distribution.tech/docs/api/get-inventory) - Creators › - [GET /creators](https://distribution.tech/docs/api/get-creators) - [GET /creators/{id}](https://distribution.tech/docs/api/get-creators-id) - [POST /creators/{id}/price-request](https://distribution.tech/docs/api/post-creators-id-price-request) - Campaigns › - [GET /campaigns](https://distribution.tech/docs/api/get-campaigns) - [POST /campaigns](https://distribution.tech/docs/api/post-campaigns) - [GET /campaigns/{id}](https://distribution.tech/docs/api/get-campaigns-id) - [PATCH /campaigns/{id}](https://distribution.tech/docs/api/patch-campaigns-id) - [DELETE /campaigns/{id}](https://distribution.tech/docs/api/delete-campaigns-id) - [POST /campaigns/{id}/archive](https://distribution.tech/docs/api/post-campaigns-id-archive) - [POST /campaigns/{id}/creator-guidelines](https://distribution.tech/docs/api/post-campaigns-id-creator-guidelines) - Plans › - [POST /plans/{id}/approve](https://distribution.tech/docs/api/post-plans-id-approve) - [POST /plans/{id}/dates](https://distribution.tech/docs/api/post-plans-id-dates) - [POST /plans/{id}/lines](https://distribution.tech/docs/api/post-plans-id-lines) - [GET /plans/{id}/quote](https://distribution.tech/docs/api/get-plans-id-quote) - [DELETE /plans/{id}/lines/{line\_id}](https://distribution.tech/docs/api/delete-plans-id-lines-line-id) - [POST /plans/{id}/lines/{line\_id}/swap](https://distribution.tech/docs/api/post-plans-id-lines-line-id-swap) - Proof and results › - [GET /evidence](https://distribution.tech/docs/api/get-evidence) - [GET /results](https://distribution.tech/docs/api/get-results) - Company context › - [GET /brain](https://distribution.tech/docs/api/get-brain) - Feedback › - [GET /feedback](https://distribution.tech/docs/api/get-feedback) - [POST /feedback](https://distribution.tech/docs/api/post-feedback) 1. [distribution](https://distribution.tech/) 2. / [Docs](https://distribution.tech/docs) 3. / [API reference](https://distribution.tech/docs#api) 4. / Creators API reference, Creators # One creator's full profile GET /creators/{id} Scope: creators:read. Copy page as markdown [View .md](https://distribution.tech/docs/api/get-creators-id.md) ## Overview Scope: creators:read. One creator by the id a GET /creators row carries (a UUID), at /api/v1/creators/{id}. There is no lookup by X handle: no creator read carries a handle or an x.com link (the handle shows on a paid plan's quote), and this profile is opened by id only. MCP tool: creator\_get. Endpoint `GET https://app.distribution.tech/api/v1/creators/{id}` Scope `creators:read` Changes data No, a read MCP tool [creator\_get](https://distribution.tech/docs/mcp/tools/creator-get) ## Parameters | Name | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | string (uuid) | Yes | The creator's id from a GET /creators row (a UUID). | | `goal` | query | one of "launch", "funding", "feature", "program" | No | The campaign's goal: launch, funding or feature (an announcement with a post of yours to quote) or program (steady reach). Shapes the format advice. | ## Request with curl Set `DISTRIBUTION_API_KEY` to a key from Developers with the `creators:read` scope, and each path variable to an id from an earlier answer. The body carries the required fields. curl ``` curl "https://app.distribution.tech/api/v1/creators/$CREATOR_ID" \ -H "Authorization: Bearer $DISTRIBUTION_API_KEY" ``` ## Response `200` OK. The body has these fields: | Name | Type | Required | Description | | --- | --- | --- | --- | | `provenance` | object | No | DT-159: where each of the creator's measured numbers came from, one entry per stat (served since DT-159; documented from 1.25.2, DT-160). | | `id` | string (uuid) | No | | | `handle` | string or null | No | Null in every creator read: a creator is named before payment, and its X handle shows once the brand's order for a plan with that creator is paid, on that plan's quote (plan\_quote). | | `name` | string or null | No | | | `url` | string or null | No | Null in every creator read, as handle: the X profile link shows on the paid plan's quote. | | `status` | one of "approved", "borderline", "not\_reviewed", "declined" | No | | | `status_label` | string | No | | | `status_reason` | string | No | | | `in_automatic_plans` | boolean | No | | | `match_score` | integer or null | No | | | `match_label` | string or null | No | | | `on_sale` | boolean | No | | | `reach_band` | one of "nano", "micro", "mid", "macro", "mega" | No | The creator's size by followers, smallest to largest. | | `median_views_30d` | integer or null | No | Deprecated: the same number as median\_views\_30d\_network. Removed on 2027-01-11; read median\_views\_30d\_network. | | `median_views_30d_network` | integer or null | No | Median views per post over the creator's last 30 days, as the network measures it across all their posts. Prices, expected views and format advice use this number. It can differ from posts\_summary.posts\_sample\_median\_views, which covers only the posts we hold. | | `followers` | integer or null | No | X followers, as the network last measured them. Null when not measured. | | `verified_badge` | boolean or null | No | Whether the account carries the X blue check. Null when unknown. | | `country` | string or null | No | The country or region X shows on the account's About panel. Null when X shows none; never inferred. | | `language` | string or null | No | The language the creator posts in, as a name (for example English). Null when unknown. | | `segments` | array of string | No | | | `bio` | string or null | No | | | `positioning` | string or null | No | One line on who the creator is, taken from their own bio (never written by us); null when the bio has none. | | `avatar_url` | string or null | No | | | `ask_price` | boolean | No | true when nothing is on sale for this creator: the action is Ask for a price (creator\_ask\_price, POST /creators/{id}/price-request), which asks our team, never the creator; price\_estimate is an estimate, never a price. false when a format is on sale: add it from offerings with plan\_add\_creator. | | `price_estimate` | object or null | No | For a creator with nothing on sale: an estimated price range from its metrics (the ERP's suggested budget band), never a price; null when it has a price. Ask for a price (creator\_ask\_price, POST /creators/{id}/price-request) asks our team for a real one; the creator is never contacted directly. | | `engagement_rate_30d` | number or null | No | | | `posts_per_week` | number or null | No | | | `match_reasons` | array of object | No | Why this creator (row 7858), each from a number the network holds: topic (the brand's segments the creator posts about; a topic match, not audience overlap), reach (median views a post over 30 days, with its as-of date), past\_launches (launches posted about), engagement (only when above the median of the creators listed). Empty when none can be said; never a price. | | `past_collabs` | array of object | No | Launches the creator posted or quoted among the launches the network tracks, newest first (at most 12), then detected paid partnerships. An empty list means none was found in the launches we track, not that the creator never worked with a brand. | | `recent_posts` | array of object | No | The creator's own posts with their numbers, newest first: up to 30 from the last 30 days for an approved creator. | | `posts_summary` | object or null | No | posts\_sample\_median\_views is the median over the posts in recent\_posts only (at most 30 held posts), so it can differ from median\_views\_30d\_network, which covers all the creator's posts. Counted from recent\_posts: null unless 3 or more dated posts fall in the 30 days up to as\_of. A summary of their posts; top\_post.excerpt quotes the creator's own post. | | `offerings` | array of object | No | | | `synced_at` | string (date-time) or null | No | When the creator's profile and posts were last synced (ISO 8601). Null when unknown. | | `refresh_failed_at` | string (date-time) or null | No | When the last nightly refresh of this creator failed (ISO 8601); null when the last refresh worked or none has run. The figures then stay as of synced\_at. | | `advice` | object | No | | 200 response body, every field with its type ``` { "provenance": { "followers": { "source": "", "method": "", "measured_at": "", "expires_at": "", "label": "Verified", "stale": false, "as_of": "" }, "median_views_30d": { "source": "", "method": "", "measured_at": "", "expires_at": "", "label": "Verified", "stale": false, "as_of": "" }, "engagement_rate_30d": { "source": "", "method": "", "measured_at": "", "expires_at": "", "label": "Verified", "stale": false, "as_of": "" } }, "id": "", "handle": "", "name": "", "url": "", "status": "approved", "status_label": "", "status_reason": "", "in_automatic_plans": false, "match_score": 0, "match_label": "", "on_sale": false, "reach_band": "nano", "median_views_30d": 0, "median_views_30d_network": 0, "followers": 0, "verified_badge": false, "country": "", "language": "", "segments": [ "" ], "bio": "", "positioning": "", "avatar_url": "", "ask_price": false, "price_estimate": { "min_usd": 0, "max_usd": 0, "label": "", "provenance": { "source": "", "method": "", "measured_at": "", "expires_at": "", "label": "Verified", "stale": false, "as_of": "" }, "calc": { "calc_version": "", "inputs": {} } }, "engagement_rate_30d": 0, "posts_per_week": 0, "match_reasons": [ { "kind": "topic", "text": "" } ], "past_collabs": [ { "project": "", "title": "", "date": "", "role": "Launch post", "url": "", "brand": { "handle": "", "avatar_url": "", "site": "", "initials": "" } } ], "recent_posts": [ { "url": "", "text": "", "posted_at": "", "views": 0, "likes": 0, "reposts": 0, "replies": 0, "quotes": 0 } ], "posts_summary": { "posts": 0, "window_days": 0, "capped": false, "median_views": 0, "posts_sample_median_views": 0, "top_post": { "url": "", "views": 0, "excerpt": "" }, "recurring": [ "" ], "latest_at": "", "as_of": "" }, "offerings": [ { "unit_id": "", "format": "post", "label": "", "deliverable": "", "price_cents": 0, "buyable": false, "price_as_of": "", "expected_views": 0, "cost_per_1k_views_cents": 0, "provenance": { "source": "", "method": "", "measured_at": "", "expires_at": "", "label": "Verified", "stale": false, "as_of": "" }, "calc": { "calc_version": "", "inputs": {} } } ], "synced_at": "", "refresh_failed_at": "", "advice": { "recommended": "post", "reason": "" } } ``` ## Errors | Status | When | | --- | --- | | `400` | A parameter is not valid: details.problems names each field and what it accepts. | | `401` | No API key, an unknown one, or a revoked one. | | `403` | The key does not have this endpoint's scope. | | `404` | No approved creator has that id. | | `429` | Too many requests for this key in the current minute (60); Retry-After and RateLimit-Reset say when to try again. On POST /campaigns and on POST /plans/current/lines when it starts a plan: the brand's 3 new campaigns in 24 hours are used (details.reason daily\_campaign\_limit); details.resets\_at and Retry-After say when the limit reopens, a rolling 24 hours from the first of them, not a calendar day; archiving or deleting a campaign does not give its slot back. On GET /creators and GET /creators/{id}: a creator read limit is used (details.reason per\_minute, daily\_lists, daily\_reveals, daily\_seen or locked). daily\_seen is your workspace's one pool of 300 creator views a day (300 different creators shown or opened since midnight UTC), shared by the app and every API key of the brand: details.scope workspace and details.limit 300; a creator already seen today, in the app or through any key, still opens and costs nothing. The other reasons are this key's own limit (details.scope key) or the brand's ceiling over all its keys (details.scope api). | | `500` | internal: the request failed on our side. Try again. | | `503` | unavailable: the service or this part of it is not reachable right now. Try again shortly. | ## Related endpoints - [`GET /creators`](https://distribution.tech/docs/api/get-creators): Approved creators on sale now, by name, with price per format and format advice - [`POST /creators/{id}/price-request`](https://distribution.tech/docs/api/post-creators-id-price-request): Ask for a price ## Get access Keys are created in Developers once your brand is approved. [Connect an agent](https://distribution.tech/distribution#access) to ask for access, then read [the agent guide](https://distribution.tech/docs/agents) for the full flow. On this page - [Overview](#overview) - [Parameters](#parameters) - [Request with curl](#curl) - [Response](#response) - [Errors](#errors) - [Related endpoints](#related) - [Get access](#access) [![distribution.tech](https://distribution.tech/brand/wordmark-light.svg)![distribution.tech](https://distribution.tech/brand/wordmark.svg)](https://distribution.tech/) Your agent buys your distribution. Distribution we run for - ClickUp - Gushwork - Tab Platform - [How it works](https://distribution.tech/how-it-works) - [Network](https://distribution.tech/network) - [Workspace](https://app.distribution.tech/login) - [For your agents](https://distribution.tech/distribution) Solutions - [Product launch](https://distribution.tech/solutions/product-launch) - [Funding announcement](https://distribution.tech/solutions/funding-announcement) - [Feature release](https://distribution.tech/solutions/feature-release) - [For brands](https://distribution.tech/for-brands) - [For creators](https://distribution.tech/for-creators) Resources - [Blog](https://distribution.tech/blog) - [Launch playbook](https://distribution.tech/playbook) - [X creator rates](https://distribution.tech/rates/x-creators) Company - [Customers](https://distribution.tech/customers) - [Pricing](https://distribution.tech/pricing) - [Changelog](https://distribution.tech/changelog) - [Build a distribution plan](https://app.distribution.tech/login) - [Join the creator network](https://distribution.tech/for-creators#apply) - [Log in](https://app.distribution.tech/login) Legal - [Privacy](https://distribution.tech/privacy) - [Terms](https://distribution.tech/terms) © 2026 distribution.tech [Contact: team@distribution.tech](mailto:team@distribution.tech)Cookie settings Light Dark System