curl --request POST \
--url https://api-sandbox.rinne.com.br/core/v1/affiliations/{id}/onboarding-link \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"expires_in_days": 7
}
'import requests
url = "https://api-sandbox.rinne.com.br/core/v1/affiliations/{id}/onboarding-link"
payload = { "expires_in_days": 7 }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({expires_in_days: 7})
};
fetch('https://api-sandbox.rinne.com.br/core/v1/affiliations/{id}/onboarding-link', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-sandbox.rinne.com.br/core/v1/affiliations/{id}/onboarding-link",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'expires_in_days' => 7
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.rinne.com.br/core/v1/affiliations/{id}/onboarding-link"
payload := strings.NewReader("{\n \"expires_in_days\": 7\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-sandbox.rinne.com.br/core/v1/affiliations/{id}/onboarding-link")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expires_in_days\": 7\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.rinne.com.br/core/v1/affiliations/{id}/onboarding-link")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expires_in_days\": 7\n}"
response = http.request(request)
puts response.read_body{
"onboarding_url": "https://cadastro.rinne.com.br/a/3q2-7wEXAMPLEtoken",
"onboarding_url_expires_at": "2026-11-12T12:00:00.000Z"
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Validation error",
"status": 400,
"details": {
"issues": [
{
"field": "email",
"type": "REQUIRED",
"message": "Field 'email' is required",
"value": "invalid_value",
"constraints": {
"min": 18,
"max": 120
}
}
]
},
"path": "/companies",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "Authentication required to access this resource",
"status": 401,
"details": {
"reason": "Invalid API key"
},
"path": "/companies/me",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "AUTHORIZATION_ERROR",
"message": "You need 'admin' permissions to access this resource",
"status": 403,
"path": "/companies",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Company with ID '123' not found",
"status": 404,
"path": "/companies/me",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "CONFLICT_ERROR",
"message": "Affiliation is PROCESSING_DOCUMENTS, not waiting for documents",
"status": 409
}
}{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "An unexpected error occurred",
"status": 500,
"path": "/companies",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}Reissue the onboarding link
Requires the affiliation.edit permission.
Issues a new Rinne onboarding link for an affiliation that is waiting for documents and returns
it. The previous link stops working at once: a person on it sees that the link was replaced. Use
it when the link was lost, leaked or forwarded to the wrong person, or when it expired before the
company finished; the affiliation, its requirements and whatever was already sent are kept.
onboarding_url and onboarding_url_expires_at on the affiliation change to the new link.
The link lasts expires_in_days (30 when omitted) and never past the date the attempt is
cancelled for want of documents. Only the person registered as the company’s contact opens
it, by typing their CPF.
409 CONFLICT_ERROR when the affiliation is not WAITING_DOCUMENTS (an attempt never
submitted and past its deadline is cancelled as EXPIRED first, and answers 409 too), or
when its link is the provider’s own, which Rinne cannot reissue.
curl --request POST \
--url https://api-sandbox.rinne.com.br/core/v1/affiliations/{id}/onboarding-link \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"expires_in_days": 7
}
'import requests
url = "https://api-sandbox.rinne.com.br/core/v1/affiliations/{id}/onboarding-link"
payload = { "expires_in_days": 7 }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({expires_in_days: 7})
};
fetch('https://api-sandbox.rinne.com.br/core/v1/affiliations/{id}/onboarding-link', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-sandbox.rinne.com.br/core/v1/affiliations/{id}/onboarding-link",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'expires_in_days' => 7
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.rinne.com.br/core/v1/affiliations/{id}/onboarding-link"
payload := strings.NewReader("{\n \"expires_in_days\": 7\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-sandbox.rinne.com.br/core/v1/affiliations/{id}/onboarding-link")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expires_in_days\": 7\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.rinne.com.br/core/v1/affiliations/{id}/onboarding-link")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expires_in_days\": 7\n}"
response = http.request(request)
puts response.read_body{
"onboarding_url": "https://cadastro.rinne.com.br/a/3q2-7wEXAMPLEtoken",
"onboarding_url_expires_at": "2026-11-12T12:00:00.000Z"
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Validation error",
"status": 400,
"details": {
"issues": [
{
"field": "email",
"type": "REQUIRED",
"message": "Field 'email' is required",
"value": "invalid_value",
"constraints": {
"min": 18,
"max": 120
}
}
]
},
"path": "/companies",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "Authentication required to access this resource",
"status": 401,
"details": {
"reason": "Invalid API key"
},
"path": "/companies/me",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "AUTHORIZATION_ERROR",
"message": "You need 'admin' permissions to access this resource",
"status": 403,
"path": "/companies",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Company with ID '123' not found",
"status": 404,
"path": "/companies/me",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "CONFLICT_ERROR",
"message": "Affiliation is PROCESSING_DOCUMENTS, not waiting for documents",
"status": 409
}
}{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "An unexpected error occurred",
"status": 500,
"path": "/companies",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}Authorizations
Company API key for authentication
Path Parameters
The affiliation ID
Body
How long the new link lasts, in days; 30 when omitted. Never past the date the attempt is cancelled for want of documents.
1 <= x <= 307
Response
The new link

