Skip to content

Get account connect link

GET
/v1/accounts/connect-link
curl --request GET \
--url https://api-v1.tailwind.ai/v1/accounts/connect-link \
--header 'Authorization: Bearer <token>'

Get a browser link that connects a Pinterest account to the organization. With accountId, the link re-authorizes that existing account (use it when tokenAuthorized is false). Without it, the link adds a new Pinterest account, and is returned only if the caller is an organization admin and the plan has room for another account; otherwise url is null and blocked says why. Nothing is connected or billed until the user opens the link in a browser signed in to this Tailwind organization and completes Pinterest’s authorization there. The user must also be signed in to the right Pinterest account in that browser, since Pinterest authorizes whichever account is signed in.

accountId
string

Tailwind account ID (from GET /v1/accounts) to re-authorize. Omit to add a new account.

Connect link, or the reason a new account cannot be added

Media typeapplication/json
object
data
object
action
required

Whether the link adds a new account or re-authorizes accountId

string
Allowed values: add reconnect
url
required

Link for the user to open in a browser signed in to Tailwind. Null when blocked is set.

string
nullable
accountLimit
required

Pinterest accounts the plan allows. Null when the plan has no account cap, and on reconnect links.

integer
nullable
blocked
required

Why a new account cannot be added; null when it can

object
reason
required
string
Allowed values: not_admin account_limit
message
required

User-facing explanation

string
meta
object
requestId

Unique request ID for debugging

string
Example
{
"data": {
"action": "add",
"blocked": {
"reason": "not_admin"
}
}
}

Authentication required or invalid bearer credentials

Media typeapplication/json
object
error
object
code

Error code

string
message

Error message

string
reason

Machine-readable reason. On PAYMENT_REQUIRED errors it is the denial reason: insufficient_credits, trial_exhausted, no_access, account_not_connected, legacy_post_limit_exceeded. Other errors may carry an operation-specific reason, such as pinterest_reconnect_required, pinterest_rate_limited, pinterest_timeout, pinterest_request_failed or list_boards_upstream_failed; each operation’s documented error responses show the values it returns. Branch on reason rather than parsing message.

string
resolve_url

Present on PAYMENT_REQUIRED errors: where the denial can be resolved. Reason-specific, because buying credits does not clear a trial, access or connection denial. Requests sent with X-Request-Source: mcp receive an informational plans page instead, so agent surfaces never present a purchase link.

string
meta
object
requestId

Unique request ID for debugging

string
Example
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid API key"
},
"meta": {
"requestId": "abc123"
}
}

Resource not found

Media typeapplication/json
object
error
object
code

Error code

string
message

Error message

string
reason

Machine-readable reason. On PAYMENT_REQUIRED errors it is the denial reason: insufficient_credits, trial_exhausted, no_access, account_not_connected, legacy_post_limit_exceeded. Other errors may carry an operation-specific reason, such as pinterest_reconnect_required, pinterest_rate_limited, pinterest_timeout, pinterest_request_failed or list_boards_upstream_failed; each operation’s documented error responses show the values it returns. Branch on reason rather than parsing message.

string
resolve_url

Present on PAYMENT_REQUIRED errors: where the denial can be resolved. Reason-specific, because buying credits does not clear a trial, access or connection denial. Requests sent with X-Request-Source: mcp receive an informational plans page instead, so agent surfaces never present a purchase link.

string
meta
object
requestId

Unique request ID for debugging

string
Example
{
"error": {
"code": "NOT_FOUND",
"message": "Account not found"
},
"meta": {
"requestId": "abc123"
}
}

Rate limit exceeded

Media typeapplication/json
object
error
object
code

Error code

string
message

Error message

string
reason

Machine-readable reason. On PAYMENT_REQUIRED errors it is the denial reason: insufficient_credits, trial_exhausted, no_access, account_not_connected, legacy_post_limit_exceeded. Other errors may carry an operation-specific reason, such as pinterest_reconnect_required, pinterest_rate_limited, pinterest_timeout, pinterest_request_failed or list_boards_upstream_failed; each operation’s documented error responses show the values it returns. Branch on reason rather than parsing message.

string
resolve_url

Present on PAYMENT_REQUIRED errors: where the denial can be resolved. Reason-specific, because buying credits does not clear a trial, access or connection denial. Requests sent with X-Request-Source: mcp receive an informational plans page instead, so agent surfaces never present a purchase link.

string
meta
object
requestId

Unique request ID for debugging

string
Example
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Daily rate limit of 10000 requests for this organization exceeded. Resets at midnight UTC."
},
"meta": {
"requestId": "abc123"
}
}
Retry-After
integer

Seconds until the daily limit resets at midnight UTC.