> ## Documentation Index
> Fetch the complete documentation index at: https://docs.examino.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Examino REST API - Introduction and Core Concepts

> Learn what the Examino REST API is, how it is structured, the core data model, and the conventions you need before your first request.

Examino is an AI-powered exam correction platform built for schools and educational institutions. Its REST API lets your SIS or LMS import student copies and trigger automated AI grading, so every part of the correction workflow, from submission to result, can be driven programmatically.

## Base URL

All API requests go to the following base URL:

```text theme={null}
https://app.examino.ai/api/v1
```

Every endpoint documented in this reference is relative to this base.

## Conventions

Before you make your first request, there are a few conventions the API enforces consistently across every endpoint.

<AccordionGroup>
  <Accordion title="JSON only">
    All request bodies must be sent as `application/json` encoded in UTF-8. All
    responses are also JSON. If you send a body with the wrong `Content-Type`,
    the API returns a `400 invalid_request` error.
  </Accordion>

  <Accordion title="UUID v4 identifiers">
    Every resource, teams, exams, copies, corrections, is identified by a
    **UUID v4** string (e.g., `3fa85f64-5717-4562-b3fc-2c963f66afa6`). IDs are
    assigned by the server; you cannot choose them.
  </Accordion>

  <Accordion title="ISO 8601 dates in UTC">
    All timestamps are formatted as **ISO 8601** strings in UTC, for example
    `2025-06-15T09:30:00Z`. When you send date values in request bodies, use
    the same format.
  </Accordion>

  <Accordion title="camelCase fields">
    All JSON field names use **camelCase**, `studentName`, `createdAt`,
    `examId`. No snake\_case, no PascalCase.
  </Accordion>
</AccordionGroup>

## Activation Requirements

The REST API is reserved for **organization and educational institution accounts** and must be explicitly enabled on your team before any request will succeed.

<Warning>
  Two conditions must both be true for the API to work:

  1. The `rest_api` feature must be enabled on your team.
  2. At least one active API key must exist (created from **Administration → API** in the Examino app).

  If either condition is not met, every request returns `403 feature_disabled`. Contact [Examino support](mailto:support@examino.ai) to activate the feature on your account.
</Warning>

## Data Model

The API is built around four core resources. Understanding how they relate to each other will help you navigate the reference docs.

<CardGroup cols={2}>
  <Card title="Team" icon="sitemap">
    The top-level organizational unit. A team is either a **workspace** (can
    contain exams) or a **folder** (an organizational node only, used to group
    other teams). Your API key is always scoped to one team and covers its
    entire subtree.
  </Card>

  <Card title="Exam" icon="file-pen">
    An exam belongs to a workspace team and carries the **subject**, **rubric
    (barème)**, and all grading settings. You build the rubric in the Examino
    web app; the API handles everything else.
  </Card>

  <Card title="Copy" icon="copy">
    A copy represents a **student's submission**, one or more uploaded files
    attached to an exam. Each copy is linked to one student.
  </Card>

  <Card title="Correction" icon="circle-check">
    A correction is the **AI result** for a copy. There is one main correction
    per copy. You launch corrections via the API and poll or webhook for
    results.
  </Card>
</CardGroup>

<Note>
  The rubric (barème) that drives AI grading is always configured in the
  Examino web app. The API does not expose rubric creation or editing endpoints.
</Note>

## Typical Workflow

Here is the high-level sequence every integration follows:

<Steps>
  <Step title="Activate the feature">
    Ask Examino support to enable `rest_api` on your team, then create an API
    key under **Administration → API**.
  </Step>

  <Step title="Locate your exam">
    Use the Exams endpoints to find the exam UUID for the test you want to
    correct.
  </Step>

  <Step title="Import student copies">
    Upload each student's files and create copy resources linked to the exam.
    The batch endpoint accepts up to 50 copies per call.
  </Step>

  <Step title="Launch corrections">
    Trigger AI correction for one or all copies. Corrections run asynchronously
    and typically complete within a few minutes.
  </Step>

  <Step title="Retrieve results">
    Poll the Corrections endpoint (every 15–30 s) or listen for a webhook event
    to fetch scores and feedback when the AI finishes.
  </Step>
</Steps>

## Next Steps

<CardGroup cols={2}>
  <Card title="Authentication" icon="key" href="/authentication">
    Learn how to create an API key, understand scopes, and handle every
    authentication error.
  </Card>

  <Card title="Import & Correction Guide" icon="rocket" href="/guides/import-and-correction">
    Follow a step-by-step walkthrough of uploading copies and launching your
    first AI correction.
  </Card>
</CardGroup>
