ASN Vacancies
BKN · Government · 1 endpoint
Every formation in the current CASN intake — institution, position, location, quota, age window, and the requirement list — as the state publishes it.
Base URL
Endpoint
Snippet
Request — cURL
v1
curl https://api.diraz.ae/v1/government/asn-vacancies \
-H "Authorization: Bearer drz_live_…"Query parameters
- qstring · optional
- Keep only formations whose position or institution contains this.
- institutionstring · optional
- Keep only formations from an institution, e.g. `Kementerian Sosial`.
- locationstring · optional
- Keep only formations in a place, e.g. `Prov. DKI Jakarta`.
- hiring_typestring · optional
- The intake stream: `CPNS`, `PPPK Guru`, or `PPPK Teknis`.
- disability_openboolean · optional
- Keep only formations from the ministry's disability-reserved stream.
- limitinteger · optional
- Formations to return, 1 to 1000.Default: 50
- max_ageinteger (seconds) · optional
- Ask for data no older than this. Clamped to the product's own floor, so it can narrow the window but never force a refresh on every call.Default: 300
Example response
200 OK
v1
{
"data": {
"event": "Seleksi CASN Sekolah Rakyat 2026",
"total": 2,
"items": [
{
"institution": "Kementerian Sosial",
"hiring_type": "PPPK Guru",
"formation_type": "UMUM",
"position_code": "JF0000418-98",
"position": "Guru Ahli Pertama - GURU BAHASA INDONESIA",
"location": "Prov. DKI Jakarta",
"openings": 4,
"disability_open": true,
"age_min": 20,
"age_max": 40,
"period": 1,
"salary_min": null,
"salary_max": null,
"education": null,
"education_group": null,
"requirements": [
"Ijazah asli (bukan legalisir) sesuai dengan kualifikasi pendidikan dan persyaratan pada formasi jabatan yang dilamar.",
"Pasfoto formal berwarna dan terbaru paling lama 6 (enam) bulan terakhir ukuran 4 x 6."
]
},
{
"institution": "Kementerian Sosial",
"hiring_type": "PPPK Guru",
"formation_type": "UMUM",
"position_code": "JF0000418-98",
"position": "Guru Ahli Pertama - GURU BAHASA INDONESIA",
"location": "Kab. Bogor",
"openings": 3,
"disability_open": true,
"age_min": 20,
"age_max": 40,
"period": 1,
"salary_min": null,
"salary_max": null,
"education": null,
"education_group": null,
"requirements": [
"Ijazah asli (bukan legalisir) sesuai dengan kualifikasi pendidikan dan persyaratan pada formasi jabatan yang dilamar.",
"Pasfoto formal berwarna dan terbaru paling lama 6 (enam) bulan terakhir ukuran 4 x 6."
]
}
]
},
"meta": {
"request_id": "req_7Q2fK4mZ",
"as_of": "2026-08-20T04:05:00.000Z",
"age_seconds": 3600,
"next_update_at": "2026-08-21T04:05:00.000Z"
}
}- event
- The intake's own name, e.g. `Seleksi CASN Sekolah Rakyat 2026`.
- total
- Formations matching the filters, before `limit` trims.
- items[].institution
- The institution offering the seat.
- items[].hiring_type
- `CPNS` or one of the `PPPK` streams.
- items[].formation_type
- `UMUM` or `DISABILITAS` — whose quota the row reserves for.
- items[].position_code / position
- The ministry's position code and the position's own name.
- items[].location
- Where the seat is, in the register's own wording.
- items[].openings
- How many seats this formation offers.
- items[].disability_open
- True where the row is the disability-reserved stream.
- items[].age_min / age_max
- The applicant age window, in years. `null` where unset.
- items[].period
- The intake period number, where it runs more than one.
- items[].salary_min / salary_max
- The published pay window. `null` where the intake states none.
- items[].education / education_group
- The required degree and its group. `null` where any is accepted.
- items[].requirements
- The requirement list the ministry publishes for the formation.
Errors
401 Unauthorized
v1
{
"error": {
"code": "UNAUTHORIZED",
"message": "The API key is invalid, expired, or revoked."
},
"meta": {
"request_id": "req_7Q2fK4mZ"
}
}Every failure carries a stable machine-readable code before the human message, and the same meta.request_id the successful responses carry. Quote it and we can find your exact request.
Errors are free
Nothing on this page is billed. You are charged for a 2xx and nothing else — a rejected key, a bad parameter, a rate limit, or an outage on our side all cost you zero. Retry without watching the meter.
- UNAUTHORIZEDHTTP 401
- Missing, malformed, expired, or revoked API key.
- FORBIDDENHTTP 403
- The key is valid but lacks the scope this product needs.
- VALIDATION_ERRORHTTP 422
- A query parameter is the wrong type or out of range.
- RATE_LIMITEDHTTP 429
- Rate limit exhausted. `Retry-After` says how long to wait.
- SERVICE_UNAVAILABLEHTTP 503
- No data recent enough to serve. Carries `Retry-After`, and is never billed.
- Status
- Operational
- Category
- Government
- Scope
- market:read
- Rate limit
- 60 requests / 60s per key
- Pricing
- 1 credit / request
- ASN Vacancies
1/1 passing
Every response is timestamped. as_of is when the data was published, age_seconds how old that is now, and next_update_at when newer data is expected.
Three shapes to handle:
- Up to date200
The data is inside its published window. The overwhelming majority of requests.
- Delayeddelayed: true
Newer data is late. You still get the most recent there is, flagged so you can decide whether to use it.
- Unavailable503
Nothing recent enough to serve. Carries Retry-After, and is never billed.