API Endpoints
Detailed reference for all PaperStack API endpoints.
API Endpoints
PaperStack exposes a RESTful API organized by exam, year, shift, and file.
Public Endpoints (No Auth Required)
These endpoints do not require authentication and return metadata about available data.
List Exam Years
Returns all available years for a given exam.
GET /{exam}Example:
curl https://api.paperstack.qzz.io/neetResponse:
{
"exam": "neet",
"label": "NEET",
"years": [2024, 2023, 2022, 2021, 2020],
"totalYears": 5
}List Shifts for a Year
Returns available shifts and subjects for a given exam and year.
GET /{exam}/{year}Example:
curl https://api.paperstack.qzz.io/neet/2024Response:
{
"exam": "neet",
"year": 2024,
"shifts": [
{
"shift": "2024-05-05-s1",
"subjects": ["physics", "chemistry", "biology"],
"total": 200,
"lastUpdated": "2025-12-01",
"checksum": "a1b2c3d4"
}
]
}Protected Endpoints (Auth Required)
These endpoints require a valid API key in the Authorization header.
Fetch Question Data
Retrieves questions for a specific exam, year, shift, and subject file.
GET /{exam}/{year}/{shift}/{file}Headers:
| Header | Required | Value |
|---|---|---|
Authorization | Yes | Bearer ps_xxxxx |
Path Parameters:
| Param | Description | Example |
|---|---|---|
exam | Exam code | neet, jeemain |
year | 4-digit year | 2024 |
shift | Shift name or shorthand | 2024-05-05-s1, s1 |
file | Subject JSON file | physics.json, chemistry.json |
File Options:
| File | Description |
|---|---|
physics.json | Physics questions |
chemistry.json | Chemistry questions |
biology.json | Biology questions (NEET only) |
mathematics.json | Mathematics questions (JEE only) |
Example:
curl -H "Authorization: Bearer ps_xxxxx" \
https://api.paperstack.qzz.io/neet/2024/s1/physics.jsonResponse:
{
"exam": "neet",
"year": 2024,
"shift": "2024-05-05-s1",
"subject": "physics",
"total": 50,
"questions": [
{
"id": "N2405P001",
"type": "mcq",
"question": "A particle moves in a circle of radius R with constant speed v. The acceleration of the particle is:",
"options": [
{ "key": "A", "value": "v²/R towards the centre" },
{ "key": "B", "value": "v²/R away from the centre" },
{ "key": "C", "value": "v/R towards the centre" },
{ "key": "D", "value": "v/R away from the centre" }
],
"answer": "A",
"topic": "Circular Motion",
"difficulty": "easy",
"hasDiagram": false,
"diagrams": []
}
// ... more questions
],
"metadata": {
"examDate": "2024-05-05",
"totalQuestions": 50,
"lastUpdated": "2025-12-01T10:00:00Z",
"checksum": "a1b2c3d4"
}
}Fetch Question Diagrams
If a question has associated diagrams, they are available at:
GET /{exam}/{year}/{shift}/diagrams/{filename}Example:
curl -H "Authorization: Bearer ps_xxxxx" \
https://api.paperstack.qzz.io/neet/2024/s1/diagrams/N2405P001.pngNote: Diagrams include the question ID in their filename for easy cross-referencing.
Shift Resolution
PaperStack supports smart shift resolution. You can use shorthand or partial shift names:
| Input | Resolves To |
|---|---|
s1 | First chronological shift |
s2 | Second chronological shift (if available) |
2024-05-05-s1 | Exact shift name |
05may | First shift starting with 05may |
This makes it easy to reference shifts without remembering exact naming conventions.