> For the complete documentation index, see [llms.txt](https://help.activenow.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.activenow.io/en/api-documentation/participants.md).

# Participants

## Create a participant

> Create a new participant record in your school.<br>

```json
{"openapi":"3.1.0","info":{"title":"ActiveNow Integrations API","version":"v1"},"servers":[{"url":"https://app.activenow.io"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"Integration API key from Settings > API."}},"schemas":{"Participant":{"type":"object","required":["id"],"properties":{"id":{"type":"integer"},"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":["string","null"]},"phone":{"type":["string","null"]},"active":{"type":"boolean"},"balance":{"type":"string","description":"Account balance as decimal string."}}}},"responses":{"Unauthorized":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"Forbidden":{"description":"API access not enabled or school not on premium plan","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}},"paths":{"/api/v1/participants":{"post":{"summary":"Create a participant","description":"Create a new participant record in your school.\n","tags":["Participants"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["first_name"],"properties":{"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string"},"birthdate":{"type":"string","format":"date","description":"Date of birth (YYYY-MM-DD)."},"has_parent":{"type":"boolean","description":"Whether this participant is a minor with a parent/guardian."},"parent_first_name":{"type":"string","description":"Parent/guardian's first name. Use for minors when `has_parent` is true."},"parent_last_name":{"type":"string","description":"Parent/guardian's last name. Use for minors when `has_parent` is true."},"language":{"type":"string","description":"Preferred language code (e.g. \"pl\", \"en\")."}}}}}},"responses":{"201":{"description":"Participant created. Returns the full participant object.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Participant"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"description":"Validation errors","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"object","description":"Field-level validation errors."}}}}}}}}}}}
```

## Search participants

> Search for participants using filters.\
> \
> \### Standard fields\
> \
> \| Field | Type | Description |\
> \|-------|------|-------------|\
> \| \`email\` | string | Participant's email address |\
> \| \`phone\` | string | Participant's phone number |\
> \| \`first\_name\` | string | Participant's first name |\
> \| \`last\_name\` | string | Participant's last name |\
> \| \`active\` | boolean | Whether the participant is currently active |\
> \
> \### Custom fields\
> \
> Use \`field: custom\` with the custom field \`name\` configured in your\
> school's settings. All custom field values are matched as strings.\
> \
> \### Pagination\
> \
> Results are ordered by \`id\` and paginated with a cursor. Pass the \`id\`\
> of the last participant from the previous page as \`starting\_after\` to\
> fetch the next page. \`has\_more\` tells you whether another page exists.<br>

```json
{"openapi":"3.1.0","info":{"title":"ActiveNow Integrations API","version":"v1"},"servers":[{"url":"https://app.activenow.io"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"Integration API key from Settings > API."}},"schemas":{"Participant":{"type":"object","required":["id"],"properties":{"id":{"type":"integer"},"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":["string","null"]},"phone":{"type":["string","null"]},"active":{"type":"boolean"},"balance":{"type":"string","description":"Account balance as decimal string."}}}},"responses":{"Unauthorized":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"Forbidden":{"description":"API access not enabled or school not on premium plan","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}},"paths":{"/api/v1/participants/search":{"post":{"summary":"Search participants","description":"Search for participants using filters.\n\n### Standard fields\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `email` | string | Participant's email address |\n| `phone` | string | Participant's phone number |\n| `first_name` | string | Participant's first name |\n| `last_name` | string | Participant's last name |\n| `active` | boolean | Whether the participant is currently active |\n\n### Custom fields\n\nUse `field: custom` with the custom field `name` configured in your\nschool's settings. All custom field values are matched as strings.\n\n### Pagination\n\nResults are ordered by `id` and paginated with a cursor. Pass the `id`\nof the last participant from the previous page as `starting_after` to\nfetch the next page. `has_more` tells you whether another page exists.\n","tags":["Participants"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["filters"],"properties":{"filters":{"type":"array","description":"One or more filters combined with AND logic.","items":{"type":"object","required":["field","operator","value"],"properties":{"field":{"type":"string","description":"Field to filter by. Use a standard field name\n(`email`, `phone`, `first_name`, `last_name`, `active`)\nor `custom` for custom participant fields.\n"},"name":{"type":"string","description":"Required when `field` is `custom`. Must exactly match the custom field name in settings."},"operator":{"type":"string","enum":["EQ"],"description":"Comparison operator. Only `EQ` is supported for now."},"value":{"description":"Value to match against the field."}}}},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25,"description":"Number of participants to return per page."},"starting_after":{"type":"integer","description":"Cursor for pagination - the `id` of the last participant on the previous page."}}}}}},"responses":{"200":{"description":"Participants matching the filters","content":{"application/json":{"schema":{"type":"object","required":["data","has_more"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Participant"}},"has_more":{"type":"boolean","description":"Whether more results exist beyond this page."}}}}}},"400":{"description":"Missing or invalid filters parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"description":"Referenced custom field not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"422":{"description":"Unsupported operator, unknown field, or ambiguous custom field name","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}}}}
```


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.activenow.io/en/api-documentation/participants.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
