Overview
The Teaching Vacancies ATS API lets an applicant tracking system create, update, list and delete job listings for the schools and trusts it acts for. Listings published through it appear on the Teaching Vacancies service, where people looking for school jobs can search for them and subscribe to alerts.
Access is by API key, issued as part of onboarding. To start an integration, email teachingvacancies.ats@education.gov.uk.
Documents
- v1
- Uploaded schema
Who can use this API
Applicant tracking system and HR software vendors acting for schools and trusts
Service level
24/7
Technologies
REST, Ruby on Rails
Environments
| Environment | Base URL |
|---|---|
| staging | https://staging.teaching-vacancies.service.gov.uk |
| production | https://teaching-vacancies.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 |
|---|---|
| v1 |
Operations
GET Returns a paginated list of vacancies that were created through the client's ATS.
- Description
-
Returns a paginated list of vacancies that were created through the client's ATS.
- URL template
- /ats-api/v1/vacancies
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| page | number | Query | Optional | page number (1-based), defaults to 1 |
Response Codes
| Status code | Description |
|---|---|
| 200 | Returns a paginated list of all the client vacancies |
| 401 | Occurs when the provided API key is incorrect or missing |
| 500 | Indicates an unexpected issue on the server. |
Example Request
curl -X GET \
"https://{{baseURL}}/ats-api/v1/vacancies"
POST Creates a new vacancy for the client's ATS.
- Description
-
Creates a new vacancy for the client's ATS.
- URL template
- /ats-api/v1/vacancies
Show / Hide additional information
Request Model Example
{
"vacancy": [
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[
[
[]
],
[
[
[]
]
]
]
],
[
[
[]
]
],
[
[]
],
[
[
[]
]
],
[
[
[]
]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[
[],
[]
]
],
[
[
[],
[]
]
]
]
}
Response Codes
| Status code | Description |
|---|---|
| 201 | Indicates that the vacancy was created and returns the newly created resource. |
| 400 | The request body is missing required parameters or has invalid data. |
| 401 | Occurs when the provided API key is incorrect or missing. |
| 409 | A conflicting vacancy exists.<br>The conflicting vacancy contains the same values for either:<ul><li>The external reference (must be unique per API Client).</li><li>All these fields (must be unique per school):</li><ul><li>job title</li><li>expiry date</li><li>contract type</li><li>working patterns</li><li>phases</li><li>salary</li></ul></ul> |
| 422 | One or more values failed validation. |
| 500 | A server-side issue occurred while creating the vacancy. |
Example Request
curl -X POST \
"https://{{baseURL}}/ats-api/v1/vacancies" \
-H "Content-Type: application/json" \
-d '{
"vacancy": [
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[
[
[]
],
[
[
[]
]
]
]
],
[
[
[]
]
],
[
[]
],
[
[
[]
]
],
[
[
[]
]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[
[],
[]
]
],
[
[
[],
[]
]
]
]
}'
DELETE Deletes a vacancy with the given ID, if it belongs to the client's ATS.
- Description
-
Deletes a vacancy with the given ID, if it belongs to the client's ATS.
- URL template
- /ats-api/v1/vacancies/{id}
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| id | string | Path | Required | The id of the vacancy |
Response Codes
| Status code | Description |
|---|---|
| 204 | Indicates the vacancy was removed from the system. |
| 401 | Occurs when the provided API key is incorrect or missing. |
| 404 | No vacancy was found with the provided ID that belongs to this client. |
| 500 | An unexpected error occurred on the server. |
Example Request
curl -X DELETE \
"https://{{baseURL}}/ats-api/v1/vacancies/{id}"
GET Retrieves details for a single vacancy by its unique ID, if it belongs to the requesting client.
- Description
-
Retrieves details for a single vacancy by its unique ID, if it belongs to the requesting client.
- URL template
- /ats-api/v1/vacancies/{id}
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| id | string | Path | Required | The id of the vacancy |
Response Codes
| Status code | Description |
|---|---|
| 200 | Returns the vacancy's attributes in JSON format. |
| 401 | Occurs when the provided API key is incorrect or missing. |
| 404 | No vacancy was found with the provided ID that belongs to this client. |
| 500 | An unexpected error occurred on the server. |
Example Request
curl -X GET \
"https://{{baseURL}}/ats-api/v1/vacancies/{id}"
PUT Updates an existing vacancy. The request body must include all required fields. Optional fields keep existing values if not provided.
- Description
-
Updates an existing vacancy. The request body must include all required fields. Optional fields keep existing values if not provided.
- URL template
- /ats-api/v1/vacancies/{id}
Show / Hide additional information
Parameters
| Name | Type | Location | Field | Description |
|---|---|---|---|---|
| id | string | Path | Required | The id of the vacancy |
Request Model Example
{
"vacancy": [
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[
[
[]
],
[
[
[]
]
]
]
],
[
[
[]
]
],
[
[]
],
[
[
[]
]
],
[
[
[]
]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[
[],
[]
]
],
[
[
[],
[]
]
]
]
}
Response Codes
| Status code | Description |
|---|---|
| 200 | Indicates the vacancy was updated. Returns the updated resource data. |
| 400 | Missing or invalid fields in the request body. |
| 401 | Occurs when the provided API key is incorrect or missing. |
| 404 | No vacancy was found with the provided ID that belongs to this client. |
| 409 | A conflicting vacancy exists.<br>The conflicting vacancy contains the same values for either:<ul><li>The external reference (must be unique per API Client).</li><li>All these fields (must be unique per school):</li><ul><li>job title</li><li>expiry date</li><li>contract type</li><li>working patterns</li><li>phases</li><li>salary</li></ul></ul> |
| 422 | One or more values failed validation. |
| 500 | An unexpected error occurred on the server. |
Example Request
curl -X PUT \
"https://{{baseURL}}/ats-api/v1/vacancies/{id}" \
-H "Content-Type: application/json" \
-d '{
"vacancy": [
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[
[
[]
],
[
[
[]
]
]
]
],
[
[
[]
]
],
[
[]
],
[
[
[]
]
],
[
[
[]
]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[]
],
[
[
[],
[]
]
],
[
[
[],
[]
]
]
]
}'
Back to top