Affiliate APIPrivate & Confidential

API Integration Documentation

Integration Reference • June 2026

Base URL: https://api.willistudio.io

Your API Credentials

YOUR_API_KEY_HERE

⚠️ All requests must include a Bearer Token in the Authorization header. For enhanced security, you can request IP whitelisting for all API actions — contact support to configure this.

Authentication

All API requests require a Bearer token in the Authorization header:

Authorization: Bearer YOUR_API_KEY

Missing Token

{"success": false, "message": "API key gerekli"}

Invalid Token

{"success": false, "message": "Geçersiz API key"}

Retrieve Your Clients

Get a paginated, filterable list of clients associated with your affiliate account.

GEThttps://api.willistudio.io/api/v1/affiliates/clients

Query Parameters

ParameterTypeDefaultDescription
pageinteger0Records to skip (pagination offset)
limitinteger100Max records returned (max 500)
searchstringSearch by ID, name, email, phone, or status
created_at_startdateRegistered on or after this date (YYYY-MM-DD)
created_at_enddateRegistered on or before this date (YYYY-MM-DD)
ftd_date_startdateFirst deposit on or after (YYYY-MM-DD)
ftd_date_enddateFirst deposit on or before (YYYY-MM-DD)
country_idsUUIDFilter by country UUID
customer_status_idsUUIDFilter by customer status UUID
brand_idsUUIDFilter by brand UUID
sort_bystringcreated_atSort field: created_at, first_name, last_name, email
sort_orderstringdescSort direction: asc or desc

Example Request

curl -X GET "https://api.willistudio.io/api/v1/affiliates/clients?page=0&limit=100" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

{
  "total": 100,
  "page": 0,
  "limit": 100,
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "first_name": "John",
      "last_name": "Doe",
      "email": "john.doe@example.com",
      "phone": "+905551234567",
      "country_name": "Turkey",
      "country_code": "TR",
      "registration_ip": "192.168.1.1",
      "status": "New",
      "brand_name": "Default Brand",
      "created_at": "2026-06-15T10:30:00.000Z",
      "ftd_date": null,
      "balance_currency": "USD",
      "balance_currency_value": "0"
    }
  ]
}

Create a New Lead

Register a new client lead. Provide a valid brand_id and country_id.

POSThttps://api.willistudio.io/api/v1/affiliates/leads

Required Fields

FieldTypeDescription
brand_idUUIDBrand to assign the lead (use /by-brands to list)
first_namestringClient first name
last_namestringClient last name
emailstringClient email address (must be unique)
phonestringClient phone number
country_idUUIDCountry UUID (use /countries to list)

Optional Fields

FieldTypeDescription
passwordstringOptional. Omit or leave empty to auto-generate
country_codestringISO country code (alternative to country_id)
source_idintegerBusiness source ID
marketing_metadatastringAdditional marketing metadata
registration_ipstringClient IP at point of registration
balance_currencystringBase currency (e.g. USD, EUR)

Example Request

curl -X POST "https://api.willistudio.io/api/v1/affiliates/leads" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "brand_id": "BRAND_UUID",
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@example.com",
    "phone": "+905551234567",
    "country_id": "COUNTRY_UUID",
    "registration_ip": "192.168.1.1",
    "marketing_metadata": "Campaign-Front-1"
  }'

Success Response

{
  "success": true,
  "data": {
    "id": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
    "affiliate_id": "YOUR_AFFILIATE_UUID",
    "brand_id": "BRAND_UUID",
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@example.com",
    "phone": "+905551234567",
    "country_id": "COUNTRY_UUID",
    "created_at": "2026-06-24T14:30:00.000Z"
  }
}

Error Responses

Missing Required Fields

{"success": false, "message": "Zorunlu alanlar: brand_id, first_name, last_name, email, phone, country_id"}

Duplicate Email

{"success": false, "message": "Bu email adresi zaten kayıtlı"}

Auxiliary Endpoints

Reference endpoints for populating integration parameters.

Get Available Brands

GEThttps://api.willistudio.io/api/v1/affiliates/by-brands
curl -X GET "https://api.willistudio.io/api/v1/affiliates/by-brands" \
  -H "Authorization: Bearer YOUR_API_KEY"
{ "data": [{ "id": "uuid-...", "name": "Default Brand" }] }

Get Countries

GEThttps://api.willistudio.io/api/v1/affiliates/countries
curl -X GET "https://api.willistudio.io/api/v1/affiliates/countries" \
  -H "Authorization: Bearer YOUR_API_KEY"
{ "data": [{ "id": "uuid-...", "name": "Turkey", "code": "TR" }] }

Get Customer Statuses

GEThttps://api.willistudio.io/api/v1/affiliates/customer-statuses
curl -X GET "https://api.willistudio.io/api/v1/affiliates/customer-statuses" \
  -H "Authorization: Bearer YOUR_API_KEY"
{ "data": [{ "id": "uuid-...", "name": "New" }, { "id": "uuid-...", "name": "Converted" }] }

Get Available Currencies

GEThttps://api.willistudio.io/api/v1/affiliates/available-currencies
curl -X GET "https://api.willistudio.io/api/v1/affiliates/available-currencies" \
  -H "Authorization: Bearer YOUR_API_KEY"
{ "data": [{ "id": "uuid-...", "code": "USD", "name": "US Dollar" }] }

HTTP Status Codes

CodeMeaning
200Success
201Lead created successfully
400Bad request (missing/invalid fields)
401Unauthorized (invalid or missing API key)
403Forbidden (IP not whitelisted)
409Conflict (duplicate email)
500Internal server error

Support

For integration support, IP whitelisting requests, or API key issues, please contact your account manager.

© 2026 WilliStudio • Affiliate API Documentation • Confidential