Make your first Anysite API call with curl or Python.
Goal: fetch one LinkedIn profile through the REST API.
Every call needs credits on an active plan. See [Plans and credits](/docs/plans-and-credits).
ACTION FOR THE HUMAN: open https://app.anysite.io/billing?tab=plans (Open plans).
Every endpoint is `https://api.anysite.io/api/<endpoint path>`, authenticated with the
`access-token` header. Parameters go in a JSON body.
```bash cURL
curl --max-time 1600 -X POST "https://api.anysite.io/api/linkedin/user" \
-H "access-token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"user": "satyanadella"}'
```
> ACTION FOR THE HUMAN: copy your API key at https://app.anysite.io/billing — an agent cannot obtain it.
```python Python
import requests
response = requests.post(
"https://api.anysite.io/api/linkedin/user",
headers={"access-token": "YOUR_API_KEY"},
json={"user": "satyanadella"},
timeout=1600,
)
print(response.status_code, response.headers.get("x-credits-charged"))
print(response.json())
```
> ACTION FOR THE HUMAN: copy your API key at https://app.anysite.io/billing — an agent cannot obtain it.
200 and the body is a JSON array holding one profile — every endpoint answers
with an array, including the single-entity ones.x-credits-charged shows what the call cost, and x-token-points shows the
credits left on your balance.| Status | Cause |
|---|---|
422 |
The access-token header is missing, or the body is not a JSON object. |
401 |
The key is invalid, the plan has expired, or the balance has too few credits. |
403 |
The key belongs to an MCP-only plan, which cannot call the REST API. |
412 |
The profile does not exist under that alias, or it is private. The body is [] and the reason is in the x-error header. Find the person with a search endpoint first — a 412 is charged. |
Calls can run for many minutes, so give your HTTP client a timeout of about 1600 seconds, as in the samples above. Every other status is described in Errors and limits.