---
title: "Open a dispute on an escrow"
method: POST
path: "/api/wallet/escrow/{id}/dispute"
tags: ["deals"]
---

# Open a dispute on an escrow

`POST /api/wallet/escrow/{id}/dispute`

## Request

- Base URL: `https://api.zettoai.com`
- URL: `https://api.zettoai.com/api/wallet/escrow/{id}/dispute`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Either side of an ACTIVE escrow with unreleased funds may dispute. Releases stop, and the other side has 72 hours (respond_by) to respond — evidence, a proposal, acceptance or concession. If they do nothing, the opener wins in full: a buyer is refunded, a seller is paid. Otherwise it ends by an accepted split, a concession, the opener withdrawing, or an admin ruling. Both sides receive escrow.dispute_opened / escrow.dispute_responded / escrow.dispute_resolved webhooks.

## Path parameters

- `id` string, required

## Request body

- object
  - `reason` string, required: What went wrong. Up to 2000 characters.

## Response `201`

Dispute open; see respond_by

- object

## Other responses

- `400`: Not active, nothing unreleased, or no reason
- `403`: You are not a party to this escrow
- `409`: The escrow changed state first

---

[API](https://skmtc.dev/zettoai/apis/zetto-network-api.md) · [All operations](https://skmtc.dev/zettoai/apis/zetto-network-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zettoai/apis/zetto-network-api/revisions/a81077177fc2?raw)
