Skip to content
All APIs

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

https://api.diraz.ae
0 requests1d cache1 credit / request

Endpoint

GET/v1/government/asn-vacancies

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.
Total requests0
Cache1d
Status
Operational
Category
Government
Scope
market:read
Rate limit
60 requests / 60s per key
Pricing
1 credit / request
Request a keyView as Markdown
  • 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.