CoderPad Webhook API

The Webhook API from CoderPad — 1 operation(s) for webhook.

Operations 3

GET /v1.1/webhook Get Webhook #
POST /v1.1/webhook Create Webhook #
DELETE /v1.1/webhook Delete Webhook #

Specifications

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/coderpad:coderpad-webhook-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

coderpad-webhook-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: CoderPad Screen Webhook API
  description: 'Documentation for the CoderPad Screen API (formerly known as CodinGame for Work)


    # Version


    This is the documentation for version v1.1 of the API which is the latest version available.


    API version will be incremented for any breaking changes.


    WARNING: over time, new fields may be added to the responses JSON objects for this version of the API.

    This does not constitute a breaking change and the version of the API will NOT be incremented.

    Please, make sure your deserialization code does not break when a new field is added to a response JSON object.


    # Authentication


    An API key must be declared in the http headers of each request. The name of the header parameter is `API-Key`.

    If the API key is invalid, the request will produce a **401** error.

    Once you have received your API key, you can pass it in the header of the requests, for instance:


    ```bash

    curl --header "API-Key: your_api_key" \

    --request GET \

    https://screen.coderpad.io/assessment/api/v1.1/campaigns

    ```

    ## API Key Access

    To access your CoderPad Screen API key, simply click on **ACCOUNT** in the top navigation menu, and then select **Integration**. You''ll then be presented with the following page:


    !CoderPad API Key screenshot


    Then click **Generate key** to create a key that you can then copy and use in your desired integration.


    # Errors


    The API uses standard HTTP status codes to indicate the success or failure of the API call.

    The body of the response will be JSON in the following format:


    ```

    {

    "code": "specific code for the error",

    "message": "explanatory message"

    }

    ```


    Error codes can be `InvalidTestId`, `NotFoundTestId`, `InvalidCampaignId`, `BadCandidateEmailFormat`, `BadRecruiterEmailFormat`, `CandidateNameTooLong`,

    `InvalidCampaignPayload`, `InvalidLocale`, `NotFoundQuestionId`, `NotFoundDomain`, `NotFoundTeam`, `FeatureNotAvailable`, `TestNotFinished`

    depending on the request.


    The error `code` is required while the `message` is optional.'
  contact:
    email: support@coderpad.io
  version: v1.1
servers:
- url: https://screen.coderpad.io/assessment/api
  description: CoderPad Screen US
- url: https://www.codingame.eu/assessment/api
  description: CoderPad Screen EU
security:
- ApiKeyAuth: []
tags:
- name: Webhook
paths:
  /v1.1/webhook:
    get:
      tags:
      - Webhook
      summary: Get Webhook
      operationId: getWebhook
      responses:
        '204':
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/webhook'
        '404':
          description: not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkApiExceptionSerialized'
    post:
      tags:
      - Webhook
      summary: Create Webhook
      description: 'You can create a webhook or contact us to do so.


        Only one webhook can be configured at a time. A new subscription will replace the existing one.


        Every time an event is triggered on the platform, this webhook is updated with the event type and any necessary details.


        Here are the events currently sent to this webhook:


        - "test_status_changed": when a test status changes (completed, canceled, …)'
      operationId: subscribe
      requestBody:
        description: the url to send the data to
        content:
          application/json:
            schema:
              type: string
          text/plain:
            schema:
              type: string
        required: true
      responses:
        '204':
          description: success
        '400':
          description: bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkApiExceptionSerialized'
        '422':
          description: invalid url
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkApiExceptionSerialized'
      callbacks:
        test_status_changed:
          '{$request.body#/url}':
            post:
              summary: On test status change
              requestBody:
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/WebhookTestStatusChangedDto'
              responses:
                '204':
                  description: success
                '500':
                  description: internal error
    delete:
      tags:
      - Webhook
      summary: Delete Webhook
      operationId: unsubscribe
      responses:
        '204':
          description: success
components:
  schemas:
    WebhookTestStatusChangedDto:
      type: object
      properties:
        event:
          type: string
          description: the type of event that triggered the webhook
          enum:
          - test_status_changed
          - test_review_status_changed
        data:
          $ref: '#/components/schemas/result'
    webhook:
      type: object
      properties:
        url:
          type: string
          description: the endpoint of your webhook
          example: https://www.example.com/hook
    questions:
      type: object
      properties:
        id:
          type: integer
          description: question id
          format: int32
          example: 123456
        last_activity_time:
          type: integer
          description: time (in milliseconds) of the candidate's last activity (last submit or code test)
          format: int64
          example: 1685545371216
      description: list of all the questions with their id and last_activity_time
    WorkApiExceptionSerialized:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
    report_skill:
      type: object
      properties:
        points:
          type: integer
          description: number of points awarded to the test for the given technology and the specific skill
          format: int32
          example: 20
        score:
          type: number
          description: number of points in percentage for the given technology and the specific skill
          format: double
          example: 6.06
        total_points:
          type: integer
          description: available points for the test for the given technology and the specific skill
          format: int32
          example: 330
      description: report by skill for a given technology - the property name is the skill name, 'Language Knowledge' or 'Problem Solving' for instance
    result:
      type: object
      properties:
        status:
          type: string
          description: the test status
          example: completed
          enum:
          - aborted
          - canceled
          - completed
          - expired
          - in progress
          - waiting
          - need review
        url:
          type: string
          description: url to the test report through the dashboard application
          example: https://www.codingame.com/work/dashboard/campaign/69/candidates/?selected=42
        report:
          $ref: '#/components/schemas/report'
        id:
          type: integer
          description: the test id
          format: int32
          example: 42
        id_test:
          type: integer
          description: the test id (deprecated, see id)
          format: int32
          example: 42
        organization_id:
          type: string
          description: the organization id
          example: 0558b3e3-b76c-42ea-9435-8da1adb7e232
        campaign_id:
          type: integer
          description: the campaign id
          format: int32
          example: 42
        candidate_name:
          type: string
          description: the name of the candidate
          example: Jean Dupont
        candidate_email:
          type: string
          description: the email of the candidate
          example: jean.dupont@codingame.com
        tags:
          type: array
          description: the tags of the candidate
          items:
            type: string
            description: the tags of the candidate
        send_time:
          type: integer
          description: timestamp (in milliseconds) when the test has been sent
          format: int64
        start_time:
          type: integer
          description: timestamp (in milliseconds) when the test has been started
          format: int64
        end_time:
          type: integer
          description: timestamp (in milliseconds) when the test has been ended
          format: int64
        test_url:
          type: string
          description: the url to the test
        candidate_language:
          type: string
          description: the language chosen by the candidate to take the test if they started the test, null otherwise
        last_activity_time:
          type: integer
          description: time (in milliseconds) of the candidate's last activity (last submit or code test)
          format: int64
          example: 1685545371216
        approval_status:
          type: string
          description: approval status of the candidate (PASSED, REJECTED, TO_REVIEW)
          example: PASSED
        questions:
          type: array
          description: questions and their last activity time
          items:
            $ref: '#/components/schemas/questions'
      description: the data relevant to the event
    report:
      type: object
      properties:
        duration:
          type: integer
          description: duration (in seconds) spent by the candidate to complete the test
          format: int64
          example: 2009
        warnings:
          type: array
          description: warnings about the test
          items:
            type: string
            description: warnings about the test
        points:
          type: integer
          description: number of points awarded to the test
          format: int32
          example: 40
        score:
          type: number
          description: number of points in percentage
          format: double
          example: 6.06
        technologies:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/report_technology'
        total_duration:
          type: integer
          description: maximal duration (in seconds) available for the test
          format: int64
          example: 2700
        total_points:
          type: integer
          description: available points for the test
          format: int32
          example: 660
        comparative_score:
          type: number
          description: candidate score compared with developers who have taken a similar test
          format: double
          example: 13.9
        community_stats:
          type: array
          items:
            type: integer
            format: int32
        marked_as_cheated_by_recruiter:
          type: boolean
          description: 'whether a recruiter manually flagged this candidate as cheated. Never set by CoderPad: the platform own detections are reported as warnings instead. The question level flag is questions[].marked_as_cheated_by_recruiter'
          example: false
        time_spent_outside_environment_seconds:
          type: integer
          description: total time (in seconds) the candidate spent with the environment out of focus during the test
          format: int64
          example: 214
        environment_exit_count:
          type: integer
          description: number of times the candidate left the environment during the test
          format: int32
          example: 9
      description: the test report
    report_technology:
      type: object
      properties:
        points:
          type: integer
          description: number of points awarded to the test for the given technology
          format: int32
          example: 20
        score:
          type: number
          description: number of points in percentage for the given technology
          format: double
          example: 6.06
        skills:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/report_skill'
        total_points:
          type: integer
          description: available points for the test for the given technology
          format: int32
          example: 330
        comparative_score:
          type: number
          description: candidate score compared with developers who have taken a similar test for the given technology
          format: double
          example: 13.9
      description: report by technology - the property name is the technology name, 'PHP' for instance
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      name: API-Key
      in: header
x-provenance:
  method: searched
  source: https://developers.coderpad.io/reference
  harvested: '2026-10-27'
  tool: harvest-readme-openapi.py
  note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
  assembled_from:
  - https://developers.coderpad.io/reference/aiassistconversations.md
  - https://developers.coderpad.io/reference/campaign.md
  - https://developers.coderpad.io/reference/campaigninsights.md
  - https://developers.coderpad.io/reference/campaigns-1.md
  - https://developers.coderpad.io/reference/cancel.md
  - https://developers.coderpad.io/reference/candidateproject.md
  - https://developers.coderpad.io/reference/createcampaign.md
  - https://developers.coderpad.io/reference/createquestion.md
  - https://developers.coderpad.io/reference/delete.md
  - https://developers.coderpad.io/reference/getwebhook.md
  - https://developers.coderpad.io/reference/me-1.md
  - https://developers.coderpad.io/reference/playbackevents.md
  - https://developers.coderpad.io/reference/question.md
  - https://developers.coderpad.io/reference/questioninsights.md
  - https://developers.coderpad.io/reference/questions-2.md
  - https://developers.coderpad.io/reference/report.md
  - https://developers.coderpad.io/reference/resend.md
  - https://developers.coderpad.io/reference/send.md
  - https://developers.coderpad.io/reference/subscribe.md
  - https://developers.coderpad.io/reference/testsstatus.md
  - https://developers.coderpad.io/reference/teststatus.md
  - https://developers.coderpad.io/reference/unsubscribe.md
  - https://developers.coderpad.io/reference/updatequestion.md
  - https://developers.coderpad.io/reference/upload.md
  merge:
    pages: 24
    deduped: 122
    conflicts_kept_first: 0