BluetickedDeveloper docs

Readiness

1 endpoint, each with examples that open in the console prefilled.

All resources
GET/api/v1/readinessworkspace:readTry in console

Check send readiness

Find out whether this workspace can actually send yet, and what is standing in the way, as branchable data rather than a failed send.

  • Channels belong to a business, so readiness is answered per business. Pass ?business_id= to ask about one of your customers; a key already narrowed to a business answers for that business automatically. scope.business_id in the response says which. If it is null, the answer covers the whole organization and is not about any single customer.
  • Most integrations stall on provisioning, not code: a WhatsApp Business Account has to be connected and a wallet funded, and both need a human at the customer's business. This endpoint turns that from a support question into something your code can read.
  • There are two answers because the send gate has two floors. can_send is for a TRANSACTIONAL send (what you get when you do not set message_type) and can_send_marketing is for a marketing one, which is stricter: an empty wallet still lets transactional messages out on a small grace allowance while marketing is refused at zero. Read the field that matches the send you are about to make. WhatsApp is never wallet-blocked either way; it bills direct between the business and Meta.
  • Every blocker carries a stable code, the channels it blocks, the message types it blocks on those channels (blocks_message_types), and how it is resolved. resolve: dashboard means a person must act: surface it to your user rather than retrying. meta_review means wait and poll.
  • A blu_test_ key always reports ready with an empty blockers list: the sandbox simulates every provider, bills nothing, and needs no connected channel. What a live key would still be waiting on is returned as pending_for_live, so you can show your customer their remaining setup while you build.
  • Read-only and cheap, with no provider calls. Safe to poll while waiting on a human step.
curl -X GET "https://app.blueticked.com/api/v1/readiness" \
  -H "Authorization: Bearer $BLUETICKED_API_KEY"
Response
{
  "environment": "live",
  "ready": true,
  "can_send": {
    "whatsapp": false,
    "sms": true,
    "email": true
  },
  "can_send_marketing": {
    "whatsapp": false,
    "sms": false,
    "email": false
  },
  "blockers": [
    {
      "code": "no_whatsapp_channel",
      "message": "No WhatsApp channel is connected for this business, so WhatsApp sends will be refused. A person with dashboard access has to connect it once.",
      "blocks": [
        "whatsapp"
      ],
      "blocks_message_types": [
        "transactional",
        "marketing"
      ],
      "resolve": "dashboard",
      "url": "https://app.blueticked.com/whatsapp/setup"
    },
    {
      "code": "wallet_empty",
      "message": "The prepaid wallet has no balance, so billable sends will be refused with insufficient_balance. Transactional messages still send on 2000 cents of grace; marketing is refused now. Top up in Billing. WhatsApp bills direct with Meta and is unaffected, and sandbox sends with a blu_test_ key are never billed.",
      "blocks": [
        "sms",
        "email"
      ],
      "blocks_message_types": [
        "marketing"
      ],
      "resolve": "dashboard",
      "url": "https://app.blueticked.com/billing"
    }
  ],
  "wallet": {
    "balance_zar_cents": 0,
    "enforced": true
  },
  "channels": {
    "connected": [
      "email",
      "sms"
    ]
  },
  "scope": {
    "business_id": "22222222-2222-4222-9222-222222222222",
    "business_ids": [
      "22222222-2222-4222-9222-222222222222"
    ]
  },
  "request_id": "req_b2e3d610e10f1b07468721ee98f0e1d2"
}