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.

Sign in here using GOV.UK One Login


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