Skip to content
Open app

List deals

GET
/v1/deals

Cursor-paginated pipeline deals. Pass after=<id> for the next page. Requires scope deals:read.

after
integer
limit
integer
default: 25 >= 1 <= 100
stage
string
Allowed values: lead qualified proposal negotiation won lost
contactId
integer
q
string

Substring search on title.

Paginated deal list.

object
items
Array<object>

A sales pipeline deal. tasks is populated on GET by id, omitted in list responses.

object
id
integer
title
string
contactId
integer
nullable
contactName
string
nullable
value
number
currency
string
stage
string
Allowed values: Lead Qualified Proposal Negotiation Won Lost
probability

0-100.

integer
expectedCloseAt
string format: date-time
nullable
closedAt
string format: date-time
nullable
notes
string
nullable
openTaskCount
integer
createdAt
string format: date-time
updatedAt
string format: date-time
nullable
tasks
Array<object>
nullable
object
id
integer
title
string
status
string
Allowed values: Open InProgress Done
priority
string
Allowed values: Low Medium High
dueAt
string format: date-time
nullable
isOverdue
boolean
nextCursor
integer
nullable
hasMore
boolean

Missing or invalid bearer token.

Standard error envelope for all v1 error responses.

object
error

Machine-readable error code.

string
Allowed values: bad_request not_found conflict unauthorized forbidden rate_limited internal_error
message

Human-readable explanation of the error.

string
details

Optional structured context (field-level validation errors, etc.).

nullable
Example
{
"error": "unauthorized",
"message": "Invalid bearer principal"
}

The API key does not have the required scope for this operation.

Standard error envelope for all v1 error responses.

object
error

Machine-readable error code.

string
Allowed values: bad_request not_found conflict unauthorized forbidden rate_limited internal_error
message

Human-readable explanation of the error.

string
details

Optional structured context (field-level validation errors, etc.).

nullable
Example
{
"error": "forbidden",
"message": "scope contacts:write is required"
}

Per-key rate limit exceeded. Retry after the time indicated by X-RateLimit-Reset.

Standard error envelope for all v1 error responses.

object
error

Machine-readable error code.

string
Allowed values: bad_request not_found conflict unauthorized forbidden rate_limited internal_error
message

Human-readable explanation of the error.

string
details

Optional structured context (field-level validation errors, etc.).

nullable
Example
{
"error": "rate_limited",
"message": "rate limit exceeded"
}
X-RateLimit-Limit
integer

Maximum requests allowed per minute for this key.

X-RateLimit-Remaining
integer

Requests remaining in the current window.

X-RateLimit-Reset
integer

Unix timestamp (seconds) when the rate limit window resets.