Skip to main content
POST
Close Case
Close a case you no longer need help with. The case moves to closed and the thread gets a Case closed line. Closing is idempotent. Closing a case that’s already closed returns it unchanged and sends no webhook. A case that doesn’t exist or belongs to another team returns 404 with code: "not_found". A closed case isn’t final. Replying on it with Post Case Message inside the order’s case window reopens it, and that’s the way to follow up rather than opening a new case.

Authorizations

Authorization
string
header
required

Zinc API key (Bearer zn_...)

Headers

authorization
string | null

Path Parameters

case_id
string<uuid>
required

Response

Successful Response

id
string<uuid>
required
order_id
string<uuid>
required
reason
enum<string>
required

What a support case is about. Routing and reporting only — no reason triggers automation.

Available options:
not_received,
missing_item,
late,
damaged_or_wrong_item,
cancellation,
address_change,
return,
billing,
other
status
enum<string>
required

open — waiting on Zinc. waiting_on_customer — Zinc replied and is waiting on you. on_hold — waiting on the retailer or carrier. closed — resolved; replying reopens it within the case window.

Available options:
open,
waiting_on_customer,
on_hold,
closed
created_at
string<date-time>
required
updated_at
string<date-time>
required
return_request_id
string<uuid> | null
credited_amount
integer
default:0

Total wallet credit issued from this case, in cents (net of reversals).

opened_by_name
string | null

Who opened the case: a teammate's name, or Zinc support when Zinc reached out. (The case.created webhook's opened_by is the side instead: customer or zinc.)

closed_at
string<date-time> | null
messages
CaseMessageResponse · object[]