> ## Documentation Index
> Fetch the complete documentation index at: https://wreq.sqdsh.win/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Node.js/TypeScript HTTP client with browser profile and transport controls backed by native Rust bindings.

# wreq-js

Node.js/TypeScript HTTP client with browser profile and transport controls exposed by native Rust bindings.

<CardGroup cols={2}>
  <Card title="Native Bindings" icon="bolt">
    No browser process management. Requests run through native Rust bindings.
  </Card>

  <Card title="Browser Profiles" icon="fingerprint">
    Browser and operating system profiles exposed through a fetch-like API.
  </Card>

  <Card title="Fetch Style API" icon="code">
    A fetch-style API with extra options for browser profiles and sessions.
  </Card>

  <Card title="WebSocket Support" icon="plug">
    WebSocket API with helper and constructor styles.
  </Card>
</CardGroup>

## Why wreq-js?

Standard HTTP clients like `axios`, `fetch`, `got`, and `curl` can differ from browsers on the network layer. Signals often inspected by servers can include:

1. **TLS handshake** details such as cipher suite order and extension sets
2. **HTTP behavior** details such as protocol settings and framing choices
3. **Header defaults** such as ordering and platform-specific values

Some anti-bot systems inspect these signals.

`wreq-js` uses the [`wreq`](https://github.com/0x676e67/wreq) Rust engine underneath and exposes profile controls through a TypeScript friendly API.

## When to use wreq-js

<AccordionGroup>
  <Accordion title="✅ Great for" icon="check">
    1. Web scraping and data collection
    2. API automation with browser profile controls
    3. Multiple HTTP requests with shared session or transport settings
    4. Login flows and session management
    5. Proxy usage scenarios with per request or transport scoped settings
  </Accordion>

  <Accordion title="❌ Not for" icon="xmark">
    1. DOM or JavaScript execution (not a browser runtime)
    2. CAPTCHA solving or page automation
    3. Full browser automation (use Playwright/Puppeteer instead)
  </Accordion>
</AccordionGroup>

## Quick Example

<Note>
  If your script makes more than one request, start with a **session** and reuse it.
  Sessions reuse the same session context across requests, which is the recommended shape for multi-step flows.
</Note>

```typescript theme={null}
import { fetch } from 'wreq-js';

const response = await fetch('https://example.com/api', {
  browser: 'chrome_142',
  os: 'windows',
});

console.log(await response.json());
```

That's it. You can select browser profiles with a familiar fetch-style API.

For a detailed compatibility breakdown, see [/concepts/compatibility-matrix](/concepts/compatibility-matrix).

## Next Steps

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Start with a minimal request and session flow.
  </Card>

  <Card title="Installation" icon="download" href="/installation">
    Detailed installation instructions for all platforms.
  </Card>
</CardGroup>
