> 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/request-based-basics/ip.md).

# Proxies & IP

Most of our sensor APIs require your proxy's **outbound IP** as an input, because the anti-bot expects the generated payload to match the IP the target site actually sees. Fetch it from the `/ip` endpoint:

## Get IP from session

> Get IP from session

```json
{"openapi":"3.0.0","servers":[{"url":"https://ip.hypersolutions.co"}],"paths":{"/ip":{"get":{"summary":"Get IP from session","description":"Get IP from session","operationId":"getIp","parameters":[{"in":"header","name":"x-api-key","required":true,"schema":{"type":"string"},"description":"Your API key for authentication"}],"responses":{"200":{"description":"OK IP was returned","content":{"application/json":{"schema":{"type":"object","properties":{"ip":{"type":"string","description":"The IP"}}}}}}}}}}}
```

## Use sticky proxies, never rotating

The IP you send to the API **must** match the IP the target sees. Rotating proxies break this: they issue a new IP on each new connection (`CONNECT`), so you get one IP from `/ip` and the target sees another.

1. You call `/ip` and get `1.2.3.4`.
2. You generate a payload for the target using that IP.
3. Your proxy rotates when it opens the connection to the target.
4. The target sees `5.6.7.8`, but the payload was built for `1.2.3.4`, so you're blocked.

**Sticky (session) proxies** hold the same IP for the whole session, so `/ip`, the API, and the target all agree.

## How to use it

1. Configure your proxy in **sticky/session** mode.
2. Call `/ip` through that proxy to get your outbound IP.
3. Pass that IP as the `ip` input on every sensor call in the session.

See [Core Requirements](/start-here/core-requirements.md) for the other non-negotiables.
