API

Create prospects and gift orders from an agent or script. CloseAndKeep returns a Stripe Checkout URL a human completes payment. Card numbers never touch your key or our API.

How it works

  1. Sign in and create a key under API keys in the dashboard.
  2. Call the API with Authorization: Bearer cak_…. Keys cannot call admin routes; create/order endpoints are rate-limited.
  3. Create a prospect, then a gift order. Open the returned Checkout URL to pay.
  4. After payment succeeds the order becomes queued for fulfillment (manual today; bakery API can plug in later without changing this flow).

Base URL

API host: https://api.closeandkeep.com

Public site: https://closeandkeep.com. Gift ids: cookies-4, cookies-12 (confirm live prices with GET /gifts).

Create a prospect

curl -s -X POST "https://api.closeandkeep.com/prospects" \
  -H "Authorization: Bearer cak_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Dana Buyer",
    "email": "dana@acme.example",
    "deal_status": "open"
  }'

Create an order + Checkout URL

curl -s -X POST "https://api.closeandkeep.com/gift-orders" \
  -H "Authorization: Bearer cak_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prospect_id": 123,
    "gift_id": "cookies-4",
    "recipient_name": "Dana Buyer",
    "shipping_company": "Acme Corp",
    "shipping_street": "123 Main St",
    "shipping_city": "Springfield",
    "shipping_state": "IL",
    "shipping_postal_code": "62704",
    "note": "Thanks for the great meeting!"
  }'

Send street, city, state, and ZIP as separate fields. Optional shipping_company helps building / office deliveries. You can still send a singleshipping_address string if your system only has a combined address. Omit both and set request_recipient_address: true to email the recipient for shipping.

Response includes checkout_url. Open it in a browser to pay. If Pay monthly is on in Profile, checkout_url is null and the order is billed at month end. Poll GET /gift-orders/{id} for payment_status and status.

What this API does not do

  • It does not accept card numbers. Per-order payment is Stripe Checkout. Monthly billing (Profile, after an API key or CRM connect) charges a saved card at month end.
  • It does not charge a saved card on the create-order call itself.
  • It does not call the bakery yet paid orders queue for fulfillment so a vendor API can be added without changing how partners create orders.