DEVELOPER PORTAL

Paramount E-Course Platform API

API Status: All Systems Operational

Integrate your website or application with Paramount E-Course — Nigeria's premier learning platform. Embed courses, webinars, certificates, and credit systems directly into your own product.

1
Get API Key
Register as a partner
2
Choose Services
Courses, webinars, certs
3
Integrate
REST API or webhooks
4
Go Live
Your platform + Paramount E-Course
Course Embedding
Embed and sell our course library on your platform. Students complete on your site.
Webinar-as-a-Service
Start, schedule, and broadcast live webinars through your site using our webinar API.
Certificate Issuance
Issue verified, downloadable certificates to your users when they complete your courses.
QUICK START

Make Your First Request

The base URL for all API calls is https://course.paramountmart.shop/api. All responses are JSON.

CURL
# Fetch the public course catalogue
curl -X GET "https://course.paramountmart.shop/api/courses" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
JAVASCRIPT (FETCH)
const PECS_API = 'https://course.paramountmart.shop/api';
const API_KEY  = 'YOUR_API_KEY';

async function getCourses() {
  const res = await fetch(`${PECS_API}/courses`, {
    headers: {
      'X-API-Key': API_KEY,
      'Accept': 'application/json'
    }
  });
  const { data } = await res.json();
  return data.courses; // Array of course objects
}

// Example response:
// [{ id: 1, title: "Web Dev Bootcamp", category: "Technology",
//    level: "Intermediate", duration: "40h", rating: 4.9 }]
PHP
<?php
$api_key = 'YOUR_API_KEY';
$base    = 'https://course.paramountmart.shop/api';

function pecs_get(string $endpoint): array {
    global $api_key, $base;
    $ch = curl_init("$base/$endpoint");
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER     => [
            "X-API-Key: $api_key",
            'Accept: application/json'
        ]
    ]);
    $body = curl_exec($ch);
    curl_close($ch);
    return json_decode($body, true)['data'] ?? [];
}

$courses = pecs_get('courses')['courses'];
foreach ($courses as $c) {
    echo $c['title'] . " — " . $c['rating'] . "\n";
}
AUTHENTICATION

API Authentication

All API requests require a partner API key sent as an HTTP header. Keys are issued per registered partner application.

Request Header
X-API-Key: eck_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Keys beginning with eck_live_ are production. Test keys start with eck_test_.
Key is valid when…
• Account is active and in good standing
• Request is within rate limit
• Endpoint is permitted on your plan
• Origin domain is allowlisted
401 Unauthorised when…
• Key is missing or malformed
• Key has been revoked
• Plan doesn't include this endpoint
• Monthly quota exceeded
COURSES API

Course Endpoints

GET /api/courses List all published courses
PARAMTYPEREQUIREDDESCRIPTION
categorystringoptionalFilter by category (e.g. Technology, Marketing)
levelstringoptionalBeginner, Intermediate, Advanced, All Levels
limitintegeroptionalNumber of results (default 20, max 100)
pageintegeroptionalPagination page number (default 1)
RESPONSE 200
{
  "status": "success",
  "data": {
    "courses": [
      {
        "id": 1,
        "title": "Web Development Bootcamp",
        "category": "Technology",
        "level": "Intermediate",
        "duration": "40h",
        "rating": 4.9,
        "enrolled": 1240,
        "credit_cost": 200,
        "thumbnail_url": "https://...",
        "tutor": { "name": "Chidi Nwankwo", "avatar": "https://..." }
      }
    ],
    "total": 12,
    "page": 1,
    "pages": 1
  }
}
GET /api/courses/:id Get single course detail

Returns full course details including topics, tutor info, and preview content.

RESPONSE 200
{
  "status": "success",
  "data": {
    "id": 1,
    "title": "Web Development Bootcamp",
    "description": "...",
    "category": "Technology",
    "topics": [
      { "id": 1, "title": "HTML Fundamentals", "duration": "45m", "has_quiz": true },
      { "id": 2, "title": "CSS Mastery", "duration": "1h 20m", "has_quiz": true }
    ],
    "tutor": { "id": 5, "name": "Chidi Nwankwo", "bio": "..." },
    "credit_cost": 200,
    "enrolled": 1240
  }
}
ENROLMENT API

Enrol a User in a Course

POST /api/enroll Enrol user in a course
BODY PARAMTYPEREQUIREDDESCRIPTION
user_idintegerrequiredParamount E-Course user ID (or use external_user_id)
external_user_idstringoptionalYour own user reference ID
course_idintegerrequiredThe course ID to enrol in
deduct_creditsbooleanoptionalWhether to deduct credits (default: true)
REQUEST BODY
{
  "external_user_id": "your-user-123",
  "course_id": 1,
  "deduct_credits": false
}
CERTIFICATES API

Certificate Issuance

Issue, retrieve, and verify certificates programmatically. Certificates include a unique ID you can use for employer verification.

POST /api/certificates/issue Manually issue a certificate
BODY PARAMTYPEREQUIREDDESCRIPTION
user_idintegerrequiredThe user receiving the certificate
course_idintegerrequiredThe completed course
override_quizbooleanoptionalIssue even if quizzes incomplete (admin only)
GET /api/certificates/verify/:cert_id Public certificate verification

No API key required. Anyone can verify a certificate using its unique ID.

RESPONSE 200
{
  "valid": true,
  "certificate": {
    "id": "PECS-2024-001234",
    "holder_name": "Adaeze Okonkwo",
    "course_title": "Digital Marketing Mastery",
    "issued_at": "2024-11-15",
    "platform": "Paramount E-Course · course.paramountmart.shop"
  }
}
CREDITS API

Credits Management

POST/api/credits/topupAdd credits to a user
PARAMTYPEREQUIREDDESCRIPTION
user_idintegerrequiredTarget user's Paramount E-Course ID
amountintegerrequiredCredits to add
sourcestringoptionalSource label (e.g. "paystack", "partner-grant")
referencestringoptionalYour transaction reference
GET/api/credits/balance/:user_idGet user credit balance
RESPONSE 200
{ "status": "success", "data": { "user_id": 42, "credits": 750 } }
WEBINAR-AS-A-SERVICE

Webinar API

Embed Paramount E-Course's live webinar engine into your own platform. Create sessions, manage attendees, and get join links — all via API.

POST/api/webinars/createCreate a new webinar session
PARAMTYPEREQUIREDDESCRIPTION
titlestringrequiredWebinar session title
host_idintegerrequiredTutor/host user ID
scheduled_atISO 8601requiredWhen the session starts
duration_minutesintegeroptionalExpected duration (default 60)
max_attendeesintegeroptionalAttendee cap (default unlimited)
is_publicbooleanoptionalVisible in public listing (default false)
RESPONSE 201
{
  "status": "success",
  "data": {
    "webinar_id": "wbn_abc123",
    "title": "Digital Marketing Masterclass",
    "scheduled_at": "2025-02-15T14:00:00Z",
    "host_join_url": "https://course.paramountmart.shop/live?wbn=wbn_abc123&t=HOST_TOKEN",
    "attendee_join_url": "https://course.paramountmart.shop/live?wbn=wbn_abc123",
    "embed_url": "https://course.paramountmart.shop/embed/webinar/wbn_abc123"
  }
}
GET/api/webinars/:id/attendeesList session attendees

Returns a list of all joined and registered attendees for a webinar session.

POST/api/webinars/:id/endEnd an active session

Terminates the live session and triggers webinar.ended webhook event to all subscribers.

AI SEARCH API

AI-Powered Course Search

POST/api/searchNatural language course search

Powered by Groq AI (llama-3.1-8b-instant). Pass a natural language query and receive semantically matched courses.

REQUEST BODY
{
  "query": "I want to learn how to market my small business online in Nigeria",
  "limit": 5
}
WEBHOOKS

How Webhooks Work

Paramount E-Course sends real-time HTTP POST notifications to your endpoint whenever key events happen — enrolments, completions, certificate issuance, webinar events, and more.

REGISTER A WEBHOOK ENDPOINT
curl -X POST "https://course.paramountmart.shop/api/connect/webhooks" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://yoursite.com/pecs-webhook",
    "events": ["course.completed", "certificate.issued", "webinar.started"],
    "secret": "your_webhook_signing_secret"
  }'
INCOMING WEBHOOK PAYLOAD
{
  "event": "course.completed",
  "timestamp": "2025-01-15T10:34:22Z",
  "webhook_id": "wh_evt_abc123xyz",
  "data": {
    "user_id": 42,
    "user_name": "Adaeze Okonkwo",
    "user_email": "adaeze@example.com",
    "external_user_id": "your-user-ref-456",
    "course_id": 1,
    "course_title": "Digital Marketing Mastery",
    "completed_at": "2025-01-15T10:34:21Z",
    "certificate_id": "PECS-2025-001234"
  }
}
EVENT REFERENCE

Webhook Event Types

course.enrolled
Triggered when a user enrols in a course, including partner-initiated enrolments via the API.
COURSE
course.completed
Triggered when a user completes all topics and passes all quizzes in a course.
COURSE
course.progress
Triggered on each topic completion. Payload includes current progress percentage.
COURSE
certificate.issued
Triggered when a verified certificate is generated for a user. Includes certificate download URL.
CERTIFICATE
webinar.started
Triggered when a live webinar session goes live. Includes join URL for embedding.
WEBINAR
webinar.joined
Triggered each time an attendee joins a live session. Includes attendee details.
WEBINAR
webinar.ended
Triggered when a webinar session ends. Includes attendance count and duration.
WEBINAR
user.registered
Triggered when a new student registers on the platform via the partner registration API.
USER
credits.purchased
Triggered when a user purchases a credit package. Includes payment reference and amount.
CREDITS
SECURITY

Signature Verification

Every webhook request includes an X-PECS-Signature header. Always verify this before processing.

PHP — VERIFY SIGNATURE
<?php
// Your webhook handler (e.g. /pecs-webhook.php)

$payload   = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_PECS_SIGNATURE'] ?? '';
$secret    = 'YOUR_WEBHOOK_SIGNING_SECRET';

// Compute expected signature
$expected = 'sha256=' . hash_hmac('sha256', $payload, $secret);

// Constant-time comparison to prevent timing attacks
if (!hash_equals($expected, $signature)) {
    http_response_code(401);
    exit('Invalid signature');
}

$event = json_decode($payload, true);

switch ($event['event']) {
    case 'course.completed':
        // Award your own badge or update your CRM
        handle_completion($event['data']);
        break;
    case 'certificate.issued':
        // Notify the user via your own system
        notify_certificate($event['data']);
        break;
    case 'webinar.started':
        // Show "LIVE NOW" banner on your site
        broadcast_live_notification($event['data']);
        break;
}

http_response_code(200);
echo json_encode(['received' => true]);
NODE.JS — VERIFY SIGNATURE
const crypto = require('crypto');

function verifyEcosWebhook(rawBody, signature, secret) {
  const expected = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(rawBody)
    .digest('hex');
  // Constant-time comparison
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}

// Express.js handler
app.post('/pecs-webhook', express.raw({ type: '*/*' }), (req, res) => {
  const sig    = req.headers['x-pecs-signature'];
  const secret = process.env.PECS_WEBHOOK_SECRET;

  if (!verifyEcosWebhook(req.body, sig, secret)) {
    return res.status(401).send('Invalid signature');
  }

  const event = JSON.parse(req.body);
  console.log('Event received:', event.event, event.data);
  res.json({ received: true });
});
PARTNER REGISTRATION

Get Your API Key

Register your application below to receive a test API key instantly. Production keys are issued after a brief review.

Partner Application
API PLANS

Choose Your Plan

Starter
Free
Forever · No credit card
500 API calls/month
Course listing & details
Certificate verification
2 webhook events
Webinar API
Enrolment API
Enterprise
Custom
SLA · Dedicated support
Unlimited API calls
White-label embedding
Unlimited webinar rooms
Custom certificate branding
SLA guarantee (99.9%)
Priority developer support
DEVELOPER SUPPORT

Need Help?

Developer Chat
WhatsApp our developer support line for API integration questions. Response within 4 hours.
Contact Support →
Platform Docs
Read the full platform documentation for student, tutor, and admin guides.
Read Docs →