> For the complete documentation index, see [llms.txt](https://docs.hypersolutions.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hypersolutions.co/datadome/getting-started.md).

# DataDome: Getting Started

DataDome serves two challenge types, interstitial and slider. This page helps you identify which one you're facing and points you to the right guide.

If you're already familiar with solving DataDome challenges, you can either install one of our [SDKs](/start-here/readme-1.md) for easy integration, or head over to our [API Reference](/api-reference/datadome.md) if you want to handle the implementation yourself. The [DataDome Bypass API](https://hypersolutions.co/products/datadome) overview covers which challenges the endpoints solve and how they are priced.

{% hint style="info" %}
As with any other antibot, make sure you use a working TLS client that mimics the latest version of Google Chrome, match the headers and header-order 1:1 with the browser, and make sure you are using an up-to-date User-Agent. See [Core Requirements](/start-here/core-requirements.md) for the full list.
{% endhint %}

### Identifying the challenge

Both challenges are served with a **403 status code** and a nearly identical HTML block page containing a `dd` object. Two fields tell them apart: the `rt` value inside the `dd` object, and the script URL at the bottom of the page.

#### Interstitial

A device-check page the API solves without a captcha.

**Identifying characteristics:**

* The `dd` object has `'rt':'i'`
* The block page references `https://ct.captcha-delivery.com/i.js` (note the `i.js`)

[Read the detailed guide →](/datadome/interstitial.md)

#### Slider (captcha)

A slider captcha where the API solves the puzzle from the challenge images.

**Identifying characteristics:**

* The `dd` object has `'rt':'c'`
* The block page references `https://ct.captcha-delivery.com/c.js` (note the `c.js`)

{% hint style="warning" %}
If the `dd` object has `t` set to `bv`, your proxy is hard blocked, solving the challenge will have no effect.
{% endhint %}

[Read the detailed guide →](/datadome/slider-captcha.md)

### Challenges returned from an API request

DataDome doesn't only block full page loads. When your code calls a JSON or XHR endpoint, DataDome may return the challenge **inline as a JSON body** instead of the 403 HTML block page:

{% code overflow="wrap" %}

```json
{ "url": "https://geo.captcha-delivery.com/interstitial/?initialCid=..." }
```

{% endcode %}

Here the `url` is a **ready-made device link**: DataDome has already built it, so there is no `dd` object to parse. Detect this case when the response body is JSON with a `url` field pointing at `captcha-delivery.com`.

Route by the URL **path**, then solve exactly as you would a block-page challenge, passing the `url` straight through as the device link:

* `.../interstitial/...` → the [interstitial](/datadome/interstitial.md) flow
* `.../captcha/...` → the [slider](/datadome/slider-captcha.md) flow

Because you already hold the device link, **skip the HTML-parsing step** (`ParseInterstitialDeviceCheckLink` / `ParseSliderDeviceCheckLink`). Fetch the device link, then call the interstitial or slider generation with that `url` as the `deviceLink`.

{% hint style="info" %}
The interstitial solve can hand off to the slider the same way. Its response looks like `{ "cookie": "...", "view": "captcha", "url": "..." }`, and when `view` is `captcha` you solve the slider using that `url`.
{% endhint %}

### Tags

Separately from the challenge flows above, DataDome expects the browser to post telemetry ("tags") that raise your session's trust score. See [Tags](/datadome/tags.md) for when and how to send these.

{% hint style="info" %}
**Further reading on our blog:** [Recording a clean DataDome capture](https://hypersolutions.co/blog/datadome-browser-sessions) explains why polluted browser captures still get blocked even when header order looks right.
{% endhint %}

### Complete Example

For a full working implementation with proper TLS client setup, header ordering, and cookie handling, see our examples repository:

{% embed url="<https://github.com/Hyper-Solutions/hypersolutions-examples>" %}
