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

# Generate slider

> Generate the DataDome captcha check URL for the supported slider flow.

A slider challenge is identified by `rt: "c"`, the `c.js` loader, or a
`/captcha/` device URL; it can also follow an interstitial whose `view` is
`captcha`. Set `task` to `datadome` and `mode` to `captcha`.

Fetch the captcha page through the same proxy, User-Agent, and cookie jar, then
submit its exact HTML as `page` with `document_url` and `parent_url`. If the
page references its Browserify bundle through one external script instead of
embedding it, fetch that script through the same target session and submit its
exact source as the optional `script` field. Evade performs no target fetches.
It generates the full slider interaction and its timeline server-side, so **no
interaction or timing input is required**.

Reuse the `session_id` returned by the tags solve so the slider uses the same
fingerprint and location identity.

```bash theme={null}
curl --request POST \
  --url "https://api.evade.now/solve" \
  --header "authorization: Bearer $EVADE_API_KEY" \
  --header "content-type: application/json" \
  --data-raw '{
    "task": "datadome",
    "mode": "captcha",
    "session_id": "0123456789abcdef0123456789abcdef",
    "page": "<!DOCTYPE html><html>...exact fetched captcha HTML...</html>",
    "document_url": "https://geo.captcha-delivery.com/captcha/?initialCid=...&hash=...&cid=...&referer=...",
    "parent_url": "https://www.example.com/protected"
  }'
```

Add `"script": "...exact fetched Browserify source..."` only when the captcha
page references an external bundle.

## Submit the check

The response `payload` is the complete DataDome request URL. GET it unchanged
through the same client with the returned `headers`, using the captcha page as
the referrer and preserving the cookie jar. When DataDome returns a `cookie`
value, replace the existing `datadome` cookie and retry the protected request.

<Note>
  Only the simple-slider configuration is supported. A puzzle-image challenge
  that needs an unresolved image displacement fails closed with
  `captcha_failed` instead of returning a guess.
</Note>


## OpenAPI

````yaml datadome-openapi.yaml POST /solve
openapi: 3.1.0
info:
  title: Evade DataDome API
  version: 1.0.0
  description: Generate request material for DataDome tags, interstitial, and slider flows.
servers:
  - url: https://api.evade.now
security:
  - bearerAuth: []
paths:
  /solve:
    post:
      summary: Generate DataDome payload
      description: >-
        Generate tags, interstitial, or slider request material selected by
        mode.
      operationId: solveDataDome
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/TagsSolveRequest'
                - $ref: '#/components/schemas/InterstitialSolveRequest'
                - $ref: '#/components/schemas/CaptchaSolveRequest'
              discriminator:
                propertyName: mode
                mapping:
                  tags: '#/components/schemas/TagsSolveRequest'
                  interstitial: '#/components/schemas/InterstitialSolveRequest'
                  captcha: '#/components/schemas/CaptchaSolveRequest'
            examples:
              tags:
                summary: Start a session and generate tags telemetry
                value:
                  task: datadome
                  mode: tags
                  user_agent: >-
                    Mozilla/5.0 (...the exact User-Agent your target client
                    sends...)
                  accept_language: en-US,en;q=0.9
                  cid: ''
                  ddk: A55FBF4311ED6F1BF9911EB71931D5
                  referer: https://www.example.com/
                  tags_type: ch
                  script: ...exact tags.js source the page loaded...
                  ip: 203.0.113.10
              interstitial:
                summary: Generate an interstitial device check
                value:
                  task: datadome
                  mode: interstitial
                  session_id: 0123456789abcdef0123456789abcdef
                  device_link: >-
                    https://geo.captcha-delivery.com/interstitial/?initialCid=...&hash=...&cid=...&referer=...
                  html: >-
                    <!DOCTYPE html><html>...exact fetched interstitial
                    HTML...</html>
                  script: ...exact external challenge bundle source...
              captcha:
                summary: Generate a slider captcha check
                value:
                  task: datadome
                  mode: captcha
                  session_id: 0123456789abcdef0123456789abcdef
                  page: <!DOCTYPE html><html>...fetched captcha HTML...</html>
                  document_url: >-
                    https://geo.captcha-delivery.com/captcha/?initialCid=...&hash=...&cid=...&referer=...
                  parent_url: https://www.example.com/protected
      responses:
        '200':
          description: Requested DataDome material generated.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/TagsSolveResponse'
                  - $ref: '#/components/schemas/InterstitialSolveResponse'
                  - $ref: '#/components/schemas/CaptchaSolveResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    TagsSolveRequest:
      type: object
      required:
        - task
        - mode
        - ddk
        - referer
        - tags_type
        - script
      anyOf:
        - required:
            - session_id
        - required:
            - user_agent
            - accept_language
            - ip
      additionalProperties: false
      properties:
        task:
          type: string
          const: datadome
          description: Solver router discriminator. Must be `datadome`.
        mode:
          type: string
          const: tags
        session_id:
          type: string
          description: Opaque ID returned by an earlier solve. Omit on the first solve.
        user_agent:
          type: string
          description: Exact target User-Agent. Required when session_id is omitted.
        accept_language:
          type: string
          description: >-
            Exact target Accept-Language header. Required when session_id is
            omitted; navigator.languages is derived server-side.
        cid:
          type: string
          description: Current datadome cookie value, or an empty string on a fresh visit.
        ddk:
          type: string
          description: Site key observed in the site's genuine /js/ request.
        referer:
          type: string
          format: uri
        tags_type:
          type: string
          enum:
            - ch
            - le
        script:
          type: string
          description: >-
            Exact tags.js source the page loaded, fetched through the same
            connection. Its build defines the beacon's field order and the ddv
            version, so send the bytes unchanged.
        ip:
          type: string
          description: >-
            Public IP that will submit the beacon. On the first solve, Evade
            resolves its timezone and country through MaxMind.
        hsv:
          description: Current window._hsv value when the page defines it.
        correlation_id:
          type:
            - string
            - 'null'
          description: Page correlation callback result; omit when unpublished.
        local_storage_session:
          type: boolean
          default: false
    InterstitialSolveRequest:
      type: object
      required:
        - task
        - mode
        - device_link
        - html
      anyOf:
        - required:
            - session_id
        - required:
            - user_agent
            - accept_language
            - ip
      additionalProperties: false
      properties:
        task:
          type: string
          const: datadome
          description: Solver router discriminator. Must be `datadome`.
        mode:
          type: string
          const: interstitial
        session_id:
          type: string
          description: Opaque ID returned by the tags solve for this target session.
        user_agent:
          type: string
          description: Exact target User-Agent. Required when session_id is omitted.
        accept_language:
          type: string
          description: >-
            Exact target Accept-Language header. Required when session_id is
            omitted; navigator.languages is derived server-side.
        ip:
          type: string
          description: >-
            Public IP for the target session. Required when session_id is
            omitted; Evade resolves timezone and country through MaxMind.
        device_link:
          type: string
          format: uri
          description: >-
            Final DataDome interstitial URL fetched by the target session,
            including its query string.
        html:
          type: string
          description: Exact response body fetched from device_link.
        script:
          type: string
          description: >-
            Exact external challenge bundle source referenced by the HTML.
            Required when the page uses an external bundle and must be omitted
            when the bundle is inline. Evade derives its URL from the HTML and
            makes no target fetches.
    CaptchaSolveRequest:
      type: object
      required:
        - task
        - mode
        - session_id
        - page
        - document_url
        - parent_url
      additionalProperties: false
      properties:
        task:
          type: string
          const: datadome
          description: Solver router discriminator. Must be `datadome`.
        mode:
          type: string
          const: captcha
        session_id:
          type: string
          description: Opaque ID returned by the tags solve for this target session.
        user_agent:
          type: string
          description: Exact target User-Agent. Required when session_id is omitted.
        accept_language:
          type: string
          description: >-
            Exact target Accept-Language header. Required when session_id is
            omitted; navigator.languages is derived server-side.
        ip:
          type: string
          description: >-
            Public IP for the target session. Required when session_id is
            omitted; Evade resolves timezone and country through MaxMind.
        page:
          type: string
          description: Exact fetched captcha HTML.
        script:
          type: string
          description: >-
            Optional exact external Browserify script referenced by the captcha
            page. Fetch it through the same target session when the HTML does
            not contain the bundle inline.
        document_url:
          type: string
          format: uri
        parent_url:
          type: string
          format: uri
          description: Protected page that owns the captcha.
    TagsSolveResponse:
      type: object
      required:
        - session_id
        - payload
      properties:
        session_id:
          type: string
          description: >-
            Carry this opaque ID into every later solve for the same target
            session.
        expires_in_seconds:
          type: integer
          description: Present when this solve created the session.
        client_hints:
          $ref: '#/components/schemas/SessionClientHints'
          description: Transport projection present when this solve created the session.
        device_memory:
          type: integer
          description: Present when this solve created the session.
        payload:
          type: string
          description: >-
            Complete ordered application/x-www-form-urlencoded request body.
            Submit it unchanged.
    InterstitialSolveResponse:
      type: object
      required:
        - payload
        - headers
      properties:
        payload:
          type: string
          description: >-
            Complete ordered application/x-www-form-urlencoded request body.
            Submit it unchanged.
        headers:
          type: object
          description: >-
            Fingerprint-bound client-hint headers to use when submitting the
            payload. Safari profiles return an empty object.
          additionalProperties:
            type: string
    CaptchaSolveResponse:
      type: object
      required:
        - payload
        - headers
      properties:
        payload:
          type: string
          format: uri
          description: Complete DataDome captcha check URL to submit unchanged.
        headers:
          type: object
          description: >-
            Fingerprint-bound client-hint headers to use when submitting the
            payload. Safari profiles return an empty object.
          additionalProperties:
            type: string
    SessionClientHints:
      type: object
      required:
        - architecture
        - bitness
        - mobile
        - model
        - platform
        - platformVersion
        - uaFullVersion
        - wow64
      properties:
        architecture:
          type: string
        bitness:
          type: string
        mobile:
          type: boolean
        model:
          type: string
        platform:
          type: string
        platformVersion:
          type: string
        uaFullVersion:
          type: string
        wow64:
          type: boolean
    ErrorResponse:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          const: false
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              example: invalid_request
            message:
              type: string
  responses:
    BadRequest:
      description: The request or current-session evidence is invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: A valid bearer API key is required.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Evade API key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.