Create a custom field
Add a field every contact can hold a value for.
POST
/api/v1/contact-fieldsScope
contacts:writeAdds a custom field. Its key is made from the label — lower case, with underscores, e.g. Renewal date → renewal_date — and never changes. If that key is taken or reserved (like email or name), a number is added: email_2.
Only a key whose creator is a manager or the owner can change fields.
Body
Send a JSON object.
Prop
Type
| Type | Shown as | Holds | Example value |
|---|---|---|---|
TEXT | Text | Up to 500 characters | "Berlin office" |
LONG_TEXT | Long text | Up to 5,000 characters | "Evaluating us against…" |
NUMBER | Number | Any number | 25 |
DATE | Date | A calendar date, YYYY-MM-DD | "2026-11-30" |
SELECT | Dropdown | One of the field's options | "Pro" |
CHECKBOX | Checkbox | true or false | true |
URL | Link | A web address; https:// is added if missing | "https://northwind.io/pricing" |
Example request
curl -X POST "https://api.pedibee.com/api/v1/contact-fields" \
-H "Authorization: Bearer $PEDIBEE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"label": "Plan",
"type": "SELECT",
"options": [
"Free",
"Pro",
"Enterprise"
]
}'Response
The new field, with its key.
{
"id": "66f1c2a9e4b0a1b2c3d4e201",
"key": "plan",
"label": "Plan",
"type": "SELECT",
"options": [
"Free",
"Pro",
"Enterprise"
],
"position": 0,
"createdAt": "2026-10-05T09:30:00.000Z",
"updatedAt": "2026-10-05T09:30:00.000Z"
}Errors
Every error is { "error": "…" } with a message you can show. See Errors and limits.
| Status | When |
|---|---|
400 | The label is missing or too long, the type is unknown, a SELECT field has no options, or the workspace already has 50 fields. |
403 | The key doesn’t have contacts:write, or its creator’s role no longer allows it. |
409 | A field with this label already exists. |
401 | The API key is missing, invalid, revoked or expired. |
429 | Too many requests. Wait for the seconds in Retry-After. |