curl --request POST \
--url https://api.redbark.com/v2/link_sessions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Redbark-Version: <api-key>' \
--data '{}'const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'Redbark-Version': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({})
};
fetch('https://api.redbark.com/v2/link_sessions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.redbark.com/v2/link_sessions"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Redbark-Version": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "ls_7Kp3Lm5nQr7sTu9vWx1yZa",
"object": "link_session",
"provider": "fiskil",
"institution": "<string>",
"status": "pending",
"url": "<string>",
"connection": "<string>",
"start_token": "<string>",
"return_url": "<string>",
"failure_reason": "<string>",
"expires_at": "2026-08-21T09:30:00.000Z",
"completed_at": "2026-08-21T09:30:00.000Z",
"metadata": {},
"livemode": true,
"created": "2026-08-21T09:30:00.000Z",
"updated": "2026-08-21T09:30:00.000Z"
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}Create a link session
Mints a hosted consent flow. Send the user to url; they sign in to Redbark (same account as the key), complete the bank consent, and land on return_url. Poll GET /v2/link_sessions/{id} or subscribe to connection.created. Returns 403 subscription_required when the account has no active trial or subscription, for every caller and for reauthorization too, 403 connection_limit when the plan has no free connection slot (a reauthorization is exempt) and 403 professional_required for a brokerage session on a plan without brokerage. The Redbark apps open the page with the one-time start_token sent as the X-Redbark-Link-Start header and return to their registered app link callback; API keys and third-party OAuth clients always sign in on the page and use an https return_url.
curl --request POST \
--url https://api.redbark.com/v2/link_sessions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Redbark-Version: <api-key>' \
--data '{}'const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'Redbark-Version': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({})
};
fetch('https://api.redbark.com/v2/link_sessions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.redbark.com/v2/link_sessions"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Redbark-Version": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "ls_7Kp3Lm5nQr7sTu9vWx1yZa",
"object": "link_session",
"provider": "fiskil",
"institution": "<string>",
"status": "pending",
"url": "<string>",
"connection": "<string>",
"start_token": "<string>",
"return_url": "<string>",
"failure_reason": "<string>",
"expires_at": "2026-08-21T09:30:00.000Z",
"completed_at": "2026-08-21T09:30:00.000Z",
"metadata": {},
"livemode": true,
"created": "2026-08-21T09:30:00.000Z",
"updated": "2026-08-21T09:30:00.000Z"
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"type": "invalid_request_error",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}Authorizations
Authorization: Bearer rbk_live_...
The API release your integration is built against, e.g. 2026-10-01.wattle. Required on every request.
Body
fiskil, akahu, snaptrade, plaid Institution id from GET /v2/institutions for the same provider, to preselect. Not accepted for plaid: the user picks the bank in Plaid Link.
100Up to 50 string pairs. Set a key to null to unset it.
Show child attributes
Show child attributes
Response
The link session
"ls_7Kp3Lm5nQr7sTu9vWx1yZa"
link_session fiskil, akahu, snaptrade, plaid pending, completed, expired, failed Hosted page to send the user to while pending
Returned once, in the creating response, and only to Redbark's own apps; null everywhere else. Send it as the X-Redbark-Link-Start request header when opening url.
"2026-08-21T09:30:00.000Z"
"2026-08-21T09:30:00.000Z"
Up to 50 string pairs. Set a key to null in an update to unset it.
Show child attributes
Show child attributes
"2026-08-21T09:30:00.000Z"
"2026-08-21T09:30:00.000Z"

