Invite someone by email with a role, seat type and locations
const url = 'https://api.threadkite.app/v1/invitations';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"email":"mark@smithmotors.co.uk","role":"admin","seatType":"full","locationIds":["2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"],"inboxIds":["2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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).
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
Example
mark@smithmotors.co.ukWhere they will work (information only): pre-selects their location and signature
The inboxes they join (owners and admins see every inbox anyway). Left out or empty: the default inbox
Responses
Section titled “Responses”object
Where they will work (information only); empty means group-wide
The inboxes they will join
The link has expired; resend to send a fresh one
Example
{ "role": "owner", "seatType": "full", "invitedByName": "Chris Moore"}Missing or invalid API key
object
Stable machine-readable reason
With code invalid: every problem with the request, by field (message is the first)
object
Dotted path inside the item, e.g. attributes.price.amountMinor
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)
object
Stable machine-readable reason
The feature that needs Pro
Where to upgrade or pay, in the web app
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)
object
Stable machine-readable reason
With code invalid: every problem with the request, by field (message is the first)
object
Dotted path inside the item, e.g. attributes.price.amountMinor
Example
{ "statusCode": 403, "code": "forbidden", "message": "You do not have permission to do that.", "errors": [ { "message": "Enter the make" } ]}object
Stable machine-readable reason
With code invalid: every problem with the request, by field (message is the first)
object
Dotted path inside the item, e.g. attributes.price.amountMinor
Example
{ "statusCode": 403, "code": "forbidden", "message": "You do not have permission to do that.", "errors": [ { "message": "Enter the make" } ]}Rate limit reached
object
Stable machine-readable reason
Seconds until another request will be accepted
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}