All integrations

Inbound Webhook

The no-SDK path. POST directly to /api/webhooks/inbound from any tool - Zapier, n8n, Make, custom scripts, or any HTTP client. No SDK installation required.

Submit a request

cURL
curl -X POST https://app.cheqpoint.io/api/webhooks/inbound \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "action": "process_refund",
    "summary": "Refund £500 for order #12345",
    "details": {
      "orderId": "12345",
      "amount": 500,
      "currency": "GBP",
      "customerEmail": "user@example.com"
    },
    "riskLevel": "high",
    "webhookUrl": "https://yourapp.com/webhook/cheqpoint"
  }'

# Response:
# { "id": "req_abc123", "status": "PENDING" }
curl -X POST https://app.cheqpoint.io/api/webhooks/inbound \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "action": "process_refund",
    "summary": "Refund £500 for order #12345",
    "details": {
      "orderId": "12345",
      "amount": 500,
      "currency": "GBP",
      "customerEmail": "user@example.com"
    },
    "riskLevel": "high",
    "webhookUrl": "https://yourapp.com/webhook/cheqpoint"
  }'

# Response:
# { "id": "req_abc123", "status": "PENDING" }

Request body schema

JSON Schema
{
  "action":     string,   // required - e.g. "process_refund", "send_email"
  "summary":    string,   // required - plain English description shown to reviewers
  "details":    object,   // required - full payload (any JSON object)
  "riskLevel":  "low" | "medium" | "high",  // default: "medium"
  "priority":   "low" | "normal" | "urgent", // default: "normal"
  "webhookUrl": string,   // optional - your endpoint to receive the decision
  "agentName":  string,   // optional - overrides the API key's agent name
  "metadata":   object    // optional - arbitrary key/value pairs
}
{
  "action":     string,   // required - e.g. "process_refund", "send_email"
  "summary":    string,   // required - plain English description shown to reviewers
  "details":    object,   // required - full payload (any JSON object)
  "riskLevel":  "low" | "medium" | "high",  // default: "medium"
  "priority":   "low" | "normal" | "urgent", // default: "normal"
  "webhookUrl": string,   // optional - your endpoint to receive the decision
  "agentName":  string,   // optional - overrides the API key's agent name
  "metadata":   object    // optional - arbitrary key/value pairs
}

Webhook decision payload (sent to your webhookUrl)

JSON
{
  "id": "req_abc123",
  "status": "APPROVED",           // APPROVED | REJECTED | MODIFIED
  "action": "process_refund",
  "summary": "Refund £500 for order #12345",
  "details": { "orderId": "12345", "amount": 500 },
  "modifiedDetails": null,        // set if reviewer modified the payload
  "responseNotes": "Verified",    // reviewer's note (optional)
  "decisionReasonCode": "verified_authorised",
  "decidedAt": "2025-03-18T14:32:00.000Z"
}
{
  "id": "req_abc123",
  "status": "APPROVED",           // APPROVED | REJECTED | MODIFIED
  "action": "process_refund",
  "summary": "Refund £500 for order #12345",
  "details": { "orderId": "12345", "amount": 500 },
  "modifiedDetails": null,        // set if reviewer modified the payload
  "responseNotes": "Verified",    // reviewer's note (optional)
  "decisionReasonCode": "verified_authorised",
  "decidedAt": "2025-03-18T14:32:00.000Z"
}

Poll for the decision (if no webhookUrl)

cURL
# Poll GET /api/approvals/:id until status changes from PENDING
curl https://app.cheqpoint.io/api/approvals/req_abc123 \
  -H "x-api-key: YOUR_API_KEY"

# PENDING:
# { "id": "req_abc123", "status": "PENDING" }

# Decided:
# {
#   "id": "req_abc123",
#   "status": "APPROVED",
#   "decisionNote": "Looks good",
#   "decidedAt": "2025-03-18T14:32:00.000Z"
# }
# Poll GET /api/approvals/:id until status changes from PENDING
curl https://app.cheqpoint.io/api/approvals/req_abc123 \
  -H "x-api-key: YOUR_API_KEY"

# PENDING:
# { "id": "req_abc123", "status": "PENDING" }

# Decided:
# {
#   "id": "req_abc123",
#   "status": "APPROVED",
#   "decisionNote": "Looks good",
#   "decidedAt": "2025-03-18T14:32:00.000Z"
# }

Make (Integromat) - HTTP module config

Configuration
Module: HTTP - Make a request
URL: https://app.cheqpoint.io/api/webhooks/inbound
Method: POST
Headers:
  x-api-key: {{YOUR_API_KEY}}
  Content-Type: application/json
Body type: Raw
Content type: JSON (application/json)
Request content:
{
  "action": "{{action}}",
  "summary": "{{summary}}",
  "details": {{details}},
  "riskLevel": "high"
}
Module: HTTP - Make a request
URL: https://app.cheqpoint.io/api/webhooks/inbound
Method: POST
Headers:
  x-api-key: {{YOUR_API_KEY}}
  Content-Type: application/json
Body type: Raw
Content type: JSON (application/json)
Request content:
{
  "action": "{{action}}",
  "summary": "{{summary}}",
  "details": {{details}},
  "riskLevel": "high"
}