Skip to content

Link a record in your system

POST
/v1/threads/{id}/links
curl --request POST \
--url https://api.threadkite.app/v1/threads/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/links \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "recordType": "deal", "integration": "my-dms", "externalId": "DEAL-2231", "label": "Deal #2231", "url": "https://example.com", "status": "open", "messageId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "chapterId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }'

A deal, appraisal, finance application, invoice, e-sign or reservation. Linking the same record again updates it. A deal link makes the thread Won.

id
required
string format: uuid
Media typeapplication/json
object
recordType
required
string
Allowed values: deal appraisal finance_application invoice esign reservation other
integration
required
string
/^[a-z0-9][a-z0-9_.-]{0,49}$/

Example

my-dms
externalId
required
string
>= 1 characters <= 200 characters

Example

DEAL-2231
label
required
string
>= 1 characters <= 200 characters

Example

Deal #2231
url
string format: uri
nullable <= 2000 characters
status
string
nullable <= 50 characters

Example

open
messageId
string format: uuid
nullable
chapterId

The chapter it belongs to; the current chapter when left out

string format: uuid
Media typeapplication/json
object
id
required
string format: uuid
chapterId
required

The chapter it belongs to (a deal is its chapter’s)

string format: uuid
messageId
required
string format: uuid
nullable
recordType
required
string
Allowed values: deal appraisal finance_application invoice esign reservation other
integration
required
string
externalId
required
string
label
required
string
url
required
string
nullable
status
required
string
nullable
createdAt
required
string format: date-time

Example

{
"recordType": "deal",
"integration": "my-dms",
"externalId": "DEAL-2231",
"label": "Deal #2231",
"url": "https://dms.example.com/deals/2231",
"status": "won"
}
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"
}
]
}
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
}