<!-- https://cutedyno.com/docs/api/create-profile -->

# Create a profile

`POST https://api.cutedyno.com/v1/profiles`

Creates a profile for one of your customers. Requires an account-wide key; profile-scoped keys cannot create profiles.



Required permission: `connections:write`

Required permission: `connections:write`

Accepts an `Idempotency-Key` header.

MCP tool: `create_profile`

## Body

- `name` (string, required) — Display name, usually your customer’s name.
- `description` (string) — Free-form note about this customer.

## Request

```bash
curl -X POST "https://api.cutedyno.com/v1/profiles" \
  -H "Authorization: Bearer $CUTEDYNO_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Acme Corp",
  "description": "string"
}'
```

```typescript
import { CuteDyno } from '@cutedyno/node';

const cutedyno = new CuteDyno();

const result = await cutedyno.profiles.create({
  name: "Acme Corp",
  description: "string"
});
console.log(result);
```

```python
import os
import requests

url = "https://api.cutedyno.com/v1/profiles"
headers = {"Authorization": f"Bearer {os.environ['CUTEDYNO_API_KEY']}"}

payload = {
    "name": "Acme Corp",
    "description": "string"
}

response = requests.post(url, json=payload, headers=headers)
response.raise_for_status()
print(response.json())
```

## Response 201

- `profile` (Profile, required)

```json
{
  "profile": {
    "id": "a1b2c3d4-0000-4000-8000-000000000000",
    "name": "Acme Corp",
    "description": "string",
    "createdAt": "string",
    "updatedAt": "string"
  }
}
```

## Errors

- `invalid_request` (400) — The request body or query string failed validation. The message names the offending field.
- `invalid_api_key` (401) — The key does not exist, was revoked, or is malformed. Keys start with cdyn_live_.
- `insufficient_permission` (403) — The key is missing the scope this endpoint needs, for example posts:write on a readonly key.
- `plan_limit` (403) — A plan quota was exhausted. The response carries entitlement, usage, and limit so you can surface the reason.
- `rate_limit_exceeded` (429) — Too many requests for this key. Honour the Retry-After header before retrying.
- `internal_error` (500) — Something failed on our side. Retry with the same Idempotency-Key; report the requestId if it persists.