The API is included in the plan. The account owner creates keys in the developer settings. For a test account, email hello@storebay.co.uk.

Developers
Crm

Create a deal

Creates an open deal. With no `pipeline_id` it goes on the operator's pipeline, and with no `stage_id` at that pipeline's first stage. `next_follow_up_on` (and `next_follow_up_window`) books the first call to the customer.

POST
/deals

Creates an open deal. With no pipeline_id it goes on the operator's pipeline, and with no stage_id at that pipeline's first stage. next_follow_up_on (and next_follow_up_window) books the first call to the customer.

Authorization

AuthorizationBearer <token>

Present an API key (sb_live_… / sb_test_…), an OAuth2 access token, or a static token as a Bearer credential. The operator is implied by the credential; it is never in the path. Only a SHA-256 hash of an API key is stored server-side.

In: header

Header Parameters

Idempotency-Key?string

A unique key that makes this mutation safe to retry. Repeats replay the stored response; reuse with a different body returns 409 idempotency_conflict.

Lengthlength <= 255

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/deals" \  -H "Content-Type: application/json" \  -d '{    "title": "string"  }'
{  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "object": "deal",    "pipeline_id": "ec036e81-7903-4e4d-bbfa-ac8516341cf0",    "stage_id": "f38d2b9c-0a0a-4eea-91a8-e974413bb670",    "contact_id": "f245e2a3-e141-4d41-912c-b1c1f5bd5598",    "site_id": "72771e6a-6f5e-4de4-a5b9-1266c4197811",    "title": "string",    "status": "open",    "value_minor": 0,    "currency": "str",    "lost_reason_id": "c2b16f4b-f514-475b-8f60-16dd1fedb8be",    "owner_user_id": "65139110-7c3c-4777-b692-80c218be3b9d",    "expected_close_date": "2019-08-24",    "won_at": "2019-08-24T14:15:22Z",    "lost_at": "2019-08-24T14:15:22Z",    "lead_source": "string",    "lead_page_path": "string",    "created_at": "2019-08-24T14:15:22Z",    "updated_at": "2019-08-24T14:15:22Z",    "channel": "web",    "unit_type_id": "09feeea8-7692-422e-90f1-4a851084cb1a",    "need_by_date": "2019-08-24",    "agreement_id": "67dd069b-637c-4b8e-8d92-17a313d06fb8",    "quoted_at": "2019-08-24T14:15:22Z",    "reserved_at": "2019-08-24T14:15:22Z",    "last_activity_at": "2019-08-24T14:15:22Z",    "next_follow_up_on": "2019-08-24",    "next_follow_up_window": "morning",    "reservation_id": "b947feb5-3593-40ee-8244-4428da3fe32d"  }}
{  "error": {    "code": "unauthorized",    "message": "Missing or invalid credential."  }}
{  "error": {    "code": "insufficient_scope",    "message": "The credential lacks a scope required by this endpoint."  }}
{  "error": {    "code": "validation_error",    "message": "One or more fields are invalid.",    "details": [      {        "field": "email",        "issue": "must be a valid email address"      }    ]  }}
{  "error": {    "code": "rate_limited",    "message": "Rate limit exceeded. Retry after 7s."  }}
{  "error": {    "code": "validation_error",    "message": "string",    "details": [      {        "field": "string",        "issue": "string"      }    ]  }}