---
title: "GET /public/v1/approvals/responses"
method: GET
path: "/public/v1/approvals/responses"
tags: ["Inbox"]
---

# GET /public/v1/approvals/responses

`GET /public/v1/approvals/responses`

## Request

- Base URL: `https://api.joinvalley.co`
- URL: `https://api.joinvalley.co/public/v1/approvals/responses`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/joinvalley/apis/valley-public-api/docs/public/v1/approvals/responses/get.ts> (a function with typed inputs; its response is checked against the schema)

List AI-drafted responses to prospect replies (the "Response Ready" approvals). These are the replies Valley drafts once a prospect answers, and they are NOT returned by /public/v1/approvals/messages on any view, which covers first-touch and follow-up drafts only. Workspace admins and owners see every campaign in the workspace; members see only their own. Note that a pending draft is discarded server-side when the prospect sends a newer message, or when the account owner replies manually in LinkedIn, so an item can disappear between polls; approving an id that is already gone returns 404, and approving one that goes stale mid-request returns 409. Treat this as a live queue, not a ledger.

## Query parameters

- `view` 'pending' | 'sent'
- `limit` number
- `offset` number
- `workspaceId` string
- `campaignIds` string
- `prospectInterestLevel` string
- `search` string
- `from` string
- `to` string
- `sort` 'newest' | 'oldest'
- `ownerId` string

## Response `200`

Default Response

- object
  - `statusCode` number
  - `status` boolean
  - `message` string
  - `data` object
    - `responses` object[]
      - `id` string
      - `message` string, nullable
      - `status` string
      - `type` string
      - `created_at` string
      - `sent_at` string, nullable
      - `approved_at` string, nullable
      - `approved_by` string, nullable
      - `conversation_id` string, nullable
      - `campaign_id` string
      - `campaign_name` string
      - `campaign_type` string
      - `prospect_id` string
      - `prospect_first_name` string, nullable
      - `prospect_last_name` string, nullable
      - `prospect_linkedin_id` string, nullable
      - `prospect_title` string, nullable
      - `prospect_company` string, nullable
      - `prospect_profile_picture` string, nullable
      - `prospect_interest_level` string, nullable
      - `prospect_icp_fit` string, nullable
      - `prospect_status` string
      - `prospect_reply` object, nullable
        - `content` string
        - `created_at` string
    - `pagination` object
      - `limit` number
      - `offset` number
      - `total` number
      - `hasMore` boolean

## Other responses

- `400`: Default Response
- `401`: Default Response
- `403`: Default Response
- `429`: Default Response
- `500`: Default Response

## Changes

- **2026-10-22** `f783c1756212`: 1 warning, 1 info
  - deleted the `query` request parameter `conversationId`
  - removed the non-success response with the status `404`
- **2026-10-06** `16d733866b5a`: 2 info
  - added the new optional `query` request parameter `conversationId`
  - added the non-success response with the status `404`
- **2026-09-11** `ccd54424eeb2`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/joinvalley/apis/valley-public-api/changes/public/v1/approvals/responses/get.md)

---

[API](https://skmtc.dev/joinvalley/apis/valley-public-api.md) - [All operations](https://skmtc.dev/joinvalley/apis/valley-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/joinvalley/apis/valley-public-api/revisions/798c2eb1b512?raw)
