Custom Fields
Delete a custom field
Permanently delete a custom field definition (per-contact values cascade). Returns `{ data: { affected: 1, ids: [customFieldId] } }`. `Idempotency-Key` is optional. Deleting a missing field returns 40
DELETE /v2/custom-fields/{customFieldId}
Parameters
Path parameters
customFieldId
string (uuid) required
Header parameters
Idempotency-Key
string
Optional. Accepted to dedupe retries on this endpoint. See
apps/rest-api/src/shared/idempotency.ts.Responses
200 — Successful response
Content-Type: application/json
data
object required
data.affected
integer required
data.ids
array<string>
data.failed
array<object>
data.failed[].id
string
data.failed[].error
object
data.failed[].error.code
string
data.failed[].error.message
string
Example
{
"data": {
"affected": 0
}
}
400
No response body.
401
No response body.
403
No response body.
404
No response body.
409
No response body.
429
No response body.
500
No response body.
Code samples
curl https://api.prod.getdex.com/v2/custom-fields/00000000-0000-0000-0000-000000000000 \
--request DELETE \
--header 'Authorization: Bearer YOUR_API_KEY'
fetch('https://api.prod.getdex.com/v2/custom-fields/00000000-0000-0000-0000-000000000000', {
method: 'DELETE',
headers: {
Authorization: 'Bearer YOUR_API_KEY'
}
})
requests.delete(
"https://api.prod.getdex.com/v2/custom-fields/00000000-0000-0000-0000-000000000000",
headers={
"Authorization": "Bearer YOUR_API_KEY"
}
)
Update a custom field
Partial update of a custom field definition (`name`, `field_type`, `categories`). **Requires `Idempotency-Key`.** Returns `{ data: { custom_field: {...} } }`.
Reorder custom fields
Batch ranking update (`{ updates: [{ customFieldId, ranking }] }`, max 100). Stale IDs are silently skipped. **Requires `Idempotency-Key`.** Returns the full re-ranked list: `{ data: { custom_fields:

