Studie+

Kom i gang med Studie+ API

Eksempel på lille program, som henter data fra API

Nedenstående er et eksempel på et API-kald, der henter fravær i en given periode fra Studie+ vha et Pythonscript. Scriptet kræver et “client_id” og “secret”. Det kan skolen bestille via supporten.

#
# Lille eksempel for API kald til Studie+ API
# Eksempelprogram er Python kode. 
# Python kan hentes her: https://www.python.org/downloads/
#
# Du skal angive din client_id, secret og institutionsnummer
#for at afprøve eksemplet
# (kontakt support hvis du ikke har client_id og secret)
import requests
import os 
import json


CLIENT_ID = "indtast clientID her"
CLIENT_SECRET = "indtast client secret her"
INSTNR = "indtast hovedinstitutionsnummer her"

# Først hentes frisk token til videre forespørgsler
# (authentificering)
#
# json parametre til authentificering
requesttoken = {
    "client_secret": CLIENT_SECRET,
    "client_id": CLIENT_ID,
    "grant_type": "client_credentials",
}

# POST request til skolid.se.
# Der returnes token til videre forespørgsler til Studie+ API
response = requests.post("https://skolid.se/connect/token",
                         data=requesttoken)
print(response.status_code)
print(response.text)
token = response.json()

# Tilføj 'Bearer ' foran token
ACCESS_TOKEN = "Bearer " + token["access_token"]

#
# Nu kan der laves forespørgsler mod Studie+
# Header skal indeholde institutionsnummer og access_token
#

headers = {
    "accept": "*/*",
    "Content-Type": "application/json",
    "instnr": INSTNR,
    "Authorization": ACCESS_TOKEN
}
# hvis job tager parametre i body, fx liste af id'er
data = []

# url til et endpoint - her kaldes endpoint for fravær (POST)
url = "https://api.ist.com/uddataplus/institutions/"+INSTNR+
    "/release/fravaer?startDato=2026-08-10&slutDato=2026-08-14"

# udfør kald
response = requests.post(url, headers=headers, data=data)

print(response.status_code)
if response.status_code == 200:
    resultat = response.json()
    print(resultat)
    # gem resultat i en fil
    with open("apioutput.json", "w", encoding='utf8') as f:
        f.write(json.dumps(resultat, indent=3,
                sort_keys=True, ensure_ascii=False))