The same REST API that powers this site: courses, enrollments, learning progress and certificates, as JSON over HTTP with JWT authentication.
Base URL https://skills.cloudbusinesstool.com/api/v1/
# Sign in — returns {"access", "refresh", "user"}
curl -X POST https://skills.cloudbusinesstool.com/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "password": "••••••••"}'
# Public: search courses
curl "https://skills.cloudbusinesstool.com/api/v1/courses?search=python&ordering=-rating&pageSize=5"
# Authenticated: your enrollments
curl https://skills.cloudbusinesstool.com/api/v1/me/enrollments \
-H "Authorization: Bearer $ACCESS_TOKEN"Conventions that hold across every endpoint.
Predictable resource URLs, camelCase JSON in and out, and slugs for public resources like courses and instructors.
Sign in with your SmartDzidzo account to get short-lived access tokens. No separate API keys to manage.
Every endpoint is described in an OpenAPI 3 schema, browsable in Swagger UI and ReDoc.
Lists return {count, next, previous, results}. Use page and pageSize (max 100), plus camelCase filters and ordering.
A selection of endpoints. The interactive docs list every route with full request and response schemas.
/auth/registerCreate an account ({name, email, password})/auth/loginExchange email and password for {access, refresh, user}/auth/2fa/verifyFinish a two-factor sign-in ({mfaToken, code})/auth/token/refreshGet a new access token ({refresh}); refresh tokens rotate/auth/logoutBearer tokenRevoke the session ({refresh})/meBearer tokenThe signed-in user's profile/coursesSearch, filter and sort published courses/courses/{slug}Course detail with curriculum and rating breakdown/categoriesAll categories with subcategories and course counts/instructors/{slug}An instructor's public profile/me/enrollmentsBearer tokenYour enrollments with progress/enrollmentsBearer tokenEnroll in a free course ({course: slug})/lessons/{id}/progressBearer tokenRecord progress ({completed, positionSeconds})/certificates/{credentialId}Publicly verify a certificate/me/exportBearer tokenDownload all your data as JSON/site/statsPlatform headline numbersGET /courses (trimmed){
"count": 12,
"next": "https://skills.cloudbusinesstool.com/api/v1/courses?page=2&pageSize=5",
"previous": null,
"results": [
{
"id": 2,
"slug": "python-machine-learning-masterclass",
"title": "Python for Machine Learning & Data Science Masterclass",
"categorySlug": "data-science",
"level": "Intermediate",
"price": 84.99,
"rating": 4.9,
"ratingCount": 96280,
"durationHours": 54.0,
"instructor": { "id": 4, "slug": "kwame-mensah", "name": "Kwame Mensah" }
}
]
}If an account has 2FA on, auth/login returns {mfaRequired, mfaToken} instead of tokens. Complete sign-in with auth/2fa/verify and a code from the authenticator app.
400 returns {"field": ["message"]} or {"detail": "message"}. 401 means unauthenticated, 403 forbidden, 402 payment required or declined, 409 conflict and 429 throttled.
Requests are throttled per client and per user, with stricter limits on sign-in and verification-code endpoints. Over a limit, the API responds with 429.
Create a free account, sign in through the API and try every endpoint in the interactive docs. Prefer code generators? Download the OpenAPI schema or read it in ReDoc.