Documentation · Developers

Censula API

Developer portal for integrating the conference management system into your own website or tools: authenticate with an API key, read conferences and papers as JSON, and handle every response with an explicit HTTP status code.

1 About the API

Censula API lets you retrieve conference and paper data from the system and display it on your website or feed it into another system — securely and in a format that is easy to consume.

Secure

API key authentication on every request; inactive or unknown keys are refused immediately.

Fast

Plain JSON responses that map directly onto your templates and components.

Complete data

Paper status, authors, submission dates, review history and pagination metadata.

Cross-domain

CORS header Access-Control-Allow-Origin: * for browser calls from any domain.

Request flow: your application sends an Authorization Bearer header to an endpoint and receives JSON
What happens on every call — from your key to the JSON answer.

2 Getting started

Create an API key, then send it as a Bearer token. Three steps and you are live.

  1. Open Manage API Keys and generate a key for the project you are building.
  2. Copy the key once and store it as an environment variable on your server.
  3. Send it with every request: Authorization: Bearer YOUR_API_KEY

Welcome, Guest. Keep keys private, rotate them regularly, and never commit them to version control.

3 Usage examples

Four ready-to-run requests plus a complete PHP snippet and the JSON response shape. Replace YOUR_API_KEY with your own key.

1 · Retrieve your conferences

curl -X GET "https://censula.com/api/v1/conferences" -H "Authorization: Bearer YOUR_API_KEY"
Returns every conference owned by the key's account.

2 · Retrieve papers in a conference (with pagination)

curl -X GET "https://censula.com/api/v1/papers?conference_id=10&limit=20&page=1" -H "Authorization: Bearer YOUR_API_KEY"
Adjust conference_id, limit and page as needed.

Count the papers of a conference (PHP):

// ------------------------------------------------------
// 1. CONFIGURATION SETTINGS
// ------------------------------------------------------
$apiKey = 'Your_API_KEY';  // Replace with your actual API Key
$conferenceId = xxx;  // Replace with your specific Conference ID

// ------------------------------------------------------

// -- Function to count total papers --
function countPapers($conferenceId, $apiKey) {
    $url = 'https://censula.com/api/v1/papers?conference_id=' . $conferenceId . '&limit=1&page=1';

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json'
    ]);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($httpCode !== 200) {
        return ['error' => 'HTTP Error ' . $httpCode];
    }

    $data = json_decode($response, true);
    if (!isset($data['data']['pagination']['total'])) {
        return ['error' => 'Invalid API response structure'];
    }

    return [
        'total' => $data['data']['pagination']['total'],
        'conference' => $data['data']['conference']['title'] ?? 'N/A'
    ];
}

// -- Execution --
$result = countPapers($conferenceId, $apiKey);

if (isset($result['error'])) {
    echo 'Error: ' . $result['error'];
} else {
    echo 'Total Papers in "' . $result['conference'] . '" = ' . $result['total'] . ' papers';
}
Replace the key and conference ID, then run the script on your server.

3 · Get conference details by ID

curl -X GET "https://censula.com/api/v1/conferences/10" -H "Authorization: Bearer YOUR_API_KEY"
Replace 10 with your conference ID.

4 · Retrieve paper details with review history

curl -X GET "https://censula.com/api/v1/paper_details/11" -H "Authorization: Bearer YOUR_API_KEY"
Replace 11 with your paper ID.

Example JSON response (papers)

// Response (JSON) with pagination
{
  "data": {
    "conference": {
      "id": 10,
      "title": "International Conference on Education, Technology and Innovation 2027"
    },
    "papers": [
      {
        "id": 11,
        "paper_title": "The Impact of Artificial Intelligence on Academic Conference Management",
        "status": "submitted",
        "submitted_at": "2026-06-10 19:35:04"
      }
    ],
    "pagination": {
      "current_page": 1,
      "per_page": 20,
      "total": 1,
      "total_pages": 1,
      "has_next": false,
      "has_previous": false
    }
  }
}

4 API endpoints

Core endpoints for conference and paper data — all read-only, all under /api/v1/.

MethodEndpointDescription
GET /api/v1/conferences List your conferences
GET /api/v1/conferences/{id} Get conference details by ID
GET /api/v1/conferences/{id}/papers List papers of a conference (short path)
GET /api/v1/papers?conference_id={id}&limit={limit}&page={page} List papers in a conference (paginated)
GET /api/v1/paper_details/{id} Paper details + review history

Pagination: limit and page are supported by the paper endpoints; the response always carries the pagination object (total, total_pages, has_next, has_previous).

5 Authentication

Every request must carry your API key in the Authorization header.

Authorization: Bearer YOUR_API_KEY

The server checks the key against the api_keys table: an unknown, disabled or missing key is rejected before any data is read, and each successful call updates last_used_at so you can see which integrations are alive.

Key hygiene

  • Always use HTTPS for API requests
  • Rotate your API keys regularly
  • Use environment variables to store API keys
  • Never commit API keys to version control

API keys are sensitive. Keep them private, never share them, and revoke a key immediately from Manage API Keys if you suspect it leaked.

6 HTTP status codes

Every response carries an explicit code — these are the ones the API actually returns.

CodeMeaning
200 OKRequest successful and data returned
400 Bad RequestInvalid request parameters or format
401 UnauthorizedMissing, invalid or inactive API key
403 ForbiddenValid key, but the resource belongs to another account
404 Not FoundRequested conference or paper does not exist
500 Internal Server ErrorServer-side error (database or configuration)

7 For administrators

Manage conferences, users, review settings and system configuration from the dashboard.

Questions about the platform itself? See the Organizer Guide, the Author Guide or the FAQ.