RaabtaHQ
List custom fields

List custom fields

GET/api/v1/custom-fields

scope contacts:read

The custom-field definitions configured in Settings → Fields & tags. Use the ids with PUT /contacts/{id}/custom-fields.

Request
curl "https://your-crm.example.com/api/v1/custom-fields" \
  -H "Authorization: Bearer $RAABTA_API_KEY"
Response · 200 OK
{
  "data": [
    {
      "id": "6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d",
      "name": "Source",
      "type": "select",
      "options": [
        "Instagram ad",
        "Referral",
        "Walk-in"
      ],
      "created_at": "2026-08-01T09:00:00.000Z"
    }
  ]
}

Response

Wrapped in { data: … }
NameTypeDescription
idrequired
string (uuid)UUID
namerequired
stringField name
typerequired
stringtext | number | date | select | … as configured in Settings → Fields & tags
optionsrequired
string[] | nullAllowed values for a select field
created_atrequired
string (date-time)ISO 8601 timestamp

Errors

StatusCodeWhen
401unauthorizedNo usable API key: the Authorization header is missing or malformed, or the key is unknown, revoked or expired. The three are deliberately indistinguishable.
403forbiddenThe key is valid but lacks the scope this endpoint requires, or the request came from an address outside the key’s IP allowlist. The message says which.
403account_suspendedThe account this key belongs to is suspended. Rotating the key will not help; contact support.
429rate_limitedThe per-key budget, or the per-IP budget for failed authentication, is exhausted. Honour `Retry-After` before retrying.
500internalSomething failed on our side. Safe to retry with the same Idempotency-Key; quote `request_id` if it persists.