QUICKSTART

Your first request in five minutes.

SukuuData is a REST API for Ghana's education data: schools across all 16 regions, the 2026 GES placement register, and the CSSPS selection rules. It works from any language that can make an HTTPS request. This guide takes you from no account to real data.

1. Get an API key

  1. Create a free account. The free plan includes 1,000 requests a month.
  2. In your dashboard, create a key. It starts with sukuu_live_ and is shown only once, so copy it somewhere safe.
  3. Store it as an environment variable, for example SUKUUDATA_KEY, rather than in your code.

2. Make a request

Send the key in the X-API-Key header. This example finds boarding schools in Ashanti that offer General Science (programme 502):

curl "https://api.sukuudata.com/api/v1/secondary-schools?programme=502&residential=BOARDING&region=ashanti" \
  -H "X-API-Key: YOUR_KEY"

3. Read the response

Every response is JSON with a success flag. Lists come with pagination; ask for more with page and limit (up to 100). Here is a trimmed real response:

{
  "success": true,
  "data": [
    {
      "id": "gh-way-785317414",
      "name": "Achinakrom Senior High School",
      "level": "SHS",
      "type": "Public",
      "region": "Ashanti",
      "district": "Ejisu Municipal",
      "town": "Achinakrom",
      "latitude": 6.6598,
      "longitude": -1.4650,
      "secondary": {
        "csspsCode": "0051606",
        "category": "C",
        "institutionType": "SHS",
        "gender": "MIXED",
        "offersDay": true,
        "offersBoarding": true,
        "programmes": [
          { "code": "502", "name": "General Science", "kind": "GENERAL" }
        ],
        "registerYear": 2026
      }
    }
  ],
  "pagination": { "page": 1, "limit": 20, "total": 107, "totalPages": 6 }
}

Schools in the placement register carry a secondary object with their 7-digit CSSPS code, category (A, B, C or PILOT_PRIVATE), programmes and day or boarding options. registerYear says which GES register the data comes from.

Handle errors

Errors look like { "success": false, "error": "…", "code": "…" }. Branch on code; the error message is for people and may change.

StatusCodeWhat to do
400VALIDATION_ERROR, UNKNOWN_REGION, UNKNOWN_DISTRICT, UNKNOWN_PROGRAMMEFix the request; the message names the parameter.
401MISSING_API_KEY, INVALID_API_KEYSend a valid key in X-API-Key.
404NOT_FOUNDNo record with that id or code.
429RATE_LIMIT_EXCEEDEDMonthly quota used up. Wait for the reset or move to a bigger plan.
500INTERNAL_ERROROur fault. Retry later and quote the X-Request-Id header if you contact us.

Quotas and rate limits

Each response includes X-RateLimit-Limit (your monthly quota), X-RateLimit-Remaining and X-RateLimit-Reset (when the quota resets, as a Unix timestamp). Cache responses where you can: school data changes weekly at most, and the placement register once a year.

Keep your key secret

Anyone who sees your key can use your quota. The API allows browser requests, but for a public website or mobile app, call SukuuData from your own server and pass the results to your frontend. Never commit the key to Git.

Next steps