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

# Overview

> Explore the APIs available for building with Polymarket Perps.

## APIs

The Perps API is available over HTTP and WebSocket, with public market data and
authenticated trading and account operations on both.

<CardGroup cols={2}>
  <Card title="HTTP API" icon="globe">
    <code className="text-xs">[https://api.perpetuals.polymarket.com](https://api.perpetuals.polymarket.com)</code>

    Make request-response calls for market data, trading, and account
    management.
  </Card>

  <Card title="WebSocket API" icon="radio">
    <code className="text-xs">wss\://ws.perpetuals.polymarket.com/v1/ws</code>

    Stream public and private updates, or send trading actions over a persistent
    connection.
  </Card>
</CardGroup>

## Before You Integrate

<CardGroup cols={3}>
  <Card title="Authentication" icon="key" href="/perps/authenticated-sessions">
    Set up credentials for private HTTP and WebSocket access.
  </Card>

  <Card title="Rate Limits" icon="gauge" href="/api-reference/perps/rate-limits">
    Review request, trading action, and WebSocket limits.
  </Card>

  <Card title="Geographic Restrictions" icon="globe" href="/api-reference/perps/geographic-restrictions">
    Check where Perps order placement is available.
  </Card>
</CardGroup>

## Correlate Requests with Exchange Logs

Every HTTP response the exchange produces — including errors and overload
responses — carries an `x-pmp-pod` header identifying the gateway pod that
produced it. WebSocket handshake responses carry the same header, on both the
successful `101` upgrade and handshake rejections. Record it with your request
logs so your traffic can be matched against exchange logs when you work with
support.

The value is the gateway pod name, or a hexadecimal process instance ID when
the pod name is unavailable. It is correlation metadata only: pods are not
addressable, and a cached response keeps the identity of the pod that
originally produced it. Responses to malformed HTTP carry no header. Browsers
can read the header through CORS, but browser WebSocket APIs do not expose
handshake headers — authenticated WebSocket sessions instead receive the pod
identity in the successful auth acknowledgement, described in
[Authenticated Sessions](/perps/authenticated-sessions). Treat the header and
the field as optional: responses from older pods omit them during a rolling
deploy.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.