JSend error format
Failed Buzzbip API calls return a JSON body with status set to error, a message describing the problem, a numeric or string code, and a data field (often an empty array). HTTP status codes may be 400, 401, 403, 404, or 500 depending on the failure. Always read message and code — they are more specific than the HTTP status alone. Common causes include missing API access (User.hasApiAccess), expired JWT, invalid phone numbers, unapproved WhatsApp templates, and missing required body fields.
Example error response
A typical validation error when a required field is missing.
curl -X POST 'https://app.buzzbip.com/api/contacts/' \
-H 'Authorization: Bearer ${TOKEN}' \
-H 'Content-Type: application/json' \
-d '{"firstname": "Jane"}'Debugging checklist
Confirm Authorization header format (Bearer with single space). Verify trailing slashes on endpoints that require them. Check that template_id references an approved template before sending WhatsApp messages. For plugin calls, validate x-api-key, x-platform-type, and x-base-uri alongside the JWT or secret-key flow.
Log the full JSend body on errors — message text is the fastest clue.
Integration notes
When integrating the Buzzbip errors endpoint into your application, treat https://app.buzzbip.com as the only production host. Obtain a JWT from POST /api/login_check and send Authorization: Bearer <token> on every request. Confirm User.hasApiAccess is enabled in Buzzbip Admin — without it, valid tokens still receive authorization errors. Parse JSend responses by reading status, message, and data together; do not rely on HTTP status codes alone. For ecommerce plugins, also send x-api-key, x-platform-type, and x-base-uri as described in the secret-key documentation. Respect trailing slashes on routes such as POST /api/contacts/ and POST /api/whatsapp/. Implement retries with exponential backoff when you encounter rate limits, and log full error bodies during development. Store credentials server-side, rotate secrets if exposed, and re-authenticate before the 3600-second JWT TTL expires in long-running workers. Use pagination query parameters instead of unbounded list calls, and queue bulk WhatsApp or SMS sends from your backend rather than client browsers. Test against a small set of contacts before enabling production campaigns. Keep an integration runbook that lists which Buzzbip templates, automations, and API keys each deployment uses so on-call engineers can diagnose failures quickly.
Security
Security best practices for Buzzbip API clients include restricting API credentials to backend services, using TLS for every request, and monitoring failed authentication attempts. Separate staging and production Buzzbip accounts when possible so template tests do not message real customers. Document which templates and automations each integration triggers, and version your webhook or sync job deployments. When debugging, redact phone numbers and message bodies in application logs shared with third parties.
What's next?
Return to API resources: api/contacts getting-started/authentication api/secret-key
