# Creator profile (creator_card)

POST /v1/tools/creator_card runs Creator profile, a ready-made tool that returns one creator across platforms: the accounts found for the same person, with followers, posts, engagement and how strong the evidence is that each is theirs. It reads 15 platforms and costs from 14 credits a run. Send max_cost_credits and a run that would cost more is refused for free, with the quote. A run that fetches nothing is not charged.

- Page: https://socialtoai.com/docs/tools/creator-card/
- Last updated: 2026-10-17

- POST: `https://api.socialtoai.com/v1/tools/creator_card`

To fill it in on the site, or to see what its result looks like, open [Creator profile](https://socialtoai.com/tools/creator-card.md).

## Request

A JSON body with the tool's own inputs. The key goes in the `Authorization` header, as on every call.

| Name | Type | Required | What it is |
| --- | --- | --- | --- |
| `creator` | string | Yes | A link to the creator's page. |
| `platforms` | string[] | No | The other platforms to look on: up to 3, or 6 with scale medium. Left out: the usual three for the platform the creator starts on, as far as each is offered; the answer names them. |
| `scale` | string | No | medium adds a sample of the comments under the creator's latest posts and, where the platform has one, the creator's marketplace profile. Values: `small`, `medium` (default `small`). |
| `max_cost_credits` | integer | No | Refused, free, with the quote, if the run would cost more. |
| `confirm` | boolean | No | true: run it whatever it costs. false: answer the plan and its price, and run nothing. Left out: a costly run, and one that runs in the background, answers its price first. |

**cURL**

```
curl https://api.socialtoai.com/v1/tools/creator_card \
  -H "Authorization: Bearer $SOCIALTOAI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "creator": "https://www.tiktok.com/@nasa",
    "scale": "small"
  }'
```

**Python**

```
import os
import requests

response = requests.post(
    "https://api.socialtoai.com/v1/tools/creator_card",
    headers={"Authorization": f"Bearer {os.environ['SOCIALTOAI_KEY']}"},
    json={
        "creator": "https://www.tiktok.com/@nasa",
        "scale": "small",
    },
)
print(response.json())
```

## Depths and credits

`scale` picks the depth. A depth has one price on each platform, stated before the run.

| Depth | scale | What it reads | From (credits) | How it runs | On the 100 free credits |
| --- | --- | --- | --- | --- | --- |
| Small | `small` | Looks on up to 3 other platforms. | 14 | runs while you wait | Yes |
| Medium | `medium` | Looks on up to 6 other platforms, samples the comments under 3 recent posts, and adds the creator marketplace profile where the platform has one. | 34 | runs while you wait | On 9 of 11 platforms |

## Credits by platform

The table is for one creator, starting on this platform, looked for on the default platforms. For several links, the quote states the total.

| Platform | Small | Medium |
| --- | --- | --- |
| TikTok | 35 | 59 |
| Instagram | 22 | 34 |
| X | 22 | 46 |
| Reddit | 35 | 47 |
| Facebook | 35 | 47 |
| LinkedIn | 35 | — |
| Threads | 35 | — |
| Telegram | 35 | — |
| Xiaohongshu | 46 | — |
| Douyin | 14 | 38 |
| WeChat Articles | 46 | 100 |
| Bilibili | 22 | 46 |
| Zhihu | 26 | 44 |
| Kuaishou | 46 | 76 |
| WeChat Channels | 46 | 100 |

## What a result holds

| Part | What it holds |
| --- | --- |
| Accounts by platform | The accounts found on each platform, with followers, posts and engagement. |
| Identity evidence | How strong the evidence is that each account belongs to the same person. Without links that point at each other, the most it says is “likely”. |
| Main number | Followers across platforms |

## Quote or run: confirm

The same request either runs or comes back as a quote. `confirm`, a boolean beside the tool's inputs, decides which:

| confirm | What comes back |
| --- | --- |
| `false` | The quote, always. Free: nothing is reserved, fetched or charged. |
| left out | The run, when it costs at most 100 credits and is answered within the request. Above that, or when the plan runs in the background (`quote.mode` is `background`), the quote first. |
| `true` | The run, charged at most what the quote states. A run that cannot be made is refused for free with `not_supported`; it is never answered with a quote you did not ask for. |

A run's answer carries a `handle`: for 24 hours the whole result can be read again with it, for free. [Results and handles](https://socialtoai.com/docs/api/results.md) has the details. The same request sent again under its `Idempotency-Key` returns the first run's answer and costs 0.

## The quote

A quote is the plan of exactly this request and the most a run of it is charged. Nothing is reserved, fetched or charged for it. `status` is `quote`.

| Field | Type | What it is |
| --- | --- | --- |
| `request_id` | string | The id of this request. |
| `schema_version` | "v1" | The version of the response format. |
| `tool` | string | The tool the quote is for. |
| `scale` | "small" \| "medium" \| "large" \| null | The depth the quote is for; `null` for a tool priced by the row. |
| `status` | "quote" | `quote`: nothing was reserved, fetched or charged. |
| `quote.credits` | integer | The most the run is charged. |
| `quote.parts.data_first` | integer | The first half of the fetching price. |
| `quote.parts.data_second` | integer | The second half of the fetching price. Not charged when less than half of the planned reading comes back. |
| `quote.parts.analysis` | integer | The price of the AI analysis. Charged only when at least nine in ten of the delivered rows were analysed. |
| `quote.mode` | "sync" \| "background" | `sync`: answered within the request. `background`: answered with a handle, and run in waves. |
| `quote.waves` | integer | How many waves a background run is made of; 1 for a run answered within the request. |
| `quote.estimated_seconds` | integer | About how long the run takes. |
| `quote.free_tier.runnable` | boolean | Whether an account that has not bought credits may run it. |
| `quote.free_tier.reasons` | string[] | When it may not, why: `cost`, `duration` or `paid_only`. |
| `quote.plan` | array | Every step in the order it runs: the platform, the action, how many targets and pages or how many batches of analysis, and its credits. |
| `quote.price_version` | string | The price version the quote was made from. |
| `billing` | object | As in every answer: see [Credits and billing](https://socialtoai.com/docs/credits-and-billing.md). |

## How a run is charged

- **You see the price first**: The total is stated before anything starts. It does not grow if there is more to read.
- **Nothing fetched, nothing charged**: If nothing could be fetched, the run is not charged. If it stops partway, you are charged only for the part that finished.
- **Each depth is one price**: A depth has a fixed price on each platform. It is not reduced when there turns out to be less to read, so start small and go deeper when you need more.
- If nothing could be fetched, the run is not charged. If content was fetched but the conditions you set filtered all of it out, only the first half of the fetching price is charged. If a run stops partway, you are charged only for the part that finished.
- The run goes on with what could be read, and the result says how much of the plan that was. The price has three parts: two for fetching and one for the AI analysis. When less than half of the planned reading came back, the second fetching part is not charged. The analysis part is charged only when at least nine in ten of the delivered rows were analysed. A call whose outcome is unknown is never retried on our own.

## Over MCP

The MCP tool is `creator_card`. It takes the same inputs and costs the same. [The tool list](https://socialtoai.com/docs/mcp/tools.md) has the description your AI is given.
