Deals

Deals

List, create, update and move deals in the pipeline. Scope: deals.read / deals.write.

List deals

GET /v1/deals
deals.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Query
Name Type Description
page integer Page number (from 1, default 1)
per_page integer Items per page (default 25, max 200)
client_id string
status string Free filter; recommended open|won|lost
pipeline_id string Filter by pipeline_id (UUID)
phase_id string Filter by phase_id (UUID)
legacy_pipeline_id integer Legacy integer filter; removed in v2.
legacy_phase_id integer Legacy integer filter; removed in v2.
Request body

None

Response
data array
id string
title string
amount number
status string

Strict on `POST /v1/deals/{id}/move`. On create/update the API does not reject other strings; UI/domain uses these three (recommended).

Enum
open won lost
Example: open
priority string

Free string in API (default `medium` when empty). UI/domain uses low|medium|high (recommended).

Enum
low medium high
Example: medium
pipeline_id string
phase_id string
client_id string
expected_close_date string
created_at string
meta object
page integer
per_page integer
total integer
pages integer

Examples

GET /v1/deals
curl -X GET "https://api.appficient.nl/v1/deals" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node and response are shown to the right of this endpoint.

Create a deal

POST /v1/deals
deals.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Headers
Name Type Description
Idempotency-Key string Optional on POST only; cached 24h; replay returns X-Idempotent-Replay
Request body
title string Required
client_id string Required
pipeline_id string

Preferred over legacy pipeline_id

phase_id string

Preferred over legacy phase_id

legacy_pipeline_id integer

Legacy integer input only; removed in v2.

legacy_phase_id integer

Legacy integer input only; removed in v2.

amount number
description string
priority string

Free string in API (default `medium` when empty). UI/domain uses low|medium|high (recommended).

Enum
low medium high
Example: medium
status string

Strict on `POST /v1/deals/{id}/move`. On create/update the API does not reject other strings; UI/domain uses these three (recommended).

Enum
open won lost
Example: open
expected_close_date string
Response
data object

ID-only (UUID) FKs.

id string
title string
amount number
status string

Strict on `POST /v1/deals/{id}/move`. On create/update the API does not reject other strings; UI/domain uses these three (recommended).

Enum
open won lost
Example: open
priority string

Free string in API (default `medium` when empty). UI/domain uses low|medium|high (recommended).

Enum
low medium high
Example: medium
pipeline_id string
phase_id string
client_id string
expected_close_date string
created_at string
meta object

Examples

POST /v1/deals
curl -X POST "https://api.appficient.nl/v1/deals" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "string",
    "client_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "pipeline_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "phase_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "legacy_pipeline_id": 0,
    "legacy_phase_id": 0,
    "amount": 0,
    "description": "string",
    "priority": "medium",
    "status": "open",
    "expected_close_date": "2026-07-01"
}'

Curl, Node and response are shown to the right of this endpoint.

Retrieve a deal

GET /v1/deals/{id}
deals.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Name Type Description
id Required string Resource id (UUID, lowercase)
Request body

None

Response
data object

ID-only (UUID) FKs.

id string
title string
amount number
status string

Strict on `POST /v1/deals/{id}/move`. On create/update the API does not reject other strings; UI/domain uses these three (recommended).

Enum
open won lost
Example: open
priority string

Free string in API (default `medium` when empty). UI/domain uses low|medium|high (recommended).

Enum
low medium high
Example: medium
pipeline_id string
phase_id string
client_id string
expected_close_date string
created_at string
meta object

Examples

GET /v1/deals/{id}
curl -X GET "https://api.appficient.nl/v1/deals/{id}" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node and response are shown to the right of this endpoint.

Update a deal

PATCH /v1/deals/{id}
deals.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Name Type Description
id Required string Resource id (UUID, lowercase)
Request body
title string
client_id string
pipeline_id string
phase_id string
legacy_pipeline_id integer

Legacy integer input only; removed in v2.

legacy_phase_id integer

Legacy integer input only; removed in v2.

amount number
description string
priority string

Free string in API (default `medium` when empty). UI/domain uses low|medium|high (recommended).

Enum
low medium high
Example: medium
status string

Strict on `POST /v1/deals/{id}/move`. On create/update the API does not reject other strings; UI/domain uses these three (recommended).

Enum
open won lost
Example: open
expected_close_date string
Response
data object

ID-only (UUID) FKs.

id string
title string
amount number
status string

Strict on `POST /v1/deals/{id}/move`. On create/update the API does not reject other strings; UI/domain uses these three (recommended).

Enum
open won lost
Example: open
priority string

Free string in API (default `medium` when empty). UI/domain uses low|medium|high (recommended).

Enum
low medium high
Example: medium
pipeline_id string
phase_id string
client_id string
expected_close_date string
created_at string
meta object

Examples

PATCH /v1/deals/{id}
curl -X PATCH "https://api.appficient.nl/v1/deals/{id}" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "string",
    "client_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "pipeline_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "phase_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "legacy_pipeline_id": 0,
    "legacy_phase_id": 0,
    "amount": 0,
    "description": "string",
    "priority": "medium",
    "status": "open",
    "expected_close_date": "2026-07-01"
}'

Curl, Node and response are shown to the right of this endpoint.

Delete a deal

DELETE /v1/deals/{id}
deals.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Name Type Description
id Required string Resource id (UUID, lowercase)
Request body

None

Response
data object

ID-only (UUID) FKs.

id string
title string
amount number
status string

Strict on `POST /v1/deals/{id}/move`. On create/update the API does not reject other strings; UI/domain uses these three (recommended).

Enum
open won lost
Example: open
priority string

Free string in API (default `medium` when empty). UI/domain uses low|medium|high (recommended).

Enum
low medium high
Example: medium
pipeline_id string
phase_id string
client_id string
expected_close_date string
created_at string
meta object

Examples

DELETE /v1/deals/{id}
curl -X DELETE "https://api.appficient.nl/v1/deals/{id}" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node and response are shown to the right of this endpoint.

Move a deal to another phase

POST /v1/deals/{id}/move
deals.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Name Type Description
id Required string Resource id (UUID, lowercase)
Headers
Name Type Description
Idempotency-Key string Optional on POST only; cached 24h; replay returns X-Idempotent-Replay
Request body
phase_id string
legacy_phase_id integer

Legacy integer input only; removed in v2.

status string

Strict on `POST /v1/deals/{id}/move`. On create/update the API does not reject other strings; UI/domain uses these three (recommended).

Enum
open won lost
Example: open
Response
data object

ID-only (UUID) FKs.

id string
title string
amount number
status string

Strict on `POST /v1/deals/{id}/move`. On create/update the API does not reject other strings; UI/domain uses these three (recommended).

Enum
open won lost
Example: open
priority string

Free string in API (default `medium` when empty). UI/domain uses low|medium|high (recommended).

Enum
low medium high
Example: medium
pipeline_id string
phase_id string
client_id string
expected_close_date string
created_at string
meta object

Examples

POST /v1/deals/{id}/move
curl -X POST "https://api.appficient.nl/v1/deals/{id}/move" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "phase_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "legacy_phase_id": 0,
    "status": "open"
}'

Curl, Node and response are shown to the right of this endpoint.

Mark a deal as won

POST /v1/deals/{id}/win
deals.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Name Type Description
id Required string Resource id (UUID, lowercase)
Request body

None

Response
data object

ID-only (UUID) FKs.

id string
title string
amount number
status string

Strict on `POST /v1/deals/{id}/move`. On create/update the API does not reject other strings; UI/domain uses these three (recommended).

Enum
open won lost
Example: open
priority string

Free string in API (default `medium` when empty). UI/domain uses low|medium|high (recommended).

Enum
low medium high
Example: medium
pipeline_id string
phase_id string
client_id string
expected_close_date string
created_at string
meta object

Examples

POST /v1/deals/{id}/win
curl -X POST "https://api.appficient.nl/v1/deals/{id}/win" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node and response are shown to the right of this endpoint.

Mark a deal as lost

POST /v1/deals/{id}/lose
deals.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Name Type Description
id Required string Resource id (UUID, lowercase)
Request body

None

Response
data object

ID-only (UUID) FKs.

id string
title string
amount number
status string

Strict on `POST /v1/deals/{id}/move`. On create/update the API does not reject other strings; UI/domain uses these three (recommended).

Enum
open won lost
Example: open
priority string

Free string in API (default `medium` when empty). UI/domain uses low|medium|high (recommended).

Enum
low medium high
Example: medium
pipeline_id string
phase_id string
client_id string
expected_close_date string
created_at string
meta object

Examples

POST /v1/deals/{id}/lose
curl -X POST "https://api.appficient.nl/v1/deals/{id}/lose" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node and response are shown to the right of this endpoint.

List deal sources

GET /v1/deal-sources
deals.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Request body

None

Response
data array
name string
order integer
meta object

Examples

GET /v1/deal-sources
curl -X GET "https://api.appficient.nl/v1/deal-sources" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node and response are shown to the right of this endpoint.

List pipeline phases

GET /v1/phases
deals.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Query
Name Type Description
pipeline_id string Filter phases by pipeline id
Request body

None

Response
data array
id string
pipeline_id string
name string
order integer
meta object

Examples

GET /v1/phases
curl -X GET "https://api.appficient.nl/v1/phases" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node and response are shown to the right of this endpoint.

List pipelines

GET /v1/pipelines
deals.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Request body

None

Response
data array
id string
name string
active boolean
phases array
id string
name string
order integer
meta object

Examples

GET /v1/pipelines
curl -X GET "https://api.appficient.nl/v1/pipelines" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node and response are shown to the right of this endpoint.