Skip to content

Add a contact field

POST
/v1/contact-fields
curl --request POST \
--url https://api.threadkite.app/v1/contact-fields \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "resource": "contact", "key": "budget", "label": "Budget", "type": "text", "choices": [ "Morning", "Afternoon", "Evening" ] }'

Its key cannot change later. Up to 100 fields.

Media typeapplication/json
object
resource

contact (the default: values on contacts) or company (values on companies)

string
Allowed values: contact company

Example

contact
key
required

Lower case letters, numbers and underscores, starting with a letter

string
/^[a-z][a-z0-9_]{0,59}$/

Example

budget
label
required
string
<= 80 characters

Example

Budget
type
required
string
Allowed values: text number date boolean choice
choices

Required for choice fields

Array<string>
<= 50 items

Example

[
"Morning",
"Afternoon",
"Evening"
]
Media typeapplication/json
object
id
required

Null for your industry pack’s fields, which every business like yours has

string format: uuid
nullable
key
required

The key values are stored under in a contact’s attributes; never changes

string
label
required
string
resource
required

contact (the default: values on contacts) or company (values on companies)

string
Allowed values: contact company
type
required

Values are text, numbers, dates (YYYY-MM-DD), true or false, or one of choices

string
Allowed values: text number date boolean choice
choices
required

The options of a choice field

Array<string>
origin
required

organisation (yours), pack (your industry pack) or integration

string
Allowed values: organisation pack integration
archived
required

Archived: values are kept but can no longer be set

boolean
readOnly
required

Pack fields cannot be changed or archived

boolean
createdAt
required
string format: date-time
nullable

Example

{
"key": "finance_end_date",
"label": "Finance end date",
"resource": "contact",
"type": "text",
"origin": "organisation"
}
Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
errors

With code invalid: every problem with the request, by field (message is the first)

Array<object>
object
path
required

Dotted path inside the item, e.g. attributes.price.amountMinor

string
message
required
string

Example

{
"statusCode": 403,
"code": "forbidden",
"message": "You do not have permission to do that.",
"errors": [
{
"message": "Enter the make"
}
]
}

Missing or invalid API key

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
errors

With code invalid: every problem with the request, by field (message is the first)

Array<object>
object
path
required

Dotted path inside the item, e.g. attributes.price.amountMinor

string
message
required
string

Example

{
"statusCode": 403,
"code": "forbidden",
"message": "You do not have permission to do that.",
"errors": [
{
"message": "Enter the make"
}
]
}

The organisation is on the Free plan (code upgrade_required)

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
feature
required

The feature that needs Pro

string
nullable
Allowed values: extraSeats connections aiAssistant aiReplies rules fullReports api inboxes bulkMessages videoMessages
upgradePath
required

Where to upgrade or pay, in the web app

string

Example

{
"statusCode": 402,
"code": "upgrade_required",
"message": "Connections are part of Pro. Upgrade to connect texts, calls and more.",
"feature": "extraSeats",
"upgradePath": "/settings/billing"
}

The key does not have the scope (or the person the permission)

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
errors

With code invalid: every problem with the request, by field (message is the first)

Array<object>
object
path
required

Dotted path inside the item, e.g. attributes.price.amountMinor

string
message
required
string

Example

{
"statusCode": 403,
"code": "forbidden",
"message": "You do not have permission to do that.",
"errors": [
{
"message": "Enter the make"
}
]
}

The key is taken (field_exists)

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
errors

With code invalid: every problem with the request, by field (message is the first)

Array<object>
object
path
required

Dotted path inside the item, e.g. attributes.price.amountMinor

string
message
required
string

Example

{
"statusCode": 403,
"code": "forbidden",
"message": "You do not have permission to do that.",
"errors": [
{
"message": "Enter the make"
}
]
}

Rate limit reached

Media typeapplication/json
object
statusCode
required
number
code
required

Stable machine-readable reason

string
message
required
string
retryAfter
required

Seconds until another request will be accepted

number

Example

{
"statusCode": 429,
"code": "rate_limited",
"message": "Too many requests. Each key can make 120 requests a minute; try again in 12 seconds.",
"retryAfter": 12
}