Quickstart
Make your first Aceversity API call in under five minutes.
1. Create an API key
- Open https://api.aceversity.com/keys and sign in with your Aceversity email (we email you a code) or password.
- Under API keys, name the key (e.g. "My script"), pick Read only or Read and write, choose an expiry and press Create key.
- 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/keysif 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
- Browse every endpoint in the API reference — you can send requests from the page.
- Read Errors, limits & paging before you build something that runs unattended.
- Generate a typed client:
npx @openapitools/openapi-generator-cli generate -i https://api.aceversity.com/openapi.json -g typescript-fetch -o ./aceversity-client.