Skip to content

Invite someone by email with a role, seat type and locations

POST
/v1/invitations
curl --request POST \
--url https://api.threadkite.app/v1/invitations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "email": "mark@smithmotors.co.uk", "role": "admin", "seatType": "full", "locationIds": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ], "inboxIds": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ] }'

An installed app (members:write) may invite people as staff (403 role_not_allowed for any other role) only while the business is on the Free plan or a trial (403 apps_cannot_invite_on_paid_plan otherwise): nobody is billed for them there. On a paid plan the business invites its own team, and an app’s invitation can no longer be accepted (403 app_invitation_on_paid_plan).

Media typeapplication/json
object
email
required
string format: email

Example

mark@smithmotors.co.uk
role
required
string
Allowed values: admin manager staff
seatType
required
string
Allowed values: full basic
locationIds

Where they will work (information only): pre-selects their location and signature

Array<string>
<= 200 items
inboxIds

The inboxes they join (owners and admins see every inbox anyway). Left out or empty: the default inbox

Array<string>
<= 200 items
Media typeapplication/json
object
id
required
string format: uuid
email
required
string format: email
role
required
string
Allowed values: owner admin manager staff
seatType
required
string
Allowed values: full basic
locationIds
required

Where they will work (information only); empty means group-wide

Array<string>
inboxIds
required

The inboxes they will join

Array<string>
invitedByName
required
string
nullable
createdAt
required
string format: date-time
expiresAt
required
string format: date-time
lastSentAt
required
string format: date-time
nullable
expired
required

The link has expired; resend to send a fresh one

boolean

Example

{
"role": "owner",
"seatType": "full",
"invitedByName": "Chris Moore"
}

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"
}
]
}
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
}