API Key Scopes
All public endpoints require:
- Header
x-platzi-company-api-key - Header
User-Agent
Create keys and assign scopes from the B2B admin dashboard.
Scopes
| Scope | Purpose |
|---|---|
reports.read | Read-only aggregated reports (https://api.platzi.com/business) |
activations.read | Read activation / redeemable code data |
activations.write | Create activations and modify licenses (add/remove months) |
sso.magiclink | Generate SSO magic links |
Reports (reports.read)
Base URL: https://api.platzi.com/business
| Endpoint | Description |
|---|---|
GET /v2/reports/users/ | User progress list, filters (days_last_without_progress, etc.) |
GET /v2/reports/users/funnel/ | Dashboard funnel (invited → certified) |
GET /v2/reports/users/metrics/ | Raw funnel metrics (legacy; prefer /users/funnel/) |
GET /v2/reports/users/inactive/ | Users with no course progress in N days |
GET /v2/reports/users/errors/summary/ | Users in error grouped by error_code |
GET /v2/reports/users/courses/ | Per-user course progress |
GET /v2/reports/courses/ | Courses report (certified_student_count / users_approved) |
GET /v2/reports/courses/top/approved/ | Top certified courses (team_id optional) |
GET /v2/reports/learning-paths/ | Learning paths summary |
GET /v1/english/results/ | English placement results |
User management
Base URL: https://api-sls.platzi.com/production-sls-business-domains
| Endpoint | Required scope | Notes |
|---|---|---|
GET /v3/users/{company_id} | activations.read | Operational user list (error_code, license state). Not covered by reports.read. |
PUT /v3/users/{company_id} | activations.write | Update licenses for specific users |
POST /v3/users/{company_id}/bulk | activations.write | Bulk add/remove reserved months, or trim to access_until |
POST /v3/users/{company_id}/extensions/accept-all | activations.write | Accept all pending license extension requests (adds 1 month each) |
POST /v3/users/{company_id} | activations.write | Activate users |
DELETE /v3/users/{company_id} | activations.write | Deactivate/delete users |
For analytics and Cowork integrations, prefer reports.read endpoints. Use activations.read only when you need operational fields not exposed in reports (e.g. per-row activation state).
Certified students field naming
| Endpoint | Legacy field | Canonical field |
|---|---|---|
GET /v2/reports/courses/ | users_approved | certified_student_count |
GET /v2/reports/courses/top/approved/ | course_approved | certified_student_count |
Both legacy and canonical fields are returned during the transition period.