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

# Passthrough

Passthrough enables you to make authenticated HTTP requests directly to an integration's API.

Terminal simplifies API requests to any of the integrations supported by Terminal using the connection tokens you've stored on behalf of your users. The requests are transmitted directly to the API of the integration and adhere to the specific API formats of each integration, not Terminal's standardized format. This approach is useful if you want to retrieve data that Terminal may not make requests for.

<Note>
  Learn more by reviewing the documentation for
  [`/passthrough`](/api-reference/data-management/passthrough)
</Note>

<Note>
  If the provider endpoint returns a file or another non-JSON payload, use
  [`/passthrough/raw`](/api-reference/data-management/passthrough-raw) instead.
  Raw Passthrough forwards a successful provider response body directly (with
  the provider's `Content-Type`) instead of returning the `PassthroughOutput`
  JSON envelope. When the provider itself responds with an error status, Raw
  Passthrough returns HTTP `200` with the `PassthroughOutput` envelope (just
  like `/passthrough`), so provider failures are not surfaced as Terminal API
  errors.
</Note>

### Request

<Card title="Passthrough Input" icon="cube" iconType="sharp-solid" color="#ef932b">
  <br />

  <ResponseField name="method" type="string" required>
    The method for the third-party request, such as `GET` or `POST`.

    Allowed values: `GET` `POST` `PUT` `PATCH` `DELETE`
  </ResponseField>

  <ResponseField name="path" type="string" required>
    A relative provider path such as `/reports`. Absolute URLs are accepted only when they target the connection's provider host (or another host that provider explicitly allows).

    Example: `/reports`
  </ResponseField>

  <ResponseField name="headers" type="object">
    The headers to use for the request (Terminal will handle the connection's
    authorization headers)
  </ResponseField>

  <ResponseField name="body" type="string">
    The request body

    Example: `{"reportId":"1234"}`
  </ResponseField>
</Card>

### Response

<Card title="Passthrough Output" icon="cube" iconType="sharp-solid" color="#ef932b">
  <br />

  <ResponseField name="method" type="string" required>
    The HTTP method that was used when making the request.

    Example: `POST`
  </ResponseField>

  <ResponseField name="path" type="string" default="/reports" required>
    The path that was called with the passthrough request.

    Example: `GET`
  </ResponseField>

  <ResponseField name="statusCode" type="integer" required>
    The resulting status code from the passthrough request.

    Example: `200`
  </ResponseField>

  <ResponseField name="headers" type="object" required>
    Any returned headers from the passthrough request.
  </ResponseField>

  <ResponseField name="response" type="object" required>
    The response body from the passthrough request
  </ResponseField>
</Card>
