Overview
Register API Public Interface Full documentation is available here: Register API documentation - Register trainee teachers
Documents
- v2026.1
- Uploaded schema
Who can use this API
HEI ITT providers and SRS vendors
Service level
24/7
Technologies
REST, Ruby on Rails
Environments
| Environment | Base URL |
|---|---|
| dev | https://sandbox.register-trainee-teachers.service.gov.uk |
| live | https://www.register-trainee-teachers.service.gov.uk |
You need to sign in to subscribe to an API environment or view your existing subscriptions.
Current release
| Release name | Available from |
|---|---|
| v2026.1 |
Operations
POST create
- Description
-
create
- URL template
- /api/{api_version}/trainees
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
Request Model Example
{
"data": [
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[
[
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
]
]
]
],
[
[
[
[
[]
]
]
]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
]
]
}
Response Codes
| Status code | Description |
|---|---|
| 201 | creates a trainee |
| 409 | returns status code 409 (conflict) with the potential duplicates and does not create a trainee record |
| 422 | does not create a trainee with a bursary and returns an error |
Example Request
curl -X POST \
"https://{{baseURL}}/api/{api_version}/trainees" \
-H "Content-Type: application/json" \
-d '{
"data": [
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[
[
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
]
]
]
],
[
[
[
[
[]
]
]
]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
]
]
}'
POST create
- Description
-
create
- URL template
- /api/{api_version}/trainees/{trainee_id}/defer
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| trainee_id | string | Path | Required | - |
Request Model Example
{
"data": [
[
[]
]
]
}
Response Codes
| Status code | Description |
|---|---|
| 200 | defers a trainee |
| 404 | returns status code 404 |
| 422 | does not defer the trainee |
Example Request
curl -X POST \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}/defer" \
-H "Content-Type: application/json" \
-d '{
"data": [
[
[]
]
]
}'
POST create
- Description
-
create
- URL template
- /api/{api_version}/trainees/{trainee_id}/degrees
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| trainee_id | string | Path | Required | - |
Request Model Example
{
"data": [
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
]
]
}
Response Codes
| Status code | Description |
|---|---|
| 201 | creates a new degree and returns a 201 (created) status |
| 404 | does not create a new degree and returns a 404 status (not_found) status |
| 409 | returns a 409 (conflict) status |
| 422 | does not create a new degree and returns a 422 status (unprocessable_entity) status |
Example Request
curl -X POST \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}/degrees" \
-H "Content-Type: application/json" \
-d '{
"data": [
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
]
]
}'
POST create
- Description
-
create
- URL template
- /api/{api_version}/trainees/{trainee_id}/placements
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| trainee_id | string | Path | Required | - |
Request Model Example
{
"data": [
[
[]
],
[
[]
],
[
[]
]
]
}
Response Codes
| Status code | Description |
|---|---|
| 201 | creates a new placement and returns a 201 (created) status |
| 404 | does not create a new placement and returns a 404 status (not_found) status |
| 422 | does not create a new placements and returns a 422 status (unprocessable_entity) status |
Example Request
curl -X POST \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}/placements" \
-H "Content-Type: application/json" \
-d '{
"data": [
[
[]
],
[
[]
],
[
[]
]
]
}'
POST create
- Description
-
create
- URL template
- /api/{api_version}/trainees/{trainee_id}/recommend-for-qts
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| trainee_id | string | Path | Required | - |
Request Model Example
{
"data": [
[
[]
]
]
}
Response Codes
| Status code | Description |
|---|---|
| 202 | recommends the trainee for a qts award |
| 404 | returns status code 404 |
| 422 | does not change status of the trainee for a qts award |
Example Request
curl -X POST \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}/recommend-for-qts" \
-H "Content-Type: application/json" \
-d '{
"data": [
[
[]
]
]
}'
POST create
- Description
-
create
- URL template
- /api/{api_version}/trainees/{trainee_id}/update-qts-or-eyts-status
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| trainee_id | string | Path | Required | - |
Request Model Example
{
"data": [
[
[]
]
]
}
Response Codes
| Status code | Description |
|---|---|
| 202 | works the same as the old recommend-for-qts endpoint |
Example Request
curl -X POST \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}/update-qts-or-eyts-status" \
-H "Content-Type: application/json" \
-d '{
"data": [
[
[]
]
]
}'
POST create
- Description
-
create
- URL template
- /api/{api_version}/trainees/{trainee_id}/withdraw
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| trainee_id | string | Path | Required | - |
Request Model Example
{
"data": [
[
[
[]
]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
]
]
}
Response Codes
| Status code | Description |
|---|---|
| 200 | returns the trainee's withdrawal details in the response |
| 401 | did not change the trainee |
| 404 | returns status code 404 with a valid JSON response |
| 422 | returns status code 422 with a valid JSON response |
Example Request
curl -X POST \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}/withdraw" \
-H "Content-Type: application/json" \
-d '{
"data": [
[
[
[]
]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
]
]
}'
DELETE destroy
- Description
-
destroy
- URL template
- /api/{api_version}/trainees/{trainee_id}/degrees/{degree_id}
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| degree_id | string | Path | Required | - |
| trainee_id | string | Path | Required | - |
Response Codes
| Status code | Description |
|---|---|
| 200 | deletes the degree and returns a 200 status (ok) |
| 404 | does not delete the degree and returns a 404 status (not_found) |
| 422 | does not delete the degree |
Example Request
curl -X DELETE \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}/degrees/{degree_id}"
DELETE destroy
- Description
-
destroy
- URL template
- /api/{api_version}/trainees/{trainee_id}/placements/{placement_id}
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| placement_id | string | Path | Required | - |
| trainee_id | string | Path | Required | - |
Response Codes
| Status code | Description |
|---|---|
| 200 | removes the specified placement |
| 404 | returns status code 404 with a valid JSON response |
| 422 | does not delete the placement |
Example Request
curl -X DELETE \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}/placements/{placement_id}"
GET index
- Description
-
index
- URL template
- /api/{api_version}/trainees
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| academic_cycle | Api-api_version-TraineesGetRequest | Query | Optional | - |
| has_trn | string | Query | Optional | - |
| page | integer | Query | Optional | - |
| per_page | integer | Query | Optional | - |
| since | string | Query | Optional | - |
| sort_order | string | Query | Optional | - |
| status | string | Query | Optional | - |
Response Codes
| Status code | Description |
|---|---|
| 200 | returns all the trainees |
| 422 | returns status code 422 when an invalid state is provided |
Example Request
curl -X GET \
"https://{{baseURL}}/api/{api_version}/trainees"
GET index
- Description
-
index
- URL template
- /api/{api_version}/trainees/{trainee_id}/degrees
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| trainee_id | string | Path | Required | - |
Response Codes
| Status code | Description |
|---|---|
| 200 | returns status code 200 with a valid JSON response |
Example Request
curl -X GET \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}/degrees"
GET index
- Description
-
index
- URL template
- /api/{api_version}/trainees/{trainee_id}/placements
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| trainee_id | string | Path | Required | - |
Response Codes
| Status code | Description |
|---|---|
| 200 | returns status code 200 with a valid JSON response |
Example Request
curl -X GET \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}/placements"
GET show
- Description
-
show
- URL template
- /api/{api_version}/info
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
Response Codes
| Status code | Description |
|---|---|
| 200 | shows the requested version |
Example Request
curl -X GET \
"https://{{baseURL}}/api/{api_version}/info"
GET show
- Description
-
show
- URL template
- /api/{api_version}/reference-data
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| field | string | Query | Optional | - |
Response Codes
| Status code | Description |
|---|---|
| 200 | returns the unwrapped field payload |
| 404 | unknown field |
Example Request
curl -X GET \
"https://{{baseURL}}/api/{api_version}/reference-data"
GET show
- Description
-
show
- URL template
- /api/{api_version}/trainees/{trainee_id}
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| trainee_id | Api-api_version-Trainees-trainee_id-GetRequest-1 | Path | Required | - |
Response Codes
| Status code | Description |
|---|---|
| 200 | returns status 200 |
| 404 | returns a not found message |
Example Request
curl -X GET \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}"
GET show
- Description
-
show
- URL template
- /api/{api_version}/trainees/{trainee_id}/degrees/{degree_id}
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| degree_id | string | Path | Required | - |
| trainee_id | string | Path | Required | - |
Response Codes
| Status code | Description |
|---|---|
| 200 | returns status code 200 with a valid JSON response |
| 404 | returns status code 404 with a valid JSON response |
Example Request
curl -X GET \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}/degrees/{degree_id}"
GET show
- Description
-
show
- URL template
- /api/{api_version}/trainees/{trainee_id}/placements/{placement_id}
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| placement_id | string | Path | Required | - |
| trainee_id | string | Path | Required | - |
Response Codes
| Status code | Description |
|---|---|
| 200 | returns status code 200 with a valid JSON response |
| 404 | returns status code 404 with a valid JSON response |
Example Request
curl -X GET \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}/placements/{placement_id}"
PUT update
- Description
-
update
- URL template
- /api/{api_version}/trainees/{trainee_id}
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| trainee_id | string | Path | Required | - |
Request Model Example
{
"data": [
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[
[
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
]
]
]
]
]
}
Response Codes
| Status code | Description |
|---|---|
| 200 | does not update the degrees |
| 401 | returns status code 401 unauthorized |
| 404 | returns status code 404 |
| 422 | return status code 422 with a meaningful error message |
Example Request
curl -X PUT \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}" \
-H "Content-Type: application/json" \
-d '{
"data": [
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[
[
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
]
]
]
]
]
}'
PUT update
- Description
-
update
- URL template
- /api/{api_version}/trainees/{trainee_id}/degrees/{degree_id}
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| degree_id | string | Path | Required | - |
| trainee_id | string | Path | Required | - |
Request Model Example
{
"data": [
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
]
]
}
Response Codes
| Status code | Description |
|---|---|
| 200 | updates the degree and returns a 200 status (ok) |
| 404 | does not update the degree and returns a 404 status (not_found) |
| 422 | does not update the degree and returns a 422 status (unprocessable_entity) |
Example Request
curl -X PUT \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}/degrees/{degree_id}" \
-H "Content-Type: application/json" \
-d '{
"data": [
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
]
]
}'
PUT update
- Description
-
update
- URL template
- /api/{api_version}/trainees/{trainee_id}/placements/{placement_id}
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| api_version | string | Path | Required | - |
| placement_id | string | Path | Required | - |
| trainee_id | string | Path | Required | - |
Request Model Example
{
"data": [
[
[]
],
[
[]
],
[
[]
]
]
}
Response Codes
| Status code | Description |
|---|---|
| 200 | updates the placement and returns a 200 (ok) status |
| 404 | does not create a new placement and returns a 422 status (unprocessable_entity) status |
| 422 | does not create a new placements and returns a 422 status (unprocessable_entity) status |
Example Request
curl -X PUT \
"https://{{baseURL}}/api/{api_version}/trainees/{trainee_id}/placements/{placement_id}" \
-H "Content-Type: application/json" \
-d '{
"data": [
[
[]
],
[
[]
],
[
[]
]
]
}'
Back to top