curl --request POST \
--url https://platform.swipelux.com/v3/customers/{customerId}/related-parties \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-API-Key: <api-key>' \
--data '
{
"partyType": "person",
"roles": [
"director"
],
"title": "Chief executive officer",
"person": {
"firstName": "Amina",
"lastName": "Diallo",
"residenceCountry": "FR"
}
}
'import requests
url = "https://platform.swipelux.com/v3/customers/{customerId}/related-parties"
payload = {
"partyType": "person",
"roles": ["director"],
"title": "Chief executive officer",
"person": {
"firstName": "Amina",
"lastName": "Diallo",
"residenceCountry": "FR"
}
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"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: {
'Idempotency-Key': '<idempotency-key>',
'X-API-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
partyType: 'person',
roles: ['director'],
title: 'Chief executive officer',
person: {firstName: 'Amina', lastName: 'Diallo', residenceCountry: 'FR'}
})
};
fetch('https://platform.swipelux.com/v3/customers/{customerId}/related-parties', 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://platform.swipelux.com/v3/customers/{customerId}/related-parties",
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([
'partyType' => 'person',
'roles' => [
'director'
],
'title' => 'Chief executive officer',
'person' => [
'firstName' => 'Amina',
'lastName' => 'Diallo',
'residenceCountry' => 'FR'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"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://platform.swipelux.com/v3/customers/{customerId}/related-parties"
payload := strings.NewReader("{\n \"partyType\": \"person\",\n \"roles\": [\n \"director\"\n ],\n \"title\": \"Chief executive officer\",\n \"person\": {\n \"firstName\": \"Amina\",\n \"lastName\": \"Diallo\",\n \"residenceCountry\": \"FR\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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://platform.swipelux.com/v3/customers/{customerId}/related-parties")
.header("Idempotency-Key", "<idempotency-key>")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"partyType\": \"person\",\n \"roles\": [\n \"director\"\n ],\n \"title\": \"Chief executive officer\",\n \"person\": {\n \"firstName\": \"Amina\",\n \"lastName\": \"Diallo\",\n \"residenceCountry\": \"FR\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.swipelux.com/v3/customers/{customerId}/related-parties")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"partyType\": \"person\",\n \"roles\": [\n \"director\"\n ],\n \"title\": \"Chief executive officer\",\n \"person\": {\n \"firstName\": \"Amina\",\n \"lastName\": \"Diallo\",\n \"residenceCountry\": \"FR\"\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "rp_01JDIRECTOR",
"customerId": "cus_01JBUSINESS",
"partyType": "person",
"roles": [
"director"
],
"title": "Chief executive officer",
"person": {
"firstName": "Amina",
"lastName": "Diallo",
"residenceCountry": "FR"
},
"createdAt": "2026-07-15T18:20:00.000Z",
"updatedAt": "2026-07-15T18:20:00.000Z"
}
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"correlationId": "<string>",
"transferId": "<string>",
"retryable": true,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"statusReason": {
"code": "sanctions_screening_failed",
"message": "<string>",
"retryable": true
},
"reviewAnswer": "<string>",
"capabilities": [
"<string>"
],
"blockingResources": [
{
"id": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"code": "<string>",
"detail": "<string>",
"correlationId": "<string>",
"transferId": "<string>",
"retryable": true,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"statusReason": {
"code": "sanctions_screening_failed",
"message": "<string>",
"retryable": true
},
"reviewAnswer": "<string>",
"capabilities": [
"<string>"
],
"blockingResources": [
{
"id": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"code": "<string>",
"detail": "<string>",
"correlationId": "<string>",
"transferId": "<string>",
"retryable": true,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"statusReason": {
"code": "sanctions_screening_failed",
"message": "<string>",
"retryable": true
},
"reviewAnswer": "<string>",
"capabilities": [
"<string>"
],
"blockingResources": [
{
"id": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"code": "customer_not_found",
"detail": "<string>",
"correlationId": "<string>",
"transferId": "<string>",
"retryable": true,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"statusReason": {
"code": "sanctions_screening_failed",
"message": "<string>",
"retryable": true
},
"reviewAnswer": "<string>",
"capabilities": [
"<string>"
],
"blockingResources": [
{
"id": "<string>"
}
]
}{
"type": "https://docs.swipelux.com/errors/idempotency-request-in-progress",
"title": "Idempotency Request In Progress",
"status": 409,
"code": "idempotency_request_in_progress",
"detail": "A request with this Idempotency-Key is still in progress.",
"correlationId": "01JERRORIDEMPOTENCY",
"retryable": true
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"code": "<string>",
"detail": "<string>",
"correlationId": "<string>",
"transferId": "<string>",
"retryable": true,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"statusReason": {
"code": "sanctions_screening_failed",
"message": "<string>",
"retryable": true
},
"reviewAnswer": "<string>",
"capabilities": [
"<string>"
],
"blockingResources": [
{
"id": "<string>"
}
]
}Create related party
Creates a person or entity related party for a business customer. The party gets a stable rp_ id, requires at least one role or one ownership, voting, or control fact, and the parent customer’s updatedAt advances in the same transaction.
curl --request POST \
--url https://platform.swipelux.com/v3/customers/{customerId}/related-parties \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-API-Key: <api-key>' \
--data '
{
"partyType": "person",
"roles": [
"director"
],
"title": "Chief executive officer",
"person": {
"firstName": "Amina",
"lastName": "Diallo",
"residenceCountry": "FR"
}
}
'import requests
url = "https://platform.swipelux.com/v3/customers/{customerId}/related-parties"
payload = {
"partyType": "person",
"roles": ["director"],
"title": "Chief executive officer",
"person": {
"firstName": "Amina",
"lastName": "Diallo",
"residenceCountry": "FR"
}
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"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: {
'Idempotency-Key': '<idempotency-key>',
'X-API-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
partyType: 'person',
roles: ['director'],
title: 'Chief executive officer',
person: {firstName: 'Amina', lastName: 'Diallo', residenceCountry: 'FR'}
})
};
fetch('https://platform.swipelux.com/v3/customers/{customerId}/related-parties', 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://platform.swipelux.com/v3/customers/{customerId}/related-parties",
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([
'partyType' => 'person',
'roles' => [
'director'
],
'title' => 'Chief executive officer',
'person' => [
'firstName' => 'Amina',
'lastName' => 'Diallo',
'residenceCountry' => 'FR'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"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://platform.swipelux.com/v3/customers/{customerId}/related-parties"
payload := strings.NewReader("{\n \"partyType\": \"person\",\n \"roles\": [\n \"director\"\n ],\n \"title\": \"Chief executive officer\",\n \"person\": {\n \"firstName\": \"Amina\",\n \"lastName\": \"Diallo\",\n \"residenceCountry\": \"FR\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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://platform.swipelux.com/v3/customers/{customerId}/related-parties")
.header("Idempotency-Key", "<idempotency-key>")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"partyType\": \"person\",\n \"roles\": [\n \"director\"\n ],\n \"title\": \"Chief executive officer\",\n \"person\": {\n \"firstName\": \"Amina\",\n \"lastName\": \"Diallo\",\n \"residenceCountry\": \"FR\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.swipelux.com/v3/customers/{customerId}/related-parties")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"partyType\": \"person\",\n \"roles\": [\n \"director\"\n ],\n \"title\": \"Chief executive officer\",\n \"person\": {\n \"firstName\": \"Amina\",\n \"lastName\": \"Diallo\",\n \"residenceCountry\": \"FR\"\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "rp_01JDIRECTOR",
"customerId": "cus_01JBUSINESS",
"partyType": "person",
"roles": [
"director"
],
"title": "Chief executive officer",
"person": {
"firstName": "Amina",
"lastName": "Diallo",
"residenceCountry": "FR"
},
"createdAt": "2026-07-15T18:20:00.000Z",
"updatedAt": "2026-07-15T18:20:00.000Z"
}
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"correlationId": "<string>",
"transferId": "<string>",
"retryable": true,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"statusReason": {
"code": "sanctions_screening_failed",
"message": "<string>",
"retryable": true
},
"reviewAnswer": "<string>",
"capabilities": [
"<string>"
],
"blockingResources": [
{
"id": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"code": "<string>",
"detail": "<string>",
"correlationId": "<string>",
"transferId": "<string>",
"retryable": true,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"statusReason": {
"code": "sanctions_screening_failed",
"message": "<string>",
"retryable": true
},
"reviewAnswer": "<string>",
"capabilities": [
"<string>"
],
"blockingResources": [
{
"id": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"code": "<string>",
"detail": "<string>",
"correlationId": "<string>",
"transferId": "<string>",
"retryable": true,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"statusReason": {
"code": "sanctions_screening_failed",
"message": "<string>",
"retryable": true
},
"reviewAnswer": "<string>",
"capabilities": [
"<string>"
],
"blockingResources": [
{
"id": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"code": "customer_not_found",
"detail": "<string>",
"correlationId": "<string>",
"transferId": "<string>",
"retryable": true,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"statusReason": {
"code": "sanctions_screening_failed",
"message": "<string>",
"retryable": true
},
"reviewAnswer": "<string>",
"capabilities": [
"<string>"
],
"blockingResources": [
{
"id": "<string>"
}
]
}{
"type": "https://docs.swipelux.com/errors/idempotency-request-in-progress",
"title": "Idempotency Request In Progress",
"status": 409,
"code": "idempotency_request_in_progress",
"detail": "A request with this Idempotency-Key is still in progress.",
"correlationId": "01JERRORIDEMPOTENCY",
"retryable": true
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"code": "<string>",
"detail": "<string>",
"correlationId": "<string>",
"transferId": "<string>",
"retryable": true,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"statusReason": {
"code": "sanctions_screening_failed",
"message": "<string>",
"retryable": true
},
"reviewAnswer": "<string>",
"capabilities": [
"<string>"
],
"blockingResources": [
{
"id": "<string>"
}
]
}Authorizations
Your Swipelux API key. Obtain this from the Swipelux Dashboard.
Headers
Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response.
1 - 255Path Parameters
Body
- Option 1
- Option 2
person control_person, director, officer, authorized_signer, authorized_representative, compliance_officer, primary_contact, account_administrator, trustee, settlor, protector, beneficiary, general_partner, limited_partner, other Reusable progressively collected individual identity facts.
Show child attributes
Show child attributes
Preserved exactly; leading/trailing whitespace and control characters are rejected.
1 - 256Preserved exactly; leading/trailing whitespace and control characters are rejected.
1 - 256Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Response
Related party created
- Option 1
- Option 2
Show child attributes
Show child attributes
Related topics
Get related partyArchive related partyList related partiesUpdate related partyKYB workflow