https://api.nationaltbconference.org/api. Include Content-Type: application/json on every request.
This API uses Laravel Sanctum Bearer token authentication. Tokens are returned from /api/login and must be included in the Authorization header on all protected routes.
localStorage under the key auth_token. Tokens do not expire by time — they are revoked on logout.| Role | Access Level |
|---|---|
| user | Authenticated authors — submit and manage own abstracts |
| reviewer | Review assigned abstracts, submit scores |
| board | View all approved abstracts and rankings |
| admin | Full access to all endpoints |
| Code | Meaning |
|---|---|
| 200 OK | Success |
| 201 Created | Resource created |
| 401 Unauthorized | Missing or invalid Bearer token |
| 403 Forbidden | Valid token but insufficient role |
| 422 Unprocessable | Validation failed — check errors object |
| 404 Not Found | Resource does not exist |
| 500 Server Error | Check storage/logs/laravel.log |
Returns the current status of the API. Useful for uptime monitoring and deployment verification.
Registers a new author account. The account is assigned the user role by default.
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | required | Full name |
| string | required | Unique email address | |
| password | string | required | Min 8 characters |
| password_confirmation | string | required | Must match password |
Authenticates a user and returns a Sanctum bearer token along with user details.
| Field | Type | Required | Description |
|---|---|---|---|
| string | required | Registered email | |
| password | string | required | Account password |
Registers a conference participant (non-author). No account is created — the record is stored for attendance tracking.
Sends a password reset link to the provided email address if an account exists.
Revokes the current Sanctum token. No request body required.
Returns the authenticated user's full profile.
Returns all notifications for the authenticated user. Related actions: PUT /notifications/read-all, PUT /notifications/{id}/read, DELETE /notifications/{id}.
Returns all thematic areas available for abstract submission.
Submits a new abstract for review. Returns the created abstract with its generated abstract ID.
| Field | Type | Required | Description |
|---|---|---|---|
| title | string | required | Abstract title |
| authors | string | required | Author names |
| thematic_id | integer | required | Thematic area ID |
| abstract | string | required | Abstract body text (max 300 words) |
| presentation_type | string | optional | oral / poster |
Returns paginated abstracts submitted by the authenticated user.
Returns the full detail of a single abstract owned by the authenticated user. Returns 403 if the abstract belongs to another user.
Updates a draft or pending abstract. Same fields as POST /store-abstract. Cannot edit once status is approved.
Permanently deletes an abstract owned by the authenticated user.
Returns all abstracts assigned to the authenticated reviewer for review.
Updates the review status of an assigned abstract.
Submits a numeric score for the given abstract. Scores feed into the ranked list used by board members.
Returns all abstracts with an approved status across all reviewers.
Returns approved abstracts sorted by average reviewer score (highest first).
Returns all users with the user role. See also GET /view-reviewers, GET /assing-reviewers.
Creates a new user with a specified role. Unlike /register, this allows setting any role.
Updates user details or role. All fields are optional.
Permanently deletes a user account.
Toggles a user's active status. Deactivated users cannot log in.
Returns every abstract in the system regardless of status or author.
Assigns an abstract to a reviewer for evaluation.
Generates and returns a PDF for the given abstract. Response Content-Type is application/pdf.
Returns dashboard aggregate counts: users, abstracts by status, participants, reviewers.
Downloads all abstracts as a CSV file. Related: GET /export/ranked, GET /export/participants, GET /export/reviewer-report.
Sends a bulk email to all users or a specific group.
Returns all portal settings as a key-value map.
Updates multiple settings in a single request.
Updates a single setting by its key. Creates the key if it does not exist.