Request
Make HTTP/HTTPS requests through the Link Unblocker service
method and url (and optional headers, body, geo, or browser mode); the service applies anti-bot handling, optional egress proxy selection, and returns a JSON envelope with the target response.
Access token: You must bring your own Bearer token (JWT) for every call and for Try it. If you do not have a token yet, go to Unblocker to request one (embedded form or email, depending on what Bringits provides for your account).
Overview
Link Unblocker POST /request supports:- HTTP methods: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
- Optional country codes to prefer a matching egress proxy
- Optional
browser: truefor JavaScript-rendered HTML - Bearer JWT authentication (gateway maps the token to your tenant)
- A consistent JSON response envelope with target status, headers, and body
- Monthly request quotas on self-serve plans (HTTP 429 when exceeded)
Endpoint
URL:POST /requestBase URL:
https://unblocker.bringits.com
Full URL: https://unblocker.bringits.com/request
Headers
In Try it, enter your JWT only in Authorize (token field). Do not paste the fullAuthorization header or duplicate the token in a Headers box.
| Header | Sent as | Required | Notes |
|---|---|---|---|
| Content-Type | application/json | Yes | Request body must be JSON. |
| Authorization | Bearer <access_token> | Yes | Production gateway validates the JWT and injects x-tenant-id from the tenantId claim. You do not set x-tenant-id yourself. |
Response headers
| Header | When | Description |
|---|---|---|
| x-request-id | Every response | UUID for tracing and support. |
| X-RateLimit-Limit | HTTP 429 | Your plan’s monthly request cap. |
| X-RateLimit-Remaining | HTTP 429 | Always 0 when quota is exceeded. |
| X-RateLimit-Used | HTTP 429 | Requests used this billing month. |
| Retry-After | HTTP 429 | Seconds until quota resets (UTC start of next month). |
Request body parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| method | string | HTTP method for the target: GET, POST, PUT, DELETE, PATCH, HEAD, or OPTIONS. Ignored when browser is true. | Yes |
| url | string | Target URL (must be a valid URL with a host). | Yes |
| headers | object | Optional headers sent to the target (HTTP path only). Keys are header names; values are strings. | No |
| body | string | Optional raw body for the target (HTTP path only). For JSON, stringify the payload. | No |
| countries | string[] | Optional ISO country codes (e.g. ["US","GB"]) used to select an egress proxy. If no proxy matches, the request still runs via direct egress. | No |
| browser | boolean | Default false. When true, loads the page in a headless browser and returns HTML in the response body. | No |
How the request is handled
- Quota — Monthly usage is checked before proxy selection. Over limit → 429 (no proxy slot used). Usage is incremented only after the target response is successfully read (not on transport or proxy-selection failures).
- Proxy — Link API selects a proxy for the URL domain and optional
countries. No match → request proceeds with direct egress; fingerprint emulation still applies on the HTTP path. - Delivery —
browser: falseuses an HTTP client with browser-like TLS/fingerprinting through the proxy (or direct).browser: truecalls the browser rendering service and returns page HTML.
Response format
All POST /request responses useContent-Type: application/json and the same envelope shape:
| Field | Success | Error |
|---|---|---|
| status | Target HTTP status (integer), or 200 for browser HTML | null |
| headers | Target response headers (object) | {} |
| body | Target body as a string (HTML when browser: true) | null |
| error | null | Machine-readable code (see Errors) |
Outer HTTP status vs target status
When the unblocker successfully delivers the request, the outer HTTP status is 200, even if the target returned 404 or 500. Read the target status fromstatus in the JSON body.
Example: target returns 404 → outer HTTP 200, body includes "status": 404 and the target body in "body".
Errors
Errors use the same envelope witherror set and status / body null.
HTTP 400
error | Meaning |
|---|---|
MISSING_TENANT_ID | No valid x-tenant-id (invalid/missing JWT in production). |
INVALID_JSON | Body is not valid JSON. |
INVALID_REQUEST_BODY | JSON parsed but does not match the request schema. |
INVALID_URL | url is missing a host or is not parseable. |
HTTP 429 — quota exceeded
X-RateLimit-* and Retry-After headers. Enterprise tenants are not subject to monthly request quotas.
HTTP 503 — unblocker pipeline failure
error | Meaning |
|---|---|
CLIENT_CREATION_FAILED | Could not create the fingerprint HTTP client. |
UPSTREAM_REQUEST_FAILED | Could not send the request to the target (includes unsupported method). |
UPSTREAM_READ_FAILED | Target responded but the body could not be read. |
BROWSER_UPSTREAM_UNAVAILABLE | Browser service unreachable or disabled. |
BROWSER_BUSY | Browser pool busy (upstream 409). |
BROWSER_EMPTY_RESPONSE | Browser returned empty HTML. |
HTTP 502
error | Meaning |
|---|---|
BROWSER_UPSTREAM_FAILED | Browser service error or unreadable response body. |
Usage examples
cURL: GET (minimal)
<YOUR_ACCESS_TOKEN> with a valid tenant JWT.
GET with custom headers
POST with body
Geo proxy preference
Browser-rendered HTML (with geo)
Usebrowser: true for JavaScript-rendered pages. Optional countries selects egress (here, Brazil):
<YOUR_ACCESS_TOKEN> with your tenant JWT and set url to the page you want rendered.
On success, body contains the rendered HTML string; headers is often {}.
Best practices
- Store the token in a secret (e.g.
%{LINK_UNBLOCKER_TOKEN}) instead of hardcoding. - Use HTTPS for target
urlvalues when possible. - Check both layers: outer HTTP status (200 vs 4xx/5xx from unblocker) and
body.status(target outcome). - Handle 429: respect
Retry-Afterand surfaceused/limit/reset_atto users. - Log
x-request-idwhen opening support tickets.
Related
- Unblocker overview – Introduction and token acquisition
- HTTP Request – HTTP from a Stream step (without Link Unblocker)
- Parse Commands – Parse JSON or other response bodies
Try it
Use the interactive Try it panel below to send a real request.Before you start
- Get a token – Tenant access token (JWT) from Bringits auth or your identity provider.
- Authenticate – Enter the token in Authorize (Bearer is applied automatically).
- Edit the body – Default:
{"method":"GET","url":"https://tlsinfo.me/json"}. Trycountriesorbrowseras needed. - Send – Inspect the JSON envelope; on success,
errorisnulland target data is understatus,headers, andbody.
Base URL
Requests usehttps://unblocker.bringits.com (shown in the Try it panel as the server URL).Authorizations
Use Authorize and enter your tenant JWT in the token field only. The gateway validates the token and injects x-tenant-id from the tenantId claim; do not set x-tenant-id manually in production.
Body
HTTP method the unblocker uses when calling the target url (ignored when browser is true; browser mode always fetches the page as a navigation).
GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS "GET"
Target URL to request.
"https://tlsinfo.me/json"
Optional headers sent to the target URL (HTTP path only).
Optional raw request body for the target (HTTP path only). For JSON payloads, stringify the JSON.
Optional ISO country codes used to select an egress proxy via Link API. If no proxy matches, the request still proceeds using direct egress.
When true, fetches the page through the headless browser service and returns rendered HTML in body.
Response
Request delivered; target response is in the JSON envelope (error is null). Outer HTTP status is 200 even when the target returned 4xx/5xx — check status in the body.
HTTP status code from the target URL (or 200 for browser HTML success).
200
Response headers from the target (may be empty for browser mode).
Response body from the target (HTML string when browser is true).
Null on success.
null