---
title: "Call a connected app's API directly"
method: POST
path: "/connections/{id}/proxy"
tags: ["Connections"]
---

# Call a connected app's API directly

`POST /connections/{id}/proxy`

## Request

- Base URL: `https://api.crevio.co/v1`
- URL: `https://api.crevio.co/v1/connections/{id}/proxy`
- Auth: API key in header `Authorization`

Make an authenticated HTTP request to a connected app's own API, for endpoints no tool covers. Credentials are injected server-side and never exposed - do not send an Authorization header. The app's own status code is returned in the body (`status`), so a 404 there is the app's answer, not a failure of this call. Governed by the same approval policy as /execute: reads run now (200), writes freeze a pending approval (202). Only app connections proxy; MCP servers (use /execute) and social/ads connections (use their native /v1 endpoints) are refused with 409.

## Path parameters

- `id` string, required

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `endpoint` string, required: Path relative to the app's API base URL (e.g. /gmail/v1/users/me/messages), or an absolute URL on the app's own domain.
  - `method` 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'
  - `body` union: Request body, sent verbatim. Ignored for GET.
    - object
    - string
  - `headers` object: Extra headers forwarded to the app. Authorization and other transport headers are ignored.

## Response `200`

The app's response, verbatim

- ConnectionProxyResponse
  - `object` 'connection_proxy_response', required
  - `connection` string, required: The connection public id
  - `endpoint` string, nullable
  - `status` integer, required: The status code the app returned
  - `truncated` boolean: The response body exceeded the size cap and was cut
  - `body` union: The app's response body
    - object
    - string
    - number
    - boolean

## Other responses

- `202`: Approval required - the request was frozen pending a human decision
- `400`: Bad request
- `401`: Authentication required
- `403`: Forbidden
- `404`: Resource not found
- `409`: Conflict
- `422`: Validation error
- `429`: Rate limit exceeded — 600 requests per minute per credential. Retry after the number of seconds in `Retry-After`.
- `500`: Internal server error
- `502`: Upstream (provider) failure
- `503`: Feature not configured for this workspace

---

[API](https://skmtc.dev/crevio/apis/crevio-api-v1.md) · [All operations](https://skmtc.dev/crevio/apis/crevio-api-v1/llms.txt) · [OpenAPI document](https://skmtc.dev/crevio/apis/crevio-api-v1/revisions/2219f18ad651?raw)
