Skip to main content
POST
/
request
curl --request POST \
  --url https://unblocker.bringits.com/request \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "method": "GET",
  "url": "https://tlsinfo.me/json"
}
'
{
  "status": 200,
  "headers": {},
  "body": "<string>",
  "error": null
}
The POST /request endpoint sends HTTP or browser-rendered requests through Link Unblocker. You specify the target 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: true for 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 /request
Base 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 full Authorization header or duplicate the token in a Headers box.
HeaderSent asRequiredNotes
Content-Typeapplication/jsonYesRequest body must be JSON.
AuthorizationBearer <access_token>YesProduction gateway validates the JWT and injects x-tenant-id from the tenantId claim. You do not set x-tenant-id yourself.

Response headers

HeaderWhenDescription
x-request-idEvery responseUUID for tracing and support.
X-RateLimit-LimitHTTP 429Your plan’s monthly request cap.
X-RateLimit-RemainingHTTP 429Always 0 when quota is exceeded.
X-RateLimit-UsedHTTP 429Requests used this billing month.
Retry-AfterHTTP 429Seconds until quota resets (UTC start of next month).

Request body parameters

ParameterTypeDescriptionRequired
methodstringHTTP method for the target: GET, POST, PUT, DELETE, PATCH, HEAD, or OPTIONS. Ignored when browser is true.Yes
urlstringTarget URL (must be a valid URL with a host).Yes
headersobjectOptional headers sent to the target (HTTP path only). Keys are header names; values are strings.No
bodystringOptional raw body for the target (HTTP path only). For JSON, stringify the payload.No
countriesstring[]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
browserbooleanDefault false. When true, loads the page in a headless browser and returns HTML in the response body.No

How the request is handled

  1. 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).
  2. 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.
  3. Deliverybrowser: false uses an HTTP client with browser-like TLS/fingerprinting through the proxy (or direct). browser: true calls the browser rendering service and returns page HTML.

Response format

All POST /request responses use Content-Type: application/json and the same envelope shape:
{
  "status": 200,
  "headers": { "content-type": "application/json" },
  "body": "{ ... target body as string ... }",
  "error": null
}
FieldSuccessError
statusTarget HTTP status (integer), or 200 for browser HTMLnull
headersTarget response headers (object){}
bodyTarget body as a string (HTML when browser: true)null
errornullMachine-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 from status 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 with error set and status / body null.

HTTP 400

errorMeaning
MISSING_TENANT_IDNo valid x-tenant-id (invalid/missing JWT in production).
INVALID_JSONBody is not valid JSON.
INVALID_REQUEST_BODYJSON parsed but does not match the request schema.
INVALID_URLurl is missing a host or is not parseable.

HTTP 429 — quota exceeded

{
  "status": null,
  "headers": {},
  "body": null,
  "error": "QUOTA_EXCEEDED",
  "used": 10000,
  "limit": 10000,
  "reset_at": "2026-07-01T00:00:00+00:00"
}
Check X-RateLimit-* and Retry-After headers. Enterprise tenants are not subject to monthly request quotas.

HTTP 503 — unblocker pipeline failure

errorMeaning
CLIENT_CREATION_FAILEDCould not create the fingerprint HTTP client.
UPSTREAM_REQUEST_FAILEDCould not send the request to the target (includes unsupported method).
UPSTREAM_READ_FAILEDTarget responded but the body could not be read.
BROWSER_UPSTREAM_UNAVAILABLEBrowser service unreachable or disabled.
BROWSER_BUSYBrowser pool busy (upstream 409).
BROWSER_EMPTY_RESPONSEBrowser returned empty HTML.

HTTP 502

errorMeaning
BROWSER_UPSTREAM_FAILEDBrowser service error or unreadable response body.

Usage examples

cURL: GET (minimal)

curl -si https://unblocker.bringits.com/request \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
  -d '{"method":"GET","url":"https://tlsinfo.me/json"}'
Replace <YOUR_ACCESS_TOKEN> with a valid tenant JWT.

GET with custom headers

{
  "method": "GET",
  "url": "https://api.example.com/data",
  "headers": {
    "Accept": "application/json",
    "X-Request-ID": "my-id"
  }
}

POST with body

{
  "method": "POST",
  "url": "https://api.example.com/items",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": "{\"name\":\"item1\",\"quantity\":2}"
}

Geo proxy preference

{
  "method": "GET",
  "url": "https://api.example.com/data",
  "countries": ["US", "GB"]
}

Browser-rendered HTML (with geo)

Use browser: true for JavaScript-rendered pages. Optional countries selects egress (here, Brazil):
curl -X POST "https://unblocker.bringits.com/request" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
  --data-raw '{
    "browser": true,
    "method": "GET",
    "url": "https://example.com/dynamic-page",
    "countries": ["BR"]
  }'
Replace <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 url values when possible.
  • Check both layers: outer HTTP status (200 vs 4xx/5xx from unblocker) and body.status (target outcome).
  • Handle 429: respect Retry-After and surface used / limit / reset_at to users.
  • Log x-request-id when opening support tickets.

Try it

Use the interactive Try it panel below to send a real request.

Before you start

  1. Get a token – Tenant access token (JWT) from Bringits auth or your identity provider.
  2. Authenticate – Enter the token in Authorize (Bearer is applied automatically).
  3. Edit the body – Default: {"method":"GET","url":"https://tlsinfo.me/json"}. Try countries or browser as needed.
  4. Send – Inspect the JSON envelope; on success, error is null and target data is under status, headers, and body.
Security: Do not share your token or commit it to code. Use the Authorize dialog only in your browser; the token is not stored in the documentation.

Base URL

Requests use https://unblocker.bringits.com (shown in the Try it panel as the server URL).

Authorizations

Authorization
string
header
required

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

application/json
method
enum<string>
default:GET
required

HTTP method the unblocker uses when calling the target url (ignored when browser is true; browser mode always fetches the page as a navigation).

Available options:
GET,
POST,
PUT,
DELETE,
PATCH,
HEAD,
OPTIONS
Example:

"GET"

url
string<uri>
required

Target URL to request.

Example:

"https://tlsinfo.me/json"

headers
object

Optional headers sent to the target URL (HTTP path only).

body
string | null

Optional raw request body for the target (HTTP path only). For JSON payloads, stringify the JSON.

countries
string[]

Optional ISO country codes used to select an egress proxy via Link API. If no proxy matches, the request still proceeds using direct egress.

browser
boolean
default:false

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.

status
integer | null
required

HTTP status code from the target URL (or 200 for browser HTML success).

Example:

200

headers
object
required

Response headers from the target (may be empty for browser mode).

body
string | null
required

Response body from the target (HTML string when browser is true).

error
string | null
required

Null on success.

Example:

null