> This is the Markdown of https://backed.giving/developers/reference/registration-entities, a page of the Backed developer documentation. Every page is listed at https://backed.giving/developers/llms.txt.

# Registration Entities

Applicant organisations and individuals. 5 operations: parameters, request body and answers, with examples.

- [GET /api/v2/registration\_entities](#listRegistrationEntities) — List registration entities.
- [POST /api/v2/registration\_entities](#createRegistrationEntity) — Add an applicant: a person and their registration entity.
- [GET /api/v2/registration\_entities/{id}](#getRegistrationEntity) — Get one registration entity with its users.
- [PATCH /api/v2/registration\_entities/{id}](#updateRegistrationEntity) — Edit an organisation’s Founded date and stage override.
- [POST /api/v2/registration\_entities/{id}/users](#addRegistrationEntityUser) — Invite a user to a registration entity.

<a id="listRegistrationEntities"></a>
## GET /api/v2/registration_entities

**List registration entities.**

Every live registration entity of the Organisation in ascending id order, at most 50 a page. No users: personal data is on the single record only.

- Operation ID: `listRegistrationEntities`
- Authentication: A Bearer token from a credential holding the `read` scope.
- Also served at `/funding_system/api/v2/registration_entities`, the documented product’s alias path.

Example request:

```bash
curl "https://your-org.backed.giving/api/v2/registration_entities" \
  -H "Authorization: Bearer $BACKED_TOKEN"
```

### Parameters

Parameters of GET /api/v2/registration_entities:

| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `limit` | query | No | `integer` | Results per page (default 50, at most 50; a larger value is read as 50). Not an integer, or below 1: 400. Example: `50`. |
| `gt` | query | No | `integer` | Return records with an id greater than this value. Page forward by passing the last id you received. Example: `1287`. |
| `lt` | query | No | `integer` | Return records with an id less than this value. |

<a id="listRegistrationEntities-200"></a>
### 200 response

A JSON array of registration entities.

Fields of RegistrationEntity:

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `id` | `integer` | Yes |  |
| `created_at` | `string` | Yes |  |
| `updated_at` | `string` | Yes |  |
| `name` | `string` | Yes |  |
| `registration_type` | `object` | Yes |  |
| `lock_version` | `integer` | Yes |  |

Example 200 response:

```json
[
  {
    "id": 311,
    "created_at": "2026-03-02T21:15:04.000Z",
    "updated_at": "2026-06-18T03:40:11.000Z",
    "name": "Te Awa Restoration Trust",
    "registration_type": {
      "id": 2,
      "name": "Organisation"
    },
    "lock_version": 4
  }
]
```

<a id="listRegistrationEntities-400"></a>
### 400 response

A query parameter is invalid, or a write’s body is not a JSON object.

Example 400 response:

```json
{
  "error": "invalid_request",
  "error_description": "limit is invalid"
}
```

<a id="listRegistrationEntities-401"></a>
### 401 response

The token is missing, invalid, expired or revoked, of another Organisation, or API access is not Full. Ask for a new token.

Headers: `WWW-Authenticate`.

Example 401 response:

```json
{
  "error": "invalid_token",
  "error_description": "The access token is invalid or has expired"
}
```

<a id="listRegistrationEntities-403"></a>
### 403 response

The request was sent over plain HTTP and was not processed.

Example 403 response:

```json
{
  "error": "https_required"
}
```

<a id="listRegistrationEntities-404"></a>
### 404 response

An unknown host or path, or an id that is unknown, deleted or of another Organisation.

Example 404 response:

```json
{
  "error": "not_found"
}
```

<a id="listRegistrationEntities-429"></a>
### 429 response

A rate limit was exceeded: 120 requests a minute per credential, 30 token requests a minute per client\_id.

Headers: `Retry-After`.

Example 429 response:

```json
{
  "error": "rate_limited",
  "error_description": "Too many requests"
}
```

<a id="listRegistrationEntities-500"></a>
### 500 response

An unexpected server error.

Example 500 response:

```json
{
  "error": "server_error"
}
```

<a id="listRegistrationEntities-503"></a>
### 503 response

The Organisation’s API access cannot be determined, or a dependency is unavailable. Retry after the given seconds.

Headers: `Retry-After`.

Example 503 response:

```json
{
  "error": "temporarily_unavailable"
}
```

<a id="createRegistrationEntity"></a>
## POST /api/v2/registration_entities

**Add an applicant: a person and their registration entity.**

`Add Applicant` as the run-as Administrator (`applicants.add`). Without `invite` nobody is told and the record reads Unclaimed.

- Operation ID: `createRegistrationEntity`
- Authentication: A Bearer token from a credential holding the `write:registrations` scope. Runs as the credential’s Administrator, and needs an `Idempotency-Key` header.

Example request:

```bash
curl -X POST "https://your-org.backed.giving/api/v2/registration_entities" \
  -H "Authorization: Bearer $BACKED_TOKEN" \
  -H "Idempotency-Key: 7d1f0c2e-5b8a-4f3e-9c61-2a4b8e9d0f13" \
  -H "Content-Type: application/json" \
  -d '{"registration_type_id":2,"entity_name":"Te Awa Restoration Trust","first_name":"Aroha","last_name":"Ngata","email":"aroha@example.org","invite":true}'
```

### Parameters

Parameters of POST /api/v2/registration_entities:

| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `Idempotency-Key` | header | Yes | `string` | A key of 1 to 255 characters, unique per write. A retry with the same key, method, path and body within 24 hours answers the first response again (with `Idempotent-Replayed: true`) and writes nothing. Example: `7d1f0c2e-5b8a-4f3e-9c61-2a4b8e9d0f13`. |

### Request body

`application/json`, the `RegistrationEntityCreate` schema. `Add Applicant`: the Registration Type, the person, and for an organisation the entity’s name. `invite` sends the applicant invitation (default false).

Fields of the RegistrationEntityCreate body:

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `registration_type_id` | `integer` | Yes |  |
| `entity_name` | `string` | No |  |
| `first_name` | `string` | Yes |  |
| `last_name` | `string` | Yes |  |
| `email` | `string` | Yes |  |
| `invite` | `boolean` | No |  |

Example request body:

```json
{
  "registration_type_id": 2,
  "entity_name": "Te Awa Restoration Trust",
  "first_name": "Aroha",
  "last_name": "Ngata",
  "email": "aroha@example.org",
  "invite": true
}
```

<a id="createRegistrationEntity-201"></a>
### 201 response

The registration entity as the single read answers it.

Headers: `Idempotent-Replayed`.

Fields of RegistrationEntityDetail:

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `id` | `integer` | Yes |  |
| `created_at` | `string` | Yes |  |
| `updated_at` | `string` | Yes |  |
| `name` | `string` | Yes |  |
| `registration_type` | `object` | Yes |  |
| `lock_version` | `integer` | Yes |  |
| `users` | `array of object` | Yes |  |

Example 201 response:

```json
{
  "id": 311,
  "created_at": "2026-03-02T21:15:04.000Z",
  "updated_at": "2026-06-18T03:40:11.000Z",
  "name": "Te Awa Restoration Trust",
  "registration_type": {
    "id": 2,
    "name": "Organisation"
  },
  "lock_version": 4,
  "users": [
    {
      "id": 5012,
      "email": "aroha@example.org",
      "first_name": "Aroha",
      "last_name": "Ngata"
    }
  ]
}
```

<a id="createRegistrationEntity-400"></a>
### 400 response

`idempotency_key_required`: The write has no Idempotency-Key header of 1 to 255 characters. `invalid_request`: A query parameter is invalid, or a write’s body is not a JSON object.

Example 400 response: idempotency_key_required:

```json
{
  "error": "idempotency_key_required",
  "error_description": "A write needs an Idempotency-Key header of 1 to 255 characters"
}
```

Example 400 response: invalid_request:

```json
{
  "error": "invalid_request",
  "error_description": "limit is invalid"
}
```

<a id="createRegistrationEntity-401"></a>
### 401 response

The token is missing, invalid, expired or revoked, of another Organisation, or API access is not Full. Ask for a new token.

Headers: `WWW-Authenticate`.

Example 401 response:

```json
{
  "error": "invalid_token",
  "error_description": "The access token is invalid or has expired"
}
```

<a id="createRegistrationEntity-403"></a>
### 403 response

`https_required`: The request was sent over plain HTTP and was not processed. `insufficient_scope`: The credential does not hold the scope the route needs. `run_as_disabled`: The credential has no run-as Administrator, or that person is no longer one. `forbidden`: The run-as Administrator lacks the permission, or the record is outside their Data Access Rules.

Headers: `WWW-Authenticate`.

Example 403 response: https_required:

```json
{
  "error": "https_required"
}
```

Example 403 response: insufficient_scope:

```json
{
  "error": "insufficient_scope",
  "error_description": "This credential lacks the write:applications scope"
}
```

Example 403 response: run_as_disabled:

```json
{
  "error": "run_as_disabled",
  "error_description": "This credential has no enabled run-as Administrator"
}
```

Example 403 response: forbidden:

```json
{
  "error": "forbidden",
  "error_description": "The run-as Administrator may not do this to this record"
}
```

<a id="createRegistrationEntity-404"></a>
### 404 response

An unknown host or path, or an id that is unknown, deleted or of another Organisation.

Example 404 response:

```json
{
  "error": "not_found"
}
```

<a id="createRegistrationEntity-409"></a>
### 409 response

The first request with this Idempotency-Key has not finished. Nothing was written; retry after the given seconds.

Headers: `Retry-After`.

Example 409 response:

```json
{
  "error": "idempotency_in_progress",
  "error_description": "The first request with this Idempotency-Key has not finished. If this persists it stopped part-way: check whether the record exists before writing again with a new key"
}
```

<a id="createRegistrationEntity-413"></a>
### 413 response

The body, or the declared file, is larger than the limit that applies.

Example 413 response:

```json
{
  "error": "payload_too_large",
  "error_description": "The request body is too large"
}
```

<a id="createRegistrationEntity-415"></a>
### 415 response

The body is not application/json, or the target does not accept the file’s content type.

Example 415 response:

```json
{
  "error": "unsupported_media_type",
  "error_description": "The request body must be application/json"
}
```

<a id="createRegistrationEntity-422"></a>
### 422 response

`idempotency_key_reused`: The Idempotency-Key was used in the last 24 hours for a different method, path or body. `unknown_field`: The body has a property the route does not document; the first is named. `validation_failed`: Body values the product’s own form would refuse; `fields` names each.

Example 422 response: idempotency_key_reused:

```json
{
  "error": "idempotency_key_reused",
  "error_description": "This Idempotency-Key was used for a different request"
}
```

Example 422 response: unknown_field:

```json
{
  "error": "unknown_field",
  "error_description": "bank_account_number is not a writable field"
}
```

Example 422 response: validation_failed:

```json
{
  "error": "validation_failed",
  "error_description": "Invalid fields: due_date",
  "fields": [
    "due_date"
  ]
}
```

<a id="createRegistrationEntity-429"></a>
### 429 response

A rate limit was exceeded: 120 requests a minute per credential, 30 token requests a minute per client\_id.

Headers: `Retry-After`.

Example 429 response:

```json
{
  "error": "rate_limited",
  "error_description": "Too many requests"
}
```

<a id="createRegistrationEntity-500"></a>
### 500 response

An unexpected server error.

Example 500 response:

```json
{
  "error": "server_error"
}
```

<a id="createRegistrationEntity-503"></a>
### 503 response

The Organisation’s API access cannot be determined, or a dependency is unavailable. Retry after the given seconds.

Headers: `Retry-After`.

Example 503 response:

```json
{
  "error": "temporarily_unavailable"
}
```

<a id="getRegistrationEntity"></a>
## GET /api/v2/registration_entities/{id}

**Get one registration entity with its users.**

Every list property, then `users[]`: the account owner first.

- Operation ID: `getRegistrationEntity`
- Authentication: A Bearer token from a credential holding the `read` scope.
- Also served at `/funding_system/api/v2/registration_entities/{id}`, the documented product’s alias path.

Example request:

```bash
curl "https://your-org.backed.giving/api/v2/registration_entities/42" \
  -H "Authorization: Bearer $BACKED_TOKEN"
```

### Parameters

Parameters of GET /api/v2/registration_entities/{id}:

| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `id` | path | Yes | `integer` | The record id. Anything but a positive integer is 404. Example: `42`. |

<a id="getRegistrationEntity-200"></a>
### 200 response

The registration entity with its users.

Fields of RegistrationEntityDetail:

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `id` | `integer` | Yes |  |
| `created_at` | `string` | Yes |  |
| `updated_at` | `string` | Yes |  |
| `name` | `string` | Yes |  |
| `registration_type` | `object` | Yes |  |
| `lock_version` | `integer` | Yes |  |
| `users` | `array of object` | Yes |  |

Example 200 response:

```json
{
  "id": 311,
  "created_at": "2026-03-02T21:15:04.000Z",
  "updated_at": "2026-06-18T03:40:11.000Z",
  "name": "Te Awa Restoration Trust",
  "registration_type": {
    "id": 2,
    "name": "Organisation"
  },
  "lock_version": 4,
  "users": [
    {
      "id": 5012,
      "email": "aroha@example.org",
      "first_name": "Aroha",
      "last_name": "Ngata"
    }
  ]
}
```

<a id="getRegistrationEntity-401"></a>
### 401 response

The token is missing, invalid, expired or revoked, of another Organisation, or API access is not Full. Ask for a new token.

Headers: `WWW-Authenticate`.

Example 401 response:

```json
{
  "error": "invalid_token",
  "error_description": "The access token is invalid or has expired"
}
```

<a id="getRegistrationEntity-403"></a>
### 403 response

The request was sent over plain HTTP and was not processed.

Example 403 response:

```json
{
  "error": "https_required"
}
```

<a id="getRegistrationEntity-404"></a>
### 404 response

An unknown host or path, or an id that is unknown, deleted or of another Organisation.

Example 404 response:

```json
{
  "error": "not_found"
}
```

<a id="getRegistrationEntity-429"></a>
### 429 response

A rate limit was exceeded: 120 requests a minute per credential, 30 token requests a minute per client\_id.

Headers: `Retry-After`.

Example 429 response:

```json
{
  "error": "rate_limited",
  "error_description": "Too many requests"
}
```

<a id="getRegistrationEntity-500"></a>
### 500 response

An unexpected server error.

Example 500 response:

```json
{
  "error": "server_error"
}
```

<a id="getRegistrationEntity-503"></a>
### 503 response

The Organisation’s API access cannot be determined, or a dependency is unavailable. Retry after the given seconds.

Headers: `Retry-After`.

Example 503 response:

```json
{
  "error": "temporarily_unavailable"
}
```

<a id="updateRegistrationEntity"></a>
## PATCH /api/v2/registration_entities/{id}

**Edit an organisation’s Founded date and stage override.**

The profile’s own edit (`applicants.edit`) at the `If-Match` version: a stale version is 412 before anything is written. Never the bank account.

- Operation ID: `updateRegistrationEntity`
- Authentication: A Bearer token from a credential holding the `write:registrations` scope. Runs as the credential’s Administrator, and needs an `Idempotency-Key` header.

Example request:

```bash
curl -X PATCH "https://your-org.backed.giving/api/v2/registration_entities/42" \
  -H "Authorization: Bearer $BACKED_TOKEN" \
  -H "If-Match: 4" \
  -H "Idempotency-Key: 7d1f0c2e-5b8a-4f3e-9c61-2a4b8e9d0f13" \
  -H "Content-Type: application/json" \
  -d '{"founded_on":"2014-03-01","stage_override":"growth","stage_override_reason":"Confirmed by the 2025 annual report."}'
```

### Parameters

Parameters of PATCH /api/v2/registration_entities/{id}:

| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `id` | path | Yes | `integer` | The record id. Anything but a positive integer is 404. Example: `42`. |
| `If-Match` | header | Yes | `string` | The record’s `lock_version` as you last read it, bare or quoted (`3` or `"3"`). Example: `4`. |
| `Idempotency-Key` | header | Yes | `string` | A key of 1 to 255 characters, unique per write. A retry with the same key, method, path and body within 24 hours answers the first response again (with `Idempotent-Replayed: true`) and writes nothing. Example: `7d1f0c2e-5b8a-4f3e-9c61-2a4b8e9d0f13`. |

### Request body

`application/json`, the `RegistrationEntityUpdate` schema. An organisation’s `Founded` date and stage override. Only the properties sent change.

Fields of the RegistrationEntityUpdate body:

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `founded_on` | `string \| null` | No |  |
| `stage_override` | `string \| null` | No | One of `seed`, `early`, `growth`, `advanced`. |
| `stage_override_reason` | `string \| null` | No |  |

Example request body:

```json
{
  "founded_on": "2014-03-01",
  "stage_override": "growth",
  "stage_override_reason": "Confirmed by the 2025 annual report."
}
```

<a id="updateRegistrationEntity-200"></a>
### 200 response

The registration entity as the single read answers it.

Headers: `Idempotent-Replayed`.

Fields of RegistrationEntityDetail:

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `id` | `integer` | Yes |  |
| `created_at` | `string` | Yes |  |
| `updated_at` | `string` | Yes |  |
| `name` | `string` | Yes |  |
| `registration_type` | `object` | Yes |  |
| `lock_version` | `integer` | Yes |  |
| `users` | `array of object` | Yes |  |

Example 200 response:

```json
{
  "id": 311,
  "created_at": "2026-03-02T21:15:04.000Z",
  "updated_at": "2026-06-18T03:40:11.000Z",
  "name": "Te Awa Restoration Trust",
  "registration_type": {
    "id": 2,
    "name": "Organisation"
  },
  "lock_version": 4,
  "users": [
    {
      "id": 5012,
      "email": "aroha@example.org",
      "first_name": "Aroha",
      "last_name": "Ngata"
    }
  ]
}
```

<a id="updateRegistrationEntity-400"></a>
### 400 response

`idempotency_key_required`: The write has no Idempotency-Key header of 1 to 255 characters. `invalid_request`: A query parameter is invalid, or a write’s body is not a JSON object.

Example 400 response: idempotency_key_required:

```json
{
  "error": "idempotency_key_required",
  "error_description": "A write needs an Idempotency-Key header of 1 to 255 characters"
}
```

Example 400 response: invalid_request:

```json
{
  "error": "invalid_request",
  "error_description": "limit is invalid"
}
```

<a id="updateRegistrationEntity-401"></a>
### 401 response

The token is missing, invalid, expired or revoked, of another Organisation, or API access is not Full. Ask for a new token.

Headers: `WWW-Authenticate`.

Example 401 response:

```json
{
  "error": "invalid_token",
  "error_description": "The access token is invalid or has expired"
}
```

<a id="updateRegistrationEntity-403"></a>
### 403 response

`https_required`: The request was sent over plain HTTP and was not processed. `insufficient_scope`: The credential does not hold the scope the route needs. `run_as_disabled`: The credential has no run-as Administrator, or that person is no longer one. `forbidden`: The run-as Administrator lacks the permission, or the record is outside their Data Access Rules.

Headers: `WWW-Authenticate`.

Example 403 response: https_required:

```json
{
  "error": "https_required"
}
```

Example 403 response: insufficient_scope:

```json
{
  "error": "insufficient_scope",
  "error_description": "This credential lacks the write:applications scope"
}
```

Example 403 response: run_as_disabled:

```json
{
  "error": "run_as_disabled",
  "error_description": "This credential has no enabled run-as Administrator"
}
```

Example 403 response: forbidden:

```json
{
  "error": "forbidden",
  "error_description": "The run-as Administrator may not do this to this record"
}
```

<a id="updateRegistrationEntity-404"></a>
### 404 response

An unknown host or path, or an id that is unknown, deleted or of another Organisation.

Example 404 response:

```json
{
  "error": "not_found"
}
```

<a id="updateRegistrationEntity-409"></a>
### 409 response

The first request with this Idempotency-Key has not finished. Nothing was written; retry after the given seconds.

Headers: `Retry-After`.

Example 409 response:

```json
{
  "error": "idempotency_in_progress",
  "error_description": "The first request with this Idempotency-Key has not finished. If this persists it stopped part-way: check whether the record exists before writing again with a new key"
}
```

<a id="updateRegistrationEntity-412"></a>
### 412 response

If-Match is missing, malformed or not the record’s current lock\_version, or the record changed under the write. Nothing was written.

Example 412 response:

```json
{
  "error": "precondition_failed",
  "error_description": "If-Match must carry the record’s current lock_version"
}
```

<a id="updateRegistrationEntity-413"></a>
### 413 response

The body, or the declared file, is larger than the limit that applies.

Example 413 response:

```json
{
  "error": "payload_too_large",
  "error_description": "The request body is too large"
}
```

<a id="updateRegistrationEntity-415"></a>
### 415 response

The body is not application/json, or the target does not accept the file’s content type.

Example 415 response:

```json
{
  "error": "unsupported_media_type",
  "error_description": "The request body must be application/json"
}
```

<a id="updateRegistrationEntity-422"></a>
### 422 response

`idempotency_key_reused`: The Idempotency-Key was used in the last 24 hours for a different method, path or body. `unknown_field`: The body has a property the route does not document; the first is named. `validation_failed`: Body values the product’s own form would refuse; `fields` names each.

Example 422 response: idempotency_key_reused:

```json
{
  "error": "idempotency_key_reused",
  "error_description": "This Idempotency-Key was used for a different request"
}
```

Example 422 response: unknown_field:

```json
{
  "error": "unknown_field",
  "error_description": "bank_account_number is not a writable field"
}
```

Example 422 response: validation_failed:

```json
{
  "error": "validation_failed",
  "error_description": "Invalid fields: due_date",
  "fields": [
    "due_date"
  ]
}
```

<a id="updateRegistrationEntity-429"></a>
### 429 response

A rate limit was exceeded: 120 requests a minute per credential, 30 token requests a minute per client\_id.

Headers: `Retry-After`.

Example 429 response:

```json
{
  "error": "rate_limited",
  "error_description": "Too many requests"
}
```

<a id="updateRegistrationEntity-500"></a>
### 500 response

An unexpected server error.

Example 500 response:

```json
{
  "error": "server_error"
}
```

<a id="updateRegistrationEntity-503"></a>
### 503 response

The Organisation’s API access cannot be determined, or a dependency is unavailable. Retry after the given seconds.

Headers: `Retry-After`.

Example 503 response:

```json
{
  "error": "temporarily_unavailable"
}
```

<a id="addRegistrationEntityUser"></a>
## POST /api/v2/registration_entities/{id}/users

**Invite a user to a registration entity.**

`Invite Applicant` (`applicants.invite`): an existing person is attached, never duplicated; a new address is sent the applicant invitation, never a password.

- Operation ID: `addRegistrationEntityUser`
- Authentication: A Bearer token from a credential holding the `write:registrations` scope. Runs as the credential’s Administrator, and needs an `Idempotency-Key` header.

Example request:

```bash
curl -X POST "https://your-org.backed.giving/api/v2/registration_entities/42/users" \
  -H "Authorization: Bearer $BACKED_TOKEN" \
  -H "Idempotency-Key: 7d1f0c2e-5b8a-4f3e-9c61-2a4b8e9d0f13" \
  -H "Content-Type: application/json" \
  -d '{"email":"rawiri@example.org","first_name":"Rawiri","last_name":"Ngata"}'
```

### Parameters

Parameters of POST /api/v2/registration_entities/{id}/users:

| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `id` | path | Yes | `integer` | The record id. Anything but a positive integer is 404. Example: `42`. |
| `Idempotency-Key` | header | Yes | `string` | A key of 1 to 255 characters, unique per write. A retry with the same key, method, path and body within 24 hours answers the first response again (with `Idempotent-Replayed: true`) and writes nothing. Example: `7d1f0c2e-5b8a-4f3e-9c61-2a4b8e9d0f13`. |

### Request body

`application/json`, the `RegistrationEntityUserCreate` schema. `Invite Applicant`: an existing person of the Organisation is attached; a new address is sent the applicant invitation.

Fields of the RegistrationEntityUserCreate body:

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `email` | `string` | Yes |  |
| `first_name` | `string` | Yes |  |
| `last_name` | `string` | Yes |  |

Example request body:

```json
{
  "email": "rawiri@example.org",
  "first_name": "Rawiri",
  "last_name": "Ngata"
}
```

<a id="addRegistrationEntityUser-201"></a>
### 201 response

The membership.

Headers: `Idempotent-Replayed`.

Fields of RegistrationEntityMembership:

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `registration_entity_id` | `integer` | Yes |  |
| `user_id` | `integer` | Yes |  |
| `email` | `string` | Yes |  |
| `invited` | `boolean` | Yes |  |

Example 201 response:

```json
{
  "registration_entity_id": 311,
  "user_id": 5013,
  "email": "rawiri@example.org",
  "invited": true
}
```

<a id="addRegistrationEntityUser-400"></a>
### 400 response

`idempotency_key_required`: The write has no Idempotency-Key header of 1 to 255 characters. `invalid_request`: A query parameter is invalid, or a write’s body is not a JSON object.

Example 400 response: idempotency_key_required:

```json
{
  "error": "idempotency_key_required",
  "error_description": "A write needs an Idempotency-Key header of 1 to 255 characters"
}
```

Example 400 response: invalid_request:

```json
{
  "error": "invalid_request",
  "error_description": "limit is invalid"
}
```

<a id="addRegistrationEntityUser-401"></a>
### 401 response

The token is missing, invalid, expired or revoked, of another Organisation, or API access is not Full. Ask for a new token.

Headers: `WWW-Authenticate`.

Example 401 response:

```json
{
  "error": "invalid_token",
  "error_description": "The access token is invalid or has expired"
}
```

<a id="addRegistrationEntityUser-403"></a>
### 403 response

`https_required`: The request was sent over plain HTTP and was not processed. `insufficient_scope`: The credential does not hold the scope the route needs. `run_as_disabled`: The credential has no run-as Administrator, or that person is no longer one. `forbidden`: The run-as Administrator lacks the permission, or the record is outside their Data Access Rules.

Headers: `WWW-Authenticate`.

Example 403 response: https_required:

```json
{
  "error": "https_required"
}
```

Example 403 response: insufficient_scope:

```json
{
  "error": "insufficient_scope",
  "error_description": "This credential lacks the write:applications scope"
}
```

Example 403 response: run_as_disabled:

```json
{
  "error": "run_as_disabled",
  "error_description": "This credential has no enabled run-as Administrator"
}
```

Example 403 response: forbidden:

```json
{
  "error": "forbidden",
  "error_description": "The run-as Administrator may not do this to this record"
}
```

<a id="addRegistrationEntityUser-404"></a>
### 404 response

An unknown host or path, or an id that is unknown, deleted or of another Organisation.

Example 404 response:

```json
{
  "error": "not_found"
}
```

<a id="addRegistrationEntityUser-409"></a>
### 409 response

The first request with this Idempotency-Key has not finished. Nothing was written; retry after the given seconds.

Headers: `Retry-After`.

Example 409 response:

```json
{
  "error": "idempotency_in_progress",
  "error_description": "The first request with this Idempotency-Key has not finished. If this persists it stopped part-way: check whether the record exists before writing again with a new key"
}
```

<a id="addRegistrationEntityUser-413"></a>
### 413 response

The body, or the declared file, is larger than the limit that applies.

Example 413 response:

```json
{
  "error": "payload_too_large",
  "error_description": "The request body is too large"
}
```

<a id="addRegistrationEntityUser-415"></a>
### 415 response

The body is not application/json, or the target does not accept the file’s content type.

Example 415 response:

```json
{
  "error": "unsupported_media_type",
  "error_description": "The request body must be application/json"
}
```

<a id="addRegistrationEntityUser-422"></a>
### 422 response

`idempotency_key_reused`: The Idempotency-Key was used in the last 24 hours for a different method, path or body. `unknown_field`: The body has a property the route does not document; the first is named. `validation_failed`: Body values the product’s own form would refuse; `fields` names each.

Example 422 response: idempotency_key_reused:

```json
{
  "error": "idempotency_key_reused",
  "error_description": "This Idempotency-Key was used for a different request"
}
```

Example 422 response: unknown_field:

```json
{
  "error": "unknown_field",
  "error_description": "bank_account_number is not a writable field"
}
```

Example 422 response: validation_failed:

```json
{
  "error": "validation_failed",
  "error_description": "Invalid fields: due_date",
  "fields": [
    "due_date"
  ]
}
```

<a id="addRegistrationEntityUser-429"></a>
### 429 response

A rate limit was exceeded: 120 requests a minute per credential, 30 token requests a minute per client\_id.

Headers: `Retry-After`.

Example 429 response:

```json
{
  "error": "rate_limited",
  "error_description": "Too many requests"
}
```

<a id="addRegistrationEntityUser-500"></a>
### 500 response

An unexpected server error.

Example 500 response:

```json
{
  "error": "server_error"
}
```

<a id="addRegistrationEntityUser-503"></a>
### 503 response

The Organisation’s API access cannot be determined, or a dependency is unavailable. Retry after the given seconds.

Headers: `Retry-After`.

Example 503 response:

```json
{
  "error": "temporarily_unavailable"
}
```
