> ## Documentation Index
> Fetch the complete documentation index at: https://docs.roolink.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Solve Sec-CPT

> Solves a Sec-CPT challenge, the `428` response whose body contains `sec-cp-challenge`. Send the challenge fields as they arrived plus the `sec_cpt` cookie value. The response carries the `token` and the `answers` to submit to the site once the challenge's wait has passed.



## OpenAPI

````yaml api-reference/openapi/akamai-web.yaml POST /sec-cpt
openapi: 3.1.1
info:
  title: Roolink Akamai Web API
  summary: >-
    Bypass Akamai Bot Manager on the web — sensor (`_abck`), SBSD, Pixel
    (`ak_bmsc`), SEC-CPT, and script parsing.
  description: >-
    Endpoints for websites behind Akamai Bot Manager. Send your key in
    `X-Api-Key`, JSON in and out. The Akamai Web guides show the order to call
    them in.
  version: 1.0.0
  contact:
    name: Roolink Support
    url: https://roolink.io
    email: support@roolink.io
servers:
  - url: https://web.roolink.io/api/v1
    description: Production
security:
  - apiKey: []
paths:
  /sec-cpt:
    post:
      summary: Solve Sec-CPT
      description: >-
        Solves a Sec-CPT challenge, the `428` response whose body contains
        `sec-cp-challenge`. Send the challenge fields as they arrived plus the
        `sec_cpt` cookie value. The response carries the `token` and the
        `answers` to submit to the site once the challenge's wait has passed.
      operationId: solveSecCpt
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecCptChallenge'
            example:
              sec-cp-challenge: 'true'
              provider: crypto
              chlg_duration: 5
              token: eyJhbGc...
              timestamp: 1715800000
              nonce: 9f8e7d6c
              difficulty: 2000
              count: 10
              timeout: 15000
              cpu: false
              cookie: incap_ses_~abc123
      responses:
        '200':
          description: Challenge solved. Submit `token` and `answers` to the site.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecCptResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/QuotaExceeded'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    SecCptChallenge:
      type: object
      required:
        - token
        - timestamp
        - nonce
        - difficulty
        - cookie
      description: The 428 body, passed through as received.
      properties:
        sec-cp-challenge:
          type: string
          description: As received.
        provider:
          type: string
          enum:
            - crypto
            - behavioral
            - adaptive
          description: Challenge type as received, `crypto` or `adaptive`.
        branding_url_content:
          type: string
          description: As received.
        chlg_duration:
          type: integer
          description: Wait in seconds before submitting. Roolink does not wait for you.
        token:
          type: string
          description: Challenge token from the 428 response.
        timestamp:
          type: integer
          description: Server timestamp from the 428 response.
        nonce:
          type: string
          description: Cryptographic nonce.
        difficulty:
          type: integer
          minimum: 1
          maximum: 50000
          description: As received.
        count:
          type: integer
          minimum: 0
          maximum: 20
          default: 10
          description: Number of answers the challenge expects. Defaults to 10.
        timeout:
          type: integer
          format: int64
          minimum: 0
          description: As received.
        cpu:
          type: boolean
          default: false
          description: As received.
        cookie:
          type: string
          description: The `sec_cpt` cookie value from the session.
          example: incap_ses_~abc123
    SecCptResponse:
      type: object
      required:
        - token
        - answers
      properties:
        token:
          type: string
          description: Echo of the challenge token.
        answers:
          type: array
          items:
            type: string
          description: The answers to submit with `token`.
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: Human-readable error message.
  responses:
    BadRequest:
      description: Required fields missing or malformed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
        text/plain:
          schema:
            type: string
          example: invalid request body
    Unauthorized:
      description: Missing or invalid `X-Api-Key`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    QuotaExceeded:
      description: The key has no quota or balance left for this product.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: quota exhausted
    InternalError:
      description: Unexpected server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
        text/plain:
          schema:
            type: string
          example: internal server error
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-Api-Key
      description: Customer API key issued from the Roolink dashboard.

````