# Creating attendees

There are two scopes that can be used to create Event Attendees:

* Admin scope (using the **System scope** access token);
* Anonymous scope (without using any access tokens);

### Admin scope

To create event attendees using the admin scope, you must have a **System scope** access token with full access to the company or event environment. You must have in hands the following query attributes: `tokenID` `eventID`, and the following body attributes: `name` and `username`.

* `name` is the Attendee name;
* `username` is an username, its value can be an email address -- recommended in case you have `username` disabled in your event settings;

#### Example

The endpoint that you should use is `event.person.bind` on RCP or `event/person/bind` on RESTful.

Here is how to create an attendee:

```sh
curl --request POST \
     --url 'https://api.inevent.com/?action=event.person.bind&eventID=YOUR_EVENT_ID' \
     --header 'Accept: application/json' \
     --header 'Content-Type: application/x-www-form-urlencoded' \
     --data name=Mauricio%20Giordano&username=mauriciogior&company=InEvent
```

You can also provide extra parameters to be added directly in the creation of the attendee (they are all optional):

| Field name    | Description                                                                                                                                                                                                                          |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| email         | The attendee email address. If you leave this field empty **and** the username is an email, it will be used the username as its value automatically.                                                                                 |
| role          | The attendee job title.                                                                                                                                                                                                              |
| company       | The attendee company.                                                                                                                                                                                                                |
| telephone     | The attendee telephone.                                                                                                                                                                                                              |
| origin        | The origin of the creation (can be any string -- "my-api-integration" for instance). Useful to track where attendees came from.                                                                                                      |
| createSpeaker | Should it create a speaker profile for this attendee (accepts boolean **0** or **1**, defaults to 0).                                                                                                                                |
| level         | A numeric representation of the attendee permission level within the event environment. Defaults to `LEVEL_USER`. You can find a mapping [here](https://developers.inevent.com/docs/permission-levels#permission-level-api-mapping). |

#### Response

Once you create the attendee, you will get a response similar to the following one:

```json
{
  "count": 1,
  "data": [
    {
      "username": "mauriciogior",
      "facebookID": "0",
      "linkedInID": "",
      "twitterID": "",
      "email": "",
      "telephone": "",
      "qrCode": "31cb6bbc7e13bb9b5e1d2eb4e403f59d77fda4b004da0c82fdf1ed5d71d97d8c",
      "ebQrCode": "",
      "nfc": "",
      "eventID": "5",
      "personID": "185",
      "firstName": "Mauricio",
      "lastName": "Giordano",
      "name": "Mauricio Giordano",
      "personName": "Mauricio Giordano",
      "role": "",
      "company": "InEvent",
      "summary": "",
      "image": "",
      "headline": " @ InEvent",
      "personHeadline": " @ InEvent",
      "city": "",
      "facebook": "",
      "linkedIn": "",
      "twitter": "",
      "instagram": "",
      "website": "",
      "position": "42",
      "level": "1",
      "ebUserID": "",
      "mkUserID": "0",
      "approved": "1",
      "paid": "0",
      "rsvp": "-1",
      "present": "0",
      "message": "",
      "private": "0",
      "meetingQuotaID": "0",
      "meetingAutoConfirm": "1",
      "engagement": "0",
      "language": "en",
      "personLanguage": "en",
      "origin": "panel",
      "salesforceID": "",
      "salesforceType": "",
      "hubspotID": "",
      "enrollmentDate": "1634691218",
      "updatedDate": "",
      "meetingQuotaName": "",
      "meetingQuotaAmount": "0",
      "device": "none",
      "downloaded": "0",
      "favorite": "0",
      "ally": "0",
      "isSponsor": "0",
      "prints": "0",
      "profileID": "",
      "ticketID": "",
      "assistantEmail": "",
      "ticketName": "",
      "ticketEntrance": "",
      "tags": [],
      "speakerID": ""
    }
  ]
}
```

### Anonymous scope

To create an attendee using the anonymous scope, you will need an event with proper settings that allows users to enroll without a **ticket** or an **invite** (although it's doable using the **invite** attribute as long as the email is on your Invitees List). You must have in hands the following query attribute: `eventID`, and the following body attributes: `firstName`, `lastName`, `email` and `feedbackContent`.

* `firstName` is the Attendee first name;
* `lastName` is the Attendee last name;
* `email` is the Attendee email;
* `feedbackContent` is an Array with custom fields (accepts empty array in case no required custom fields exist);

{% hint style="info" %}

### Custom fields

In case you have **required** custom fields, you must send them through the **feedbackContent** as an Array of Objects with the following attributes: *feedbackID* and *value*.

**Example:**\
`[ {"feedbackID": "1234", "value": "My answer 1"}, {"feedbackID": "2345", "value": "My answer 2"} ]`

In case you have an `API Field` key set for your custom field, you can use the following format:\
`{"f_question_1": "My answer 1", "f_question_2": "My answer 2"}`

Please note that in this case, it should be an Object instead of an Array.
{% endhint %}

#### Example

The endpoint that you should use is `form.respondRegistration` on RCP or `form/respondRegistration` on RESTful.

Here is how to create an attendee:

```sh
curl --request POST \
     --url 'https://api.inevent.com/?action=form.respondRegistration&eventID=YOUR_EVENT_ID' \
     --header 'Accept: application/json' \
     --header 'Content-Type: application/x-www-form-urlencoded' \
     --data firstName=Mauricio&lastName=Giordano&email=example@email.com&company=InEvent&feedbackContent=[]
```

You can also provide extra parameters to be added directly in the creation of the attendee (they are all optional):

| Field name | Description                                                                                                          |
| ---------- | -------------------------------------------------------------------------------------------------------------------- |
| username   | If you leave it blank, it will be the same as the email address.                                                     |
| invite     | In case you have the **Invite Requirement** setting enabled, you must send the email here as well.                   |
| image      | The URL of the attendee profile picture.                                                                             |
| password   | The attendee password to access the platform -- if you leave it blank, it will generate a random password.           |
| role       | The attendee job title.                                                                                              |
| company    | The attendee company.                                                                                                |
| telephone  | The attendee telephone.                                                                                              |
| rsvp       | A numeric boolean 0 or 1 (defaults to 0) to indicate if the attendee RSVPed to the event.                            |
| login      | A numeric boolean 0 or 1 (defaults to 0) to indicate if the response should contain the user access token `tokenID`. |
| tagIDs     | A list of `tagIDs` separated by comma (only Attendee-type tags are allowed).                                         |
| private    | A numeric boolean 0 or 1 (defaults to 0) to indicate if this user has its profile set as private.                    |

#### Response

Once you create the attendee, you will get a response similar to the following one:

```json
{
  "count": 1,
  "data": [
    {
      "username": "example@email.com",
      "facebookID": "0",
      "linkedInID": "",
      "twitterID": "",
      "email": "",
      "telephone": "",
      "qrCode": "31cb6bbc7e13bb9b5e1d2eb4e403f59d77fda4b004da0c82fdf1ed5d71d97d8c",
      "ebQrCode": "",
      "nfc": "",
      "eventID": "5",
      "personID": "185",
      "firstName": "Mauricio",
      "lastName": "Giordano",
      "name": "Mauricio Giordano",
      "personName": "Mauricio Giordano",
      "role": "",
      "company": "InEvent",
      "summary": "",
      "image": "",
      "headline": " @ InEvent",
      "personHeadline": " @ InEvent",
      "city": "",
      "facebook": "",
      "linkedIn": "",
      "twitter": "",
      "instagram": "",
      "website": "",
      "position": "42",
      "level": "1",
      "ebUserID": "",
      "mkUserID": "0",
      "approved": "1",
      "paid": "0",
      "rsvp": "-1",
      "present": "0",
      "message": "",
      "private": "0",
      "meetingQuotaID": "0",
      "meetingAutoConfirm": "1",
      "engagement": "0",
      "language": "en",
      "personLanguage": "en",
      "origin": "panel",
      "salesforceID": "",
      "salesforceType": "",
      "hubspotID": "",
      "enrollmentDate": "1634691218",
      "updatedDate": "",
      "meetingQuotaName": "",
      "meetingQuotaAmount": "0",
      "device": "none",
      "downloaded": "0",
      "favorite": "0",
      "ally": "0",
      "isSponsor": "0",
      "prints": "0",
      "profileID": "",
      "ticketID": "",
      "assistantEmail": "",
      "ticketName": "",
      "ticketEntrance": "",
      "tags": [],
      "speakerID": ""
    }
  ]
}
```


---

# 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://developers.inevent.com/attendee-api/creating-attendees.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.
