curl --request POST \
--url https://{domain}/api/v2/network/affiliates \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"email": "user@example.com",
"password": "string",
"password_repeat": "string",
"company_name": "string",
"firstname": "string",
"lastname": "string"
}
'import requests
url = "https://{domain}/api/v2/network/affiliates"
payload = {
"email": "user@example.com",
"password": "string",
"password_repeat": "string",
"company_name": "string",
"firstname": "string",
"lastname": "string"
}
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({
email: 'user@example.com',
password: 'string',
password_repeat: 'string',
company_name: 'string',
firstname: 'string',
lastname: 'string'
})
};
fetch('https://{domain}/api/v2/network/affiliates', 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://{domain}/api/v2/network/affiliates",
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([
'email' => 'user@example.com',
'password' => 'string',
'password_repeat' => 'string',
'company_name' => 'string',
'firstname' => 'string',
'lastname' => 'string'
]),
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://{domain}/api/v2/network/affiliates"
payload := strings.NewReader("{\n \"email\": \"user@example.com\",\n \"password\": \"string\",\n \"password_repeat\": \"string\",\n \"company_name\": \"string\",\n \"firstname\": \"string\",\n \"lastname\": \"string\"\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://{domain}/api/v2/network/affiliates")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"user@example.com\",\n \"password\": \"string\",\n \"password_repeat\": \"string\",\n \"company_name\": \"string\",\n \"firstname\": \"string\",\n \"lastname\": \"string\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{domain}/api/v2/network/affiliates")
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 \"email\": \"user@example.com\",\n \"password\": \"string\",\n \"password_repeat\": \"string\",\n \"company_name\": \"string\",\n \"firstname\": \"string\",\n \"lastname\": \"string\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"code": 200,
"name": "OK",
"message": "<string>",
"info": {
"affiliate": {}
}
}{
"status": "error",
"code": 400,
"name": "Bad Request",
"message": "Request could not be parsed.",
"info": {
"errors": {}
}
}{
"status": "error",
"code": 401,
"name": "Unauthorized",
"message": "API key is invalid or missing."
}{
"status": "error",
"code": 403,
"name": "Forbidden",
"message": "This endpoint is not available for your role."
}{
"status": "error",
"code": 422,
"name": "Unprocessable entity",
"message": "Validation error",
"info": {
"errors": {
"email": [
"Email cannot be blank."
],
"currency": [
"Currency must be a valid ISO code."
]
}
}
}{
"status": "error",
"code": 500,
"name": "Internal Server Error",
"message": "An unexpected error occurred.",
"info": {
"errors": {}
}
}Create affiliate
Creates a new affiliate partner.
curl --request POST \
--url https://{domain}/api/v2/network/affiliates \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"email": "user@example.com",
"password": "string",
"password_repeat": "string",
"company_name": "string",
"firstname": "string",
"lastname": "string"
}
'import requests
url = "https://{domain}/api/v2/network/affiliates"
payload = {
"email": "user@example.com",
"password": "string",
"password_repeat": "string",
"company_name": "string",
"firstname": "string",
"lastname": "string"
}
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({
email: 'user@example.com',
password: 'string',
password_repeat: 'string',
company_name: 'string',
firstname: 'string',
lastname: 'string'
})
};
fetch('https://{domain}/api/v2/network/affiliates', 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://{domain}/api/v2/network/affiliates",
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([
'email' => 'user@example.com',
'password' => 'string',
'password_repeat' => 'string',
'company_name' => 'string',
'firstname' => 'string',
'lastname' => 'string'
]),
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://{domain}/api/v2/network/affiliates"
payload := strings.NewReader("{\n \"email\": \"user@example.com\",\n \"password\": \"string\",\n \"password_repeat\": \"string\",\n \"company_name\": \"string\",\n \"firstname\": \"string\",\n \"lastname\": \"string\"\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://{domain}/api/v2/network/affiliates")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"user@example.com\",\n \"password\": \"string\",\n \"password_repeat\": \"string\",\n \"company_name\": \"string\",\n \"firstname\": \"string\",\n \"lastname\": \"string\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{domain}/api/v2/network/affiliates")
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 \"email\": \"user@example.com\",\n \"password\": \"string\",\n \"password_repeat\": \"string\",\n \"company_name\": \"string\",\n \"firstname\": \"string\",\n \"lastname\": \"string\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"code": 200,
"name": "OK",
"message": "<string>",
"info": {
"affiliate": {}
}
}{
"status": "error",
"code": 400,
"name": "Bad Request",
"message": "Request could not be parsed.",
"info": {
"errors": {}
}
}{
"status": "error",
"code": 401,
"name": "Unauthorized",
"message": "API key is invalid or missing."
}{
"status": "error",
"code": 403,
"name": "Forbidden",
"message": "This endpoint is not available for your role."
}{
"status": "error",
"code": 422,
"name": "Unprocessable entity",
"message": "Validation error",
"info": {
"errors": {
"email": [
"Email cannot be blank."
],
"currency": [
"Currency must be a valid ISO code."
]
}
}
}{
"status": "error",
"code": 500,
"name": "Internal Server Error",
"message": "An unexpected error occurred.",
"info": {
"errors": {}
}
}Authorizations
Preferred authentication method. Pass the API key in the X-API-Key HTTP request header. The user account must have api_status enabled.
Body
Affiliate email (must be unique).
Login password (min 8 chars). Repeating consecutive characters are allowed.
Password confirmation.
Company name.
25525525564255Affiliate account status (Identity): 1=active, 2=pending, 3=inactive. The field is not range-validated: sending 5 is accepted with a 200/201 and hides the account from the list and from GET by id (404). Sending 1 again restores it.
Country geoname_id. Auto-detected from IP if 0.
12812812816IANA timezone (e.g. America/New_York). Defaults to platform timezone.
64Number format ID.
Date format ID.
JSON string with contact information.
Notes about the affiliate.
Internal notes (not visible to affiliate).
Payment details (JSON string).
Referrer affiliate ID.
Referral commission percentage (default 5).
Manager ID or comma-separated IDs to assign.
Custom field values.
Comma-separated tag labels.
Traffic source IDs.
Base64-encoded image (data:image/png;base64,...).
External identifier.
64Affiliate-level trafficback URL. All invalid traffic from this affiliate will be redirected to this URL. Overrides offer-level and global trafficback settings. Available on Enterprise and Custom plans only.
255Custom login redirect URL for affiliate portal.
Send welcome email: 1=yes, 2=no.
1, 2 Send verification email: 1=yes, 2=no.
1, 2 IP address (used for auto-detecting country/timezone).
Was this page helpful?