Attach a document to a compliance profile
curl --request POST \
--url https://api.orbit.devotel.io/api/v1/compliance/compliance-profiles/{id}/documents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"document_id": "cdoc_1a2b3c4d5e6f",
"role": "business_doc"
}
'import requests
url = "https://api.orbit.devotel.io/api/v1/compliance/compliance-profiles/{id}/documents"
payload = {
"document_id": "cdoc_1a2b3c4d5e6f",
"role": "business_doc"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({document_id: 'cdoc_1a2b3c4d5e6f', role: 'business_doc'})
};
fetch('https://api.orbit.devotel.io/api/v1/compliance/compliance-profiles/{id}/documents', 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.orbit.devotel.io/api/v1/compliance/compliance-profiles/{id}/documents",
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([
'document_id' => 'cdoc_1a2b3c4d5e6f',
'role' => 'business_doc'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.orbit.devotel.io/api/v1/compliance/compliance-profiles/{id}/documents"
payload := strings.NewReader("{\n \"document_id\": \"cdoc_1a2b3c4d5e6f\",\n \"role\": \"business_doc\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.orbit.devotel.io/api/v1/compliance/compliance-profiles/{id}/documents")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"document_id\": \"cdoc_1a2b3c4d5e6f\",\n \"role\": \"business_doc\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbit.devotel.io/api/v1/compliance/compliance-profiles/{id}/documents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"document_id\": \"cdoc_1a2b3c4d5e6f\",\n \"role\": \"business_doc\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"attached": true
},
"meta": {
"request_id": "req_1a2b3c4d5e6f",
"timestamp": "2026-08-07T12:00:00.000Z"
}
}Compliance
Attach a document to a compliance profile
Attach an already-uploaded compliance document (from the tenant document library) to this profile under a specific KYC role, so it is included when the profile is submitted to carriers. The document must already exist, and the same document may be attached under more than one role. Only editable profiles accept attachments. Owner/admin/developer only.
POST
/
api
/
v1
/
compliance
/
compliance-profiles
/
{id}
/
documents
Attach a document to a compliance profile
curl --request POST \
--url https://api.orbit.devotel.io/api/v1/compliance/compliance-profiles/{id}/documents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"document_id": "cdoc_1a2b3c4d5e6f",
"role": "business_doc"
}
'import requests
url = "https://api.orbit.devotel.io/api/v1/compliance/compliance-profiles/{id}/documents"
payload = {
"document_id": "cdoc_1a2b3c4d5e6f",
"role": "business_doc"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({document_id: 'cdoc_1a2b3c4d5e6f', role: 'business_doc'})
};
fetch('https://api.orbit.devotel.io/api/v1/compliance/compliance-profiles/{id}/documents', 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.orbit.devotel.io/api/v1/compliance/compliance-profiles/{id}/documents",
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([
'document_id' => 'cdoc_1a2b3c4d5e6f',
'role' => 'business_doc'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.orbit.devotel.io/api/v1/compliance/compliance-profiles/{id}/documents"
payload := strings.NewReader("{\n \"document_id\": \"cdoc_1a2b3c4d5e6f\",\n \"role\": \"business_doc\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.orbit.devotel.io/api/v1/compliance/compliance-profiles/{id}/documents")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"document_id\": \"cdoc_1a2b3c4d5e6f\",\n \"role\": \"business_doc\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbit.devotel.io/api/v1/compliance/compliance-profiles/{id}/documents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"document_id\": \"cdoc_1a2b3c4d5e6f\",\n \"role\": \"business_doc\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"attached": true
},
"meta": {
"request_id": "req_1a2b3c4d5e6f",
"timestamp": "2026-08-07T12:00:00.000Z"
}
}Authorizations
BearerApiKey
Dashboard JWT token from Clerk
Path Parameters
Body
application/json
⌘I