---
title: Sivitas API
url: https://rone.dev/projects/sivitas-api
description: Indonesian higher-education records — universities, programmes, lecturers, students.
language: en-US
updated: 2026-09-27
translations:
  id: https://rone.dev/id/projects/sivitas-api
---

# Sivitas API

Indonesian higher-education records — universities, programmes, lecturers, students.

[Projects](https://rone.dev/projects) / [API](https://rone.dev/projects/category/api)

Limited · Started 2024 · 39 GitHub stars · 10 Forks

<Frame>
  ![The Sivitas API reference, listing its search endpoints](https://rone.dev/projects/sivitas-api/docs.webp)
</Frame>

Sivitas API re-serves publicly available Indonesian higher-education data as a documented REST interface: forty-four endpoints across universities, study programmes, lecturers, students, fields of study, and national aggregates. It is an independent project with no affiliation to PDDikti or any government body, and every response carries that notice alongside the required attribution line.

## Numbers

* **44** Endpoints
* **7** Endpoint groups
* **5.0.0** API version

## Project facts

|          |                                                                                                                                                                  |
| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Status   | Limited                                                                                                                                                          |
| Category | API                                                                                                                                                              |
| Started  | 2024                                                                                                                                                             |
| Role     | Design, build, and operations                                                                                                                                    |
| Stack    | Python, FastAPI, curl_cffi, OpenAPI, FastAPI Cloud                                                                                                               |
| Licence  | AGPL-3.0                                                                                                                                                         |
| Links    | [Live API](https://pddikti.fastapicloud.dev) · [API reference](https://pddikti.fastapicloud.dev/api/docs) · [Source](https://github.com/ridwaanhall/api-pddikti) |

## Overview

Indonesia publishes a great deal about its universities: institutions and their facilities, study programmes and their costs, lecturer profiles with teaching and research history, student records, staffing ratios, and national counts by field of study. It is public, and it is awkward to consume programmatically.

Sivitas API groups all of it into seven collections — search, institutions, programmes, lecturers, students, statistics, and fields of study — behind one response envelope. Every payload carries an attribution line naming the data source and a disclaimer stating that the project is independent, that the data belongs to its original publisher, and that anything consequential should be verified against the official source.

## Getting the data at all

The hard part is not parsing; it is being allowed to read. The upstream edge fingerprints the TLS handshake itself, so a request carrying a perfectly convincing browser User-Agent is still refused when it originates from a datacentre address — the same headers succeed from a residential connection.

The client performs a genuine Chrome TLS handshake when that library is available, and falls back to plain requests where the address is not the obstacle. The browser identity is kept coherent across every layer: User-Agent, client hint headers, and TLS profile all describe the same browser build, because a mismatch between them is itself the signal being looked for.

## Nothing hardcoded

No upstream host, deployment URL, or third-party service appears in the source. Every one comes from the environment, so the repository can be public without disclosing which hosts the service talks to, and an unset value simply disables the feature that needed it instead of failing at import. What a running deployment actually resolved is visible on its own overview endpoint.

The branding works the same way — name, maintainer, attribution line and disclaimer all have defaults and can all be overridden, so a fork identifies itself honestly rather than inheriting someone else’s attribution.

## Current status

The service is running in limited mode. The overview endpoint, the OpenAPI schema, the documentation and the browser playground all respond normally; the forty-four data endpoints return a structured 503 naming the condition, the documentation links, and any alternative endpoint configured.

That is a deliberate state rather than an outage. Upstream access is rate-limited and protected, and shedding data traffic while keeping the interface documented is the honest version of being unavailable.

## What people building on it said

Rated 5 out of 5 · 1 reviews

> “I am very happy with this API, it finally made retrieving PDDIKTI data possible for our statistical needs.”
>
> — **Choirul Anam**, Institutional user, data and statistics (Rated 5 out of 5)

<Note>
  Every one of these is a full five. Nobody was handed a rating scale — the feedback arrived as sentences, and none of them is qualified, so none is scored below five. If one ever comes back mixed, it will be published with the number it earned.
</Note>

<CardGroup cols={2}>
  <Card title="Previous: Arena Academy" href="https://rone.dev/projects/arena-academy">
    The reading interface for the Rone Arena API — heroes, rankings, builds and counters.
  </Card>

  <Card title="Next: Gempa" href="https://rone.dev/projects/gempa">
    Indonesia's earthquakes and tsunami warnings, live from BMKG, with an open JSON API.
  </Card>
</CardGroup>
