Quickstart

Make your first Aceversity API call in under five minutes.

1. Create an API key

  1. Open https://api.aceversity.com/keys and sign in with your Aceversity email (we email you a code) or password.
  2. Under API keys, name the key (e.g. "My script"), pick Read only or Read and write, choose an expiry and press Create key.
  3. Copy the key — it starts with ace_sk_ and is shown once.
export ACEVERSITY_API_KEY="ace_sk_…"

Treat the key like a password: it can read your grades and deadlines. Don't commit it or paste it into a shared document. Revoke it at https://api.aceversity.com/keys if it leaks.

2. Check who you are

curl https://api.aceversity.com/v1/me -H "Authorization: Bearer $ACEVERSITY_API_KEY"
{
  "id": "6c1d…",
  "name": "Maya Patel",
  "email": "maya@example.edu",
  "role": "student",
  "timezone": "America/Chicago",
  "locale": "en",
  "today": "2026-10-13",
  "streak": 9,
  "membership": { "active": true, "status": "active", "plan": "yearly", "current_period_end": "2027-08-30T00:00:00Z" },
  "credential": { "type": "api_key", "scopes": ["read", "write"], "client_id": null }
}

3. See what's coming up

curl "https://api.aceversity.com/v1/agenda?days=14" -H "Authorization: Bearer $ACEVERSITY_API_KEY"
{
  "today": "2026-10-13",
  "until": "2026-10-27",
  "items": [
    { "id": "a7e2…", "course_id": "3f1c…", "course_name": "Introduction to Biology", "title": "Midterm 1", "kind": "exam", "due_on": "2026-10-20", "days_until": 7, "created_at": "2026-08-25T14:02:11Z" }
  ],
  "milestones": [
    { "id": "m91b…", "item_id": "a7e2…", "title": "Review chapters 1–4", "due_on": "2026-10-15", "done": false, "position": 0, "item_title": "Midterm 1", "course_name": "Introduction to Biology", "overdue": false }
  ]
}

4. Add an assignment (needs a read-and-write key)

COURSE_ID=$(curl -s https://api.aceversity.com/v1/courses -H "Authorization: Bearer $ACEVERSITY_API_KEY" | jq -r '.data[0].id')

curl -X POST "https://api.aceversity.com/v1/courses/$COURSE_ID/items" \
  -H "Authorization: Bearer $ACEVERSITY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title": "Lab report 3", "kind": "lab", "due_on": "2026-10-24"}'

It's now on the student's calendar in the app and in their reminder emails.

In code

JavaScript / TypeScript

const res = await fetch('https://api.aceversity.com/v1/agenda?days=7', {
  headers: { Authorization: `Bearer ${process.env.ACEVERSITY_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const { items } = await res.json();
for (const i of items) console.log(`${i.due_on}  ${i.course_name}: ${i.title}`);

Python

import os, requests

r = requests.get(
    "https://api.aceversity.com/v1/agenda",
    params={"days": 7},
    headers={"Authorization": f"Bearer {os.environ['ACEVERSITY_API_KEY']}"},
    timeout=30,
)
r.raise_for_status()
for item in r.json()["items"]:
    print(item["due_on"], item["course_name"], item["title"])

Next