---
title: "Get A Merge Proposal"
method: GET
path: "/v1/convai/agents/{agent_id}/merge-proposals/{merge_proposal_id}"
tags: ["Agents Platform"]
---

# Get A Merge Proposal

`GET /v1/convai/agents/{agent_id}/merge-proposals/{merge_proposal_id}`

Get a single merge_proposal.

## Path parameters

- `agent_id` string, required — The id of an agent. This is returned on agent creation.
- `merge_proposal_id` string, required — Unique identifier for the merge_proposal.

## Headers

- `xi-api-key` string, nullable — Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.

## Response `200`

Successful Response

- AgentMergeProposalResponse
  - `id` string, required
  - `agent_id` string, required
  - `source_branch_id` string, required
  - `target_branch_id` string, required
  - `source_tip_version_id_at_creation` string, required
  - `title` string, required
  - `description` string
  - `requested_reviewer_user_ids` string[]
  - `reviews` MergeProposalReview[]
    - `user_id` string, required
    - `state` 'approved' | 'changes_requested', required
    - `submitted_at` integer, required
    - `comment` string
    - `reviewer_role` 'admin' | 'editor' | 'commenter' | 'viewer', nullable
  - `comments` MergeProposalComment[]
    - `id` string, required
    - `user_id` string, required
    - `body` string, required
    - `created_at` integer, required
  - `outcome` union
    - OpenOutcome
      - `status` 'open'
    - MergedOutcome
      - `status` 'merged'
      - `version_id` string, required
      - `at` integer, required
      - `by_user_id` string, nullable, required
    - ClosedOutcome
      - `status` 'closed'
      - `reason` 'withdrawn' | 'rejected' | 'branch_archived', required
      - `at` integer, required
      - `by_user_id` string, nullable, required
  - `created_at` integer, required
  - `updated_at` integer, required
  - `author_user_id` string, nullable — User ID of the merge_proposal's author.
  - `access_info` ResourceAccessInfo
    - `is_creator` boolean, required — Whether the user making the request is the creator of the agent
    - `creator_name` string, required — Name of the agent's creator
    - `creator_email` string, required — Email of the agent's creator
    - `role` 'admin' | 'editor' | 'commenter' | 'viewer', required — The role of the user making the request
    - `anonymous_access_level_override` 'admin' | 'editor' | 'commenter' | 'viewer', nullable — The access level for anonymous users. If None, the resource is not shared publicly.
    - `access_source` 'creator' | 'explicit' | 'workspace_admin' | 'workspace_default', nullable — Why the requesting user has access to this resource. 'creator' = caller is the owner. 'explicit' = caller (or one of their workspace groups) is listed in role_to_group_ids beyond the workspace-wide everyone group. 'workspace_default' = the workspace-wide everyone group is listed in role_to_group_ids (every non-anon workspace member, including admins, sees this resource). 'workspace_admin' = caller is a workspace admin and the admin seat is the *only* path to access; reserved for docs nobody else can see. Lets the UI disclose why an admin-bypass viewer sees a doc that wasn't explicitly shared with them.

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-30** `b3fe16f8d37a` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/changes/v1/convai/agents/:agent_id/merge-proposals/:merge_proposal_id/get.md)

---

[API](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation.md) · [All operations](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/llms.txt) · [OpenAPI document](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/revisions/b3fe16f8d37a?raw)
