Workera Programs API

The Programs API from Workera — 2 operation(s) for programs.

Operations 2

GET /api/v1/programs Get all programs (including drafts) #
GET /api/v1/programs/{identifier} Get one program #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/workera-programs-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

workera-programs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: '# API Documentation


    _Hello and welcome to the Workera API!_


    This documentation is designed to provide you with all the information you need to effectively integrate and interact with our services.'
  title: Workera Programs API
  version: '1.0'
servers:
- url: https://skills.workera.ai
  variables: {}
security:
- authorization: []
tags:
- name: Programs
paths:
  /api/v1/programs:
    get:
      callbacks: {}
      operationId: WorkeraWebappsWeb.Rest.Controllers.ProgramController.all
      parameters:
      - description: 'Filter by program status. Allowed: live | draft'
        in: query
        name: status
        required: false
        schema:
          enum:
          - live
          - draft
          type: string
      - description: 'Cursor value for pagination. Returns results with `updated_at` after this timestamp when order is `asc`, or before this timestamp when order is `desc`. Format: ISO 8601 datetime'
        example: '2024-09-25T00:00:00Z'
        in: query
        name: next_page_after
        required: false
        schema:
          type: string
      - description: 'The number of results to return per page. Allowed values: `1` to `100` **Default**: `10`'
        example: 10
        in: query
        name: limit
        required: false
        schema:
          type: integer
      - description: 'The order in which the result data is sorted by, using the `updated_at` field. Allowed values: `asc`, `desc`. **Default**: `desc`'
        example: asc
        in: query
        name: order
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProgramListResponse'
          description: A list of programs
          headers:
            x-ratelimit-limit:
              description: The maximum amount of request within the rate limit window
              example: 'x-ratelimit-limit: 100'
              style: simple
            x-ratelimit-remaining:
              description: The remaining amount of request within the rate limit window
              example: 'x-ratelimit-remaining: 10'
              style: simple
            x-ratelimit-reset:
              description: The amount of seconds until the rate limit window resets and the remaining amount of requests is reset to the maximum amount of requests
              example: 'x-ratelimit-reset: 10'
              style: simple
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Request has to be authenticated to access this resource
          headers:
            x-ratelimit-limit:
              description: The maximum amount of request within the rate limit window
              example: 'x-ratelimit-limit: 100'
              style: simple
            x-ratelimit-remaining:
              description: The remaining amount of request within the rate limit window
              example: 'x-ratelimit-remaining: 10'
              style: simple
            x-ratelimit-reset:
              description: The amount of seconds until the rate limit window resets and the remaining amount of requests is reset to the maximum amount of requests
              example: 'x-ratelimit-reset: 10'
              style: simple
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Request is not authorized to access this resource
          headers:
            x-ratelimit-limit:
              description: The maximum amount of request within the rate limit window
              example: 'x-ratelimit-limit: 100'
              style: simple
            x-ratelimit-remaining:
              description: The remaining amount of request within the rate limit window
              example: 'x-ratelimit-remaining: 10'
              style: simple
            x-ratelimit-reset:
              description: The amount of seconds until the rate limit window resets and the remaining amount of requests is reset to the maximum amount of requests
              example: 'x-ratelimit-reset: 10'
              style: simple
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Rate limit has been reached
          headers:
            x-ratelimit-limit:
              description: The maximum amount of request within the rate limit window
              example: 'x-ratelimit-limit: 100'
              style: simple
            x-ratelimit-remaining:
              description: The remaining amount of request within the rate limit window
              example: 'x-ratelimit-remaining: 0'
              style: simple
            x-ratelimit-reset:
              description: The amount of seconds until the rate limit window resets and the remaining amount of requests is reset to the maximum amount of requests
              example: 'x-ratelimit-reset: 10'
              style: simple
      summary: Get all programs (including drafts)
      tags:
      - Programs
  /api/v1/programs/{identifier}:
    get:
      callbacks: {}
      operationId: WorkeraWebappsWeb.Rest.Controllers.ProgramController.one
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProgramResponse'
          description: One Program
          headers:
            x-ratelimit-limit:
              description: The maximum amount of request within the rate limit window
              example: 'x-ratelimit-limit: 100'
              style: simple
            x-ratelimit-remaining:
              description: The remaining amount of request within the rate limit window
              example: 'x-ratelimit-remaining: 10'
              style: simple
            x-ratelimit-reset:
              description: The amount of seconds until the rate limit window resets and the remaining amount of requests is reset to the maximum amount of requests
              example: 'x-ratelimit-reset: 10'
              style: simple
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Request has to be authenticated to access this resource
          headers:
            x-ratelimit-limit:
              description: The maximum amount of request within the rate limit window
              example: 'x-ratelimit-limit: 100'
              style: simple
            x-ratelimit-remaining:
              description: The remaining amount of request within the rate limit window
              example: 'x-ratelimit-remaining: 10'
              style: simple
            x-ratelimit-reset:
              description: The amount of seconds until the rate limit window resets and the remaining amount of requests is reset to the maximum amount of requests
              example: 'x-ratelimit-reset: 10'
              style: simple
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Request is not authorized to access this resource
          headers:
            x-ratelimit-limit:
              description: The maximum amount of request within the rate limit window
              example: 'x-ratelimit-limit: 100'
              style: simple
            x-ratelimit-remaining:
              description: The remaining amount of request within the rate limit window
              example: 'x-ratelimit-remaining: 10'
              style: simple
            x-ratelimit-reset:
              description: The amount of seconds until the rate limit window resets and the remaining amount of requests is reset to the maximum amount of requests
              example: 'x-ratelimit-reset: 10'
              style: simple
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Rate limit has been reached
          headers:
            x-ratelimit-limit:
              description: The maximum amount of request within the rate limit window
              example: 'x-ratelimit-limit: 100'
              style: simple
            x-ratelimit-remaining:
              description: The remaining amount of request within the rate limit window
              example: 'x-ratelimit-remaining: 0'
              style: simple
            x-ratelimit-reset:
              description: The amount of seconds until the rate limit window resets and the remaining amount of requests is reset to the maximum amount of requests
              example: 'x-ratelimit-reset: 10'
              style: simple
      summary: Get one program
      tags:
      - Programs
components:
  schemas:
    ProgramResponse:
      description: Response schema for a program
      example:
        created_at: '2024-01-01T01:01:01Z'
        domains:
        - elective: false
          identifier: 8b65714c-ba23-41bc-97bc-0305fdff53e5
          target_score: 200
          title: Supervised Learning Foundations
        - elective: true
          identifier: a1f2e3d4-5678-90ab-cdef-1234567890ab
          target_score: 220
          title: Applied Deep Learning
        due_date: '2024-06-30'
        identifier: e26dc707-6ec0-44d3-aee9-9b558ad5d77b
        initiative_type: skills_evaluation
        name: Data Science Bootcamp
        start_date: '2024-01-01'
        status: LIVE
        updated_at: '2024-02-01T01:01:01Z'
      properties:
        badge_template_id:
          description: Identifier of the badge template associated with this program. Present only when the program has an active badge template configured; omitted otherwise. The value is currently a Credly badge template ID.
          type: string
        created_at:
          description: The timestamp when the program was created
          format: date-time
          type: string
        domains:
          description: Capabilities that make up the program. Order is not guaranteed; do not rely on positional semantics.
          items:
            properties:
              elective:
                description: Whether the capability is elective within this program
                type: boolean
              identifier:
                description: Unique capability identifier. Matches the identifier returned by GET /api/v1/domains.
                format: uuid
                type: string
              target_score:
                description: The target score a learner is expected to reach for this capability
                type: integer
              title:
                description: Capability title
                type: string
            required:
            - identifier
            - title
            - elective
            - target_score
            type: object
          type: array
        due_date:
          description: The due date of the program
          format: date
          type:
          - string
          - 'null'
        identifier:
          description: Unique program identifier
          type: string
        initiative_type:
          description: The program's initiative type. `skills_evaluation` is the canonical high-stakes type; consumers decide which types they treat as high-stakes. Matches the `initiative_type` returned on scores and webhooks.
          enum:
          - skills_evaluation
          - skills_growth
          - benchmark
          type: string
        name:
          description: Program name
          type: string
        start_date:
          description: The start date of the program
          format: date
          type:
          - string
          - 'null'
        status:
          description: The status of the program
          enum:
          - DRAFT
          - LIVE
          - ARCHIVED
          type: string
        updated_at:
          description: The timestamp when the program was last updated
          format: date-time
          type: string
      required:
      - identifier
      - name
      - initiative_type
      - created_at
      - updated_at
      - status
      - domains
      title: ProgramResponse
      type: object
    ProgramListResponse:
      description: Response schema for a list of programs
      example:
        data:
        - created_at: '2024-01-01T01:01:01Z'
          description: Comprehensive data science training program
          domains:
          - elective: false
            identifier: 8b65714c-ba23-41bc-97bc-0305fdff53e5
            target_score: 200
            title: Supervised Learning Foundations
          due_date: '2024-06-30'
          identifier: e26dc707-6ec0-44d3-aee9-9b558ad5d77b
          name: Data Science Bootcamp
          start_date: '2024-01-01'
          status: LIVE
          updated_at: '2024-02-01T01:01:01Z'
        has_more: false
        next_page: null
      properties:
        data:
          description: List of programs. String fields such as program and capability names are returned with HTML entities decoded.
          items:
            $ref: '#/components/schemas/ProgramResponse'
          type: array
        has_more:
          description: indicates pagination can be used to retrieve more programs
          type: boolean
        next_page:
          description: URL to the next page of the paginated programs
          type:
          - string
          - 'null'
      required:
      - data
      - has_more
      - next_page
      title: ProgramListResponse
      type: object
    ErrorResponse:
      description: Response schema for all errors
      example:
        code: resource_missing
        message: User not found
        type: invalid_request_error
      properties:
        code:
          description: Machine-readable error code
          type: string
        message:
          description: Human-readable error message
          type: string
        type:
          description: Category of error
          type: string
      title: ErrorResponse
      type: object
  securitySchemes:
    authorization:
      scheme: bearer
      type: http