---
title: "Make an HTTP request through the browser's network stack"
method: POST
path: "/browsers/{id}/curl"
tags: ["Browsers"]
---

# Make an HTTP request through the browser's network stack

`POST /browsers/{id}/curl`

Sends an HTTP request through Chrome's HTTP request stack, inheriting
the browser's TLS fingerprint, cookies, proxy configuration, and headers.
Returns a structured JSON response with status, headers, body, and timing.

## Path parameters

- `id` string, required

## Request body

- BrowserCurlRequest — Request to make an HTTP request through the browser's network stack.
  - `url` string, required — Target URL (must be http or https).
  - `method` 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' — HTTP method.
  - `headers` object — Custom headers merged with browser defaults.
  - `body` string — Request body (for POST/PUT/PATCH).
  - `timeout_ms` integer — Request timeout in milliseconds.
  - `response_encoding` 'utf8' | 'base64' — Encoding for the response body. Use base64 for binary content.

## Response `200`

Response from target URL

- BrowserCurlResult — Structured response from the browser curl request.
  - `status` integer, required — HTTP status code from target.
  - `headers` object, required — Response headers (multi-value).
  - `body` string, required — Response body (UTF-8 string or base64 depending on request).
  - `duration_ms` integer, required — Total request duration in milliseconds.

## Other responses

- `400` — Bad Request – invalid input
- `404` — Resource not found
- `500` — Internal Server Error
- `502` — Upstream transport failure

---

[API](https://skmtc.net/kernel/apis/kernel-api.md) · [All operations](https://skmtc.net/kernel/apis/kernel-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/kernel/kernel-api/versions/9e8ce9fcf5e1/schema)
