> For the complete documentation index, see [llms.txt](https://manual.personr.co/api-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://manual.personr.co/api-documentation/applicants/creating-an-applicant.md).

# Creating an applicant

This endpoint allows you to create an applicant on a chosen flow that you've created within the platform.&#x20;

Flows allow you to choose what you'd like to screen an applicant for, and which documents you'd like verified. For example, a basic flow you've created may require the applicant to provide one identity document and go through a selfie check.

If you haven't created a Flow yet, create one by going to <https://enterprise.personr.co/dashboard/flows> before proceeding.

<figure><img src="/files/pfkP9y0v7hp3WOtKPBAB" alt=""><figcaption></figcaption></figure>

Note that the Names the applicant is created with, is not the details that will be sent for verification later, as this will be extracted from the submitted documents.&#x20;

The Applicant will be created in the workspace last accessed by the user the token was generated by. Due to this it is recommended if using a service account to not sign in as this user and move between workspaces unless intentional.

***

## Create an applicant

<mark style="color:green;">`POST`</mark> `/api-applicant-create`

Create an applicant, ready to be verified.

**Headers**

| Name          | Value                 |
| ------------- | --------------------- |
| Content-Type  | `multipart/form-data` |
| Authorization | `Bearer YOUR_TOKEN`   |

**Body**

<table><thead><tr><th>Name</th><th width="165">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>email</code></td><td>string</td><td>The applicant's email address <mark style="color:red;">(required)</mark></td></tr><tr><td><code>phone</code></td><td>string</td><td>The applicant's phone number <mark style="color:red;">(required)</mark></td></tr><tr><td><code>nameFirst</code></td><td>string</td><td>The applicant's first name <mark style="color:orange;">(optional)</mark></td></tr><tr><td><code>nameLast</code></td><td>string</td><td>The applicant's last name <mark style="color:orange;">(optional)</mark></td></tr><tr><td><code>flowName</code></td><td>string</td><td><p>The name of the flow you'd like the applicant to go through </p><p><mark style="color:red;">(required)</mark></p></td></tr><tr><td><code>sourceKey</code></td><td>string</td><td>An internal unique identifier, or source, that you can use to identify where the entity came from, which is returned in all responses <mark style="color:orange;">(optional)</mark> </td></tr><tr><td><code>externalUserId</code></td><td>list</td><td>External identifiers that are returned in all responses <mark style="color:orange;">(optional)</mark> </td></tr><tr><td><code>sendRequest</code></td><td>boolean</td><td>Create and send an onboarding link via email and text message <mark style="color:orange;">(optional)</mark></td></tr></tbody></table>

#### Request

{% tabs %}
{% tab title="cURL" %}

```sh
curl --location 'https://enterprise.personr.co/api/1.1/wf/api-applicant-create' \
--form 'email="johndoe@mail.com"' \
--form 'phone="+61 424 424 424"' \
--form 'nameFirst="John"' \
--form 'nameLast="Doe"' \
--form 'flowName="KYC basic"' \
--form 'sourceKey="Example Source Key"' \
--form 'externalUserId=["UUID1","UUID2"]'
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
var axios = require('axios');
var FormData = require('form-data');
var data = new FormData();
data.append('email', 'johndoe@mail.com');
data.append('phone', '+61 424 424 424');
data.append('nameFirst', 'John');
data.append('nameLast', 'Doe');
data.append('flowName', 'KYC basic');

var config = {
  method: 'post',
maxBodyLength: Infinity,
  url: 'https://enterprise.personr.co/api/1.1/wf/api-applicant-create',
  headers: { 
    ...data.getHeaders()
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});
```

{% endtab %}

{% tab title="Javascript" %}

```javascript
var form = new FormData();
form.append("email", "johndoe@mail.com");
form.append("phone", "+61 424 424 424");
form.append("nameFirst", "John");
form.append("nameLast", "Doe");
form.append("flowName", "KYC basic");

var settings = {
  "url": "https://enterprise.personr.co/api/1.1/wf/api-applicant-create",
  "method": "POST",
  "timeout": 0,
  "processData": false,
  "mimeType": "multipart/form-data",
  "contentType": false,
  "data": form
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require "uri"
require "net/http"

url = URI("https://enterprise.personr.co/api/1.1/wf/api-applicant-create")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
form_data = [['email', 'johndoe@mail.com'],['phone', '+61 424 424 424'],['nameFirst', 'John'],['nameLast', 'Doe'],['flowName', 'KYC basic']]
request.set_form form_data, 'multipart/form-data'
response = https.request(request)
puts response.read_body
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

url = "https://enterprise.personr.co/api/1.1/wf/api-applicant-create"

payload={'email': 'johndoe@mail.com',
'phone': '+61 424 424 424',
'nameFirst': 'John',
'nameLast': 'Doe',
'flowName': 'KYC basic'}
files=[

]
headers = {}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)
```

{% endtab %}
{% endtabs %}

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
  "status": "success",
  "response": {
    "applicantId": "4242424242424x424242424242424242",
    "email": "johndoe@mail.com",
    "phone": "+61 424 424 424",
    "nameFirst": "John",
    "nameLast": "Doe",
    "flowName": "KYC basic",
    "applicantStatus": "Created"
  }
}
```

{% endtab %}

{% tab title="400" %}

```json
{
    "statusCode": 400,
    "message": "Error: Cannot read docSets - incorrect flow name"
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Remember to input the flow name exactly as you created it. Don't use the template name.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://manual.personr.co/api-documentation/applicants/creating-an-applicant.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
