API reference

Contact properties API

Reference for declaring, listing, retrieving, updating and deleting custom contact properties.

The contact properties API manages the custom fields of the project that owns your API key. Every endpoint needs a full_access key. For the concepts, see Contact properties.

The contact property object

JSON
{
  "object": "contact_property",
  "id": "jp8c3v6x9z2m5n1b4q7w0e3r",
  "key": "company",
  "type": "string",
  "fallback_value": "your team",
  "created_at": "2026-11-14T10:00:00.000Z"
}

Create a contact property

POST/contact-properties
FieldTypeRequiredDescription
keystringYesLetters, digits and underscore, 1 to 50 characters. Unique in the project.
typestringYesstring or number. It cannot be changed later.
fallback_valuestring, number or nullNoMust match type. Used in broadcasts when a contact has no value.
Shell
curl -X POST https://api.sooner.dev/contact-properties \
  -H "Authorization: Bearer $SOONER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "key": "company", "type": "string", "fallback_value": "your team" }'
JSON
{ "object": "contact_property", "id": "jp8c3v6x9z2m5n1b4q7w0e3r" }

Notable errors: validation_error for an invalid key, a key that already exists, or a fallback_value of the wrong type.

List contact properties

GET/contact-properties

Returns every property in the project. The list is not paginated.

Shell
curl https://api.sooner.dev/contact-properties \
  -H "Authorization: Bearer $SOONER_API_KEY"
JSON
{
  "object": "list",
  "data": [
    {
      "object": "contact_property",
      "id": "jp8c3v6x9z2m5n1b4q7w0e3r",
      "key": "company",
      "type": "string",
      "fallback_value": "your team",
      "created_at": "2026-11-14T10:00:00.000Z"
    }
  ],
  "has_more": false
}

Retrieve a contact property

GET/contact-properties/{id}

Returns one property in the shape above. Notable errors: not_found.

Update a contact property

PATCH/contact-properties/{id}

Only the fallback can change.

FieldTypeRequiredDescription
fallback_valuestring, number or nullNoThe new fallback.
Shell
curl -X PATCH https://api.sooner.dev/contact-properties/jp8c3v6x9z2m5n1b4q7w0e3r \
  -H "Authorization: Bearer $SOONER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "fallback_value": "there" }'
JSON
{ "object": "contact_property", "id": "jp8c3v6x9z2m5n1b4q7w0e3r" }

Delete a contact property

DELETE/contact-properties/{id}
Shell
curl -X DELETE https://api.sooner.dev/contact-properties/jp8c3v6x9z2m5n1b4q7w0e3r \
  -H "Authorization: Bearer $SOONER_API_KEY"
JSON
{ "object": "contact_property", "id": "jp8c3v6x9z2m5n1b4q7w0e3r", "deleted": true }