# Registration API

{% hint style="info" %}
This document describes how to build a custom registration page for the affiliates via API.
{% endhint %}

{% hint style="danger" %}
The default API URL is **<https://boapi.smartico.ai/>** but depending on your setup it could be different. Check for the exact URL in the '***Settings***' section.
{% endhint %}

### Affiliate registration API

An Operator can implement their own affiliate registration page that is using TAP API.

The API is using simple HTTP-POST to the URL <https://boapi.smartico.ai/api/register-aff>

POST body is JSON in format

```json
{
	"hostname": "aff-home.smartico.ai”, // the domain host from which the affiliate will register
	"first_name": "First-name",
	"last_name": "Last-name",
	"bo_user_email": "somemail@somewhere",
	"phone_number": "44097657269",
	"username": "username123",
	"password": "Q!w2e3r4",
	"skype": "skype",
	"company": "Astelit",
	"web_site_url": "https://googe.com",
	"country": "BG",
	"comments": "some info",
	"language": "FR",
	"tc": true,
	"token": "03AGdBq261a4cR1-w32PCilF0nq04_cjKIl8T6OeWlAnC4fWfYu94Mw6VIEdazhgDwcf_UkN1pBmTSixVNKKVXXyi-4f3f77VKQkgGKdCUs-dREm_YmwtMfYkgHj00YsQz0T3S3fHRP-XYgJkk0M7bUcaB3Lf6DA7gmZtQynXssdX3a5ElmyEJf5NTTX5IfmS3oiIL0OWWCxFiDfyPdTOoZJAjL9fMcFoqCD2_cJDiqZMNjLCIaUDQX1LgAaEr96FJ3dJ1vUwB3RnU3O-mefSffMvQtkQa-19CK78mpmQ6gDDCXD9zmdumH_aowNGyqN2BTgkrM0vwk4tmKRn6vDY5ue58jZItI7660oI3YfA96N43U_scBSBOC12qmpzNMf_T7esq3kJJTgH_rw8uQSzZk3bncCE2bPjeFg"
}
```

Notes regarding parameters:

* Password should be at least 6 characters, have one lowercase letter, one uppercase letter, and one number
* The following fields are mandatory: 'first\_name', 'last\_name', 'username', 'password', 'bo\_user\_email', 'country', 'tc', 'hostname', 'token'
* Hostname should match exactly to the hostname that is configured in TAP BackOffice for the operator. Only one hostname is allowed.
* Username should be 6 characters minimum
* The system is not allowing duplicate usernames and mails
* Language parameter should be ISO 2 symbols code of language
* If you are submitting Microsoft Teams contact details, use 'skype' parameter

You can also pass optional parameters

```typescript
// new affiliate will be assigned as a child of specified parent_affilaite_id
parent_affiliate_id: number; 

// affiliate will be assigned to a specific manager 
// and automatically approved (otherwise he is in a pending state)
manager_id: number; 

// FaceBook page for contact   
contact_fb: string;

// VK page for contact
contact_vk: string;

// Telegram page for contact
contact_telegram: string;

// Additional permissions for the affiliate. 
// Check "More API Methods" page for possible Role IDs
extra_role_ids: number[];

// ID of the Affiliate in the external system
ext_affiliate_id: string;

// Payment method and respective payment method details of the affilaites
// Check "More API Methods" page for possible payment methods
payment_method_id: number;
payment_method_details: {
  [key: string]: any
}
 
```

The API can return the following error codes

```typescript
enum AffApiErrors {
   OK = 0,
   BOT = -1,
   FORM_NOT_VALID = -2,
   USERNAME_RULE_NOT_VALUD = -3, // Username should be at least 6 symbols
   CANNOT_FIND_AFFILIATE_OPERATOR_BY_HOST = -5, // the ‘hostname’ as parameter is identifying an ‘operator’. System can support multiple operators. See explanation below
   FAIL_IN_REGISTRATION_FLOW = -6,
   USERNAME_ALREADY_EXISTS = -7,
   EMAIL_ALREADY_EXISTS = -8,
   PASSWORD_STRENGTH = -9, // Password should be at least 6 symbols, have one lowercase later, one uppercase later and one number
}
```

Setting up Google ReCaptcha on the front end.

Add the following script on your front-end

```html
<script src="https://www.google.com/recaptcha/api.js?render=6LeR49UfAAAAAO7J7vKDCD4vM-Lq5ZA_NsquS9J_"></script>

// Obtain the token in the following way
<script>
var _reCAPTCHA_site_key_ = '6LeR49UfAAAAAO7J7vKDCD4vM-Lq5ZA_NsquS9J_';
grecaptcha.execute(_reCAPTCHA_site_key_, {action: 'affregistration'}).then(function(token) {
   // pass token to the API call to Affiliate registration API
 });
 </script>

```

It's also possible to make API calls from the server side (backend) without using re-captcha protection. Please contact your Account Manager in this case to disable re-captcha verification for your setup


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.theaffiliateplatform.com/apis-and-configurations/registration-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
