> 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/dokumentacja-api/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 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://help.activenow.io/dokumentacja-api/participants.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.
