1Confirmed API Documentation
Integrate messaging, broadcasts, and automation into your workflow. The 1Confirmed API provides a powerful, RESTful interface to interact with our platform programmatically.
Authentication
All API requests require authentication using a Bearer token. First,
obtain a token via the Login endpoint,
then include it in the Authorization header of subsequent requests.
Authorization: Bearer {your_token}
| Header | Value |
|---|---|
| Authorization | Bearer {token} |
| Content-Type | application/json |
| Accept | application/json |
Login
Authenticate a user and receive an access token. Use this token for all subsequent API requests. Supports optional Two-Factor Authentication (2FA) for accounts with 2FA enabled.
# Login request curl -X POST https://1confirmed.com/api/v1/login \ -H "Content-Type: application/json" \ -d '{ "email": "[email protected]", "password": "your_password" }'
{ "success": true, "data": { "id": 1, "name": "John Doe", "email": "[email protected]", "phone": "213555123456", "shop_domain": null, "auth_type": null, "language": "fr", "phone_verified_at": "2026-01-15T10:30:00Z", "two_factor_enabled": false, "two_factor_verified": false, "first_message_wizard_completed": true, "roles": ["client"], "credit": { "credit": 150 }, "subscription": null, "cr_account": null, "accounts": [], "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...", "custom_credit": {} }, "message": "User Retrieved Successfully" }
{ "success": true, "data": { "user_id": 1, "two_factor_verified": true }, "message": "Two-Factor Authentication is enabled. Please provide your 2FA code." }
{ "success": false, "message": "Your Account Verification Is Not Completed Yet. We've sent a verification message to your WhatsApp number." }
{ "success": false, "message": "The email or password you entered is incorrect. Please try again." }
{ "message": "The given data was invalid.", "errors": { "email": [ "The email field is required." ], "password": [ "The password field is required." ] } }
User Info
Retrieve the authenticated user's profile, including credit balance, subscription status, and account information.
Authorization header.
No parameters required. Uses the Bearer token to identify the user.
# Get user profile curl -X GET https://1confirmed.com/api/v1/user \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": { "id": 1, "name": "John Doe", "email": "[email protected]", "phone": "212600000000", "shop_domain": null, "auth_type": null, "language": "fr", "phone_verified_at": "2026-01-15T10:30:00Z", "two_factor_enabled": false, "two_factor_verified": false, "first_message_wizard_completed": true, "roles": ["client"], "credit": { "id": 1, "credit": 150 }, "subscription": null, "cr_account": null, "custom_credit": {} }, "message": "User Profile Retrieved Successfully" }
Categories
Retrieve the list of all available template categories. Use the category ID when filtering templates.
Authorization header.
No parameters required.
# Get all categories curl -X GET https://1confirmed.com/api/v1/categories \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": [ { "id": 1, "name": "Marketing" }, { "id": 2, "name": "Transactional" }, { "id": 3, "name": "Utility" } ], "message": "Categories Retreived Successfully" }
Templates
Retrieve the list of available WhatsApp message templates, filtered by language. Supports filtering by name, category, flow forms, carousels, and more.
Authorization header.
# Get templates for English, for single messages curl -X GET "https://1confirmed.com/api/v1/templates?language_id=3&is_broadcast=0" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": [ { "id": 12, "name": "welcome_message", "display_name": "Welcome Message", "variables": "[{\"name\":\"Client Name\",\"variable\":\"name\"}]", "has_file": false, "has_flow_form": false, "is_carousel": false, "category_id": 1 } ], "message": "Templates Retrieved Successfully" }
Template Accounts
Retrieve the list of WhatsApp sender numbers (accounts) available for a specific template. Use the returned template_account_flow_id when sending messages or broadcasts.
Authorization header.
# Get sender accounts for template 89 curl -X GET "https://1confirmed.com/api/v1/template/accounts?template_id=89" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": [ { "id": 3, "phone": "213555000000", "name": "Primary Sender" }, { "id": 7, "phone": "212600111111", "name": "Secondary Sender" } ], "message": "Accounts Retreived Successfully" }
Languages
Retrieve the list of available template languages. Use the language ID when fetching templates or creating broadcasts.
No parameters required.
# Get all languages curl -X GET https://1confirmed.com/api/v1/languages \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": [ { "id": 1, "language": "Français" }, { "id": 2, "language": "العربية" }, { "id": 3, "language": "English" } ], "message": "Languages Retreived Successfully" }
Get Credit
Retrieve the authenticated user's current credit balance.
No parameters required.
# Get credit balance curl -X GET https://1confirmed.com/api/v1/credits \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": { "id": 1, "credit": 150 }, "message": "Credit Retreived Successfully" }
Send Message
Send a single WhatsApp message to a contact using a pre-configured template. Supports template variables, file attachments, flow forms, and scheduled (delayed) delivery.
Authorization header.
# Send a single message curl -X POST https://1confirmed.com/api/v1/messages \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "template_id": 12, "template_account_flow_id": 3, "phone": "213555123456", "name": "Welcome Message", "data": { "name": "John Doe", "date": "2026-04-11" } }'
{ "data": { "messaging_product": "whatsapp", "contacts": [ { "input": "213555123456", "wa_id": "213555123456" } ], "messages": [ { "id": "wamid.HBgNMjEzNTU..." } ] }, "message": "Message has been sent successfully" }
{ "data": null, "message": "Message has been scheduled successfully for 2026-04-12 10:00:00", "scheduled_for": "2026-04-12 10:00:00" }
{ "success": false, "message": "You don't have enough credits in your balance to send your broadcast/message." }
{ "message": "The given data was invalid.", "errors": { "template_id": ["The template id field is required."], "phone": ["The phone field is required."], "name": ["The name field is required."] } }
Send Broadcast
Send a bulk WhatsApp broadcast to multiple contacts in a single request. Handles the full workflow: template selection, file upload, data mapping, country assignment, and sending. Supports scheduled delivery and follow-up configuration.
multipart/form-data (when uploading Excel file) or application/json.
# Send a broadcast curl -X POST https://1confirmed.com/api/v1/send-broadcast \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "April Campaign", "template_id": 12, "template_account_flow_id": 3, "language_id": 1, "data": "{\"data\": [{\"phone\": \"213555111111\", \"name\": \"Ali\"}, {\"phone\": \"213555222222\", \"name\": \"Sara\"}]}", "global_data": { "company": "1Confirmed" } }'
{ "success": true, "data": { "id": 142, "sent_at": "2026-04-11", "name": "April Campaign", "contacts": 2, "language": "English", "template": "welcome_message", "whatsapp_area": "213555000000", "is_draft": false, "mapping": [ { "phone": "213555111111", "name": "Ali" }, { "phone": "213555222222", "name": "Sara" } ], "global_data": { "company": "1Confirmed" }, "confirmations": 0, "has_file": false, "is_flow_form": false, "file": "", "follow_up_configuration": null }, "message": "The broadcast will be sent" }
{ "success": false, "message": "Insufficient credits" }
{ "message": "The given data was invalid.", "errors": { "name": ["The broadcast name is required."], "template_id": ["The template is required."], "template_account_flow_id": ["The WhatsApp area code is required."], "language_id": ["The language is required."], "data": ["The mapping data is required."] } }
Broadcast List
Retrieve a paginated list of all your broadcasts with their status, statistics, and metadata. Supports searching by broadcast name or template name.
Authorization header.
# List all broadcasts curl -X GET https://1confirmed.com/api/v1/broadcasts?search=April \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": { "broadcasts": [ { "id": 156, "sent_at": "2026-04-10 14:30", "name": "April Campaign", "contacts": 350, "stop_notifications": 2, "language": "English", "template": "promo_offer_v2", "template_image": "https://1confirmed.com/storage/...", "whatsapp_area": "213555000000", "is_draft": false, "read": 280, "delivered": 325, "confirmations": 45, "sent": 340, "interacted": 120, "cost": 34.5, "file_extension": "", "has_file": false, "status": "completed", "in_queue": false, "reengagement": null, "delayed_to": null, "refused": false, "scheduled_jobs_count": 0, "cancellation_comment": null } ], "pagination": { "total": 72, "count": 15, "per_page": 15, "next_page_url": "https://1confirmed.com/api/v1/broadcasts?page=2", "prev_page_url": null, "current_page": 1, "total_pages": 5 } }, "message": "Broadcasts Retrieved Successfully" }
Show Broadcast
Retrieve the details of a specific broadcast by its ID, including template info, mapping data, contacts count, and delivery statistics.
Authorization header.
# Get broadcast details curl -X GET https://1confirmed.com/api/v1/broadcasts/156 \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": { "id": 156, "sent_at": "2026-04-10", "name": "April Campaign", "contacts": 350, "language": "English", "template": "promo_offer_v2", "whatsapp_area": "213555000000", "is_draft": false, "mapping": [ { "phone": "213555111111", "name": "Ali" }, { "phone": "213555222222", "name": "Sara" } ], "global_data": "{\"company\":\"1Confirmed\"}", "confirmations": 45, "has_file": false, "is_flow_form": false, "file": "", "follow_up_configuration": null }, "message": "Broadcast retreived successfully" }
{ "success": false, "message": "BroadCast not found" }
Broadcast Contacts
Retrieve the paginated list of contacts for a specific broadcast, including delivery status, confirmation status, cost, and message statuses. Supports filtering by follow-up contacts.
Authorization header.
# Get contacts for broadcast #156 curl -X GET "https://1confirmed.com/api/v1/contacts?broadcast_id=156" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": { "contacts": [ { "id": 1024, "phone": "213555111111", "broadcast_name": "April Campaign", "data": "{\"name\":\"Ali\"}", "delivery_date": "2026-04-10 14:30:00", "received_at": "2026-04-10 14:30:05", "confirmed": true, "canceled": false, "interacted": true, "cost": 0.5, "is_sent": true, "reply_at": "2026-04-10 14:35:00", "statuses": [ { "status": "sent", "timestamp": "2026-04-10 14:30:01" }, { "status": "delivered", "timestamp": "2026-04-10 14:30:05" }, { "status": "read", "timestamp": "2026-04-10 14:31:00" } ] } ], "pagination": { "total": 350, "count": 15, "per_page": 15, "next_page_url": "https://1confirmed.com/api/v1/contacts?broadcast_id=156&page=2", "prev_page_url": null, "current_page": 1, "total_pages": 24 } }, "message": "Contacts Retreived Successfully" }
Filter Contacts
Retrieve a paginated list of contacts across all your broadcasts with advanced filtering. Supports filtering by broadcast, delivery status, confirmation, interaction, phone number, date range, and more.
# Filter confirmed contacts from broadcast #156 curl -X GET "https://1confirmed.com/api/v1/filter/contacts/segments?broadcast_id=156&confirmed=true&status=delivered" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": { "contacts": [ { "id": 1024, "phone": "213555111111", "broadcast_name": "April Campaign", "data": "{\"name\":\"Ali\"}", "delivery_date": "2026-04-10 14:30:00", "received_at": "2026-04-10 14:30:05", "confirmed": true, "canceled": false, "interacted": true, "cost": 0.5, "is_sent": true, "reply_at": "2026-04-10 14:35:00", "statuses": [ { "status": "delivered", "timestamp": "2026-04-10 14:30:05" } ] } ], "pagination": { "total": 120, "count": 20, "per_page": 20, "next_page_url": "https://1confirmed.com/api/v1/filter/contacts/segments?page=2", "prev_page_url": null, "current_page": 1, "total_pages": 6 } }, "message": "" }
Black List
Retrieve the paginated list of blacklisted phone numbers (stop promotions). Supports searching by phone number or broadcast name.
# Get blacklisted numbers curl -X GET https://1confirmed.com/api/v1/black-list \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": [ { "id": 15, "phone": "213555123456", "broadcast_name": "April Campaign", "created_at": "2026-04-01 10:30:00" } ], "message": "Black list retrieved successfully" }
Add to Black List
Add a phone number to the blacklist. Blacklisted numbers will not receive future broadcasts from the specified account.
# Add phone to blacklist curl -X POST https://1confirmed.com/api/v1/black-list \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"phone": "213555123456", "cr_account_id": 1}'
{ "success": true, "data": { "phone": "213555123456", "for_all": 2, "cr_account_id": 1, "user_id": 1 }, "message": "added successfully" }
{ "message": "The given data was invalid.", "errors": { "phone": ["This phone number is already blacklisted under this account."] } }
Confirmations
Retrieve the paginated list of confirmed and paid message contacts, along with unpaid message credit count. Supports searching by phone number or broadcast name.
# Get confirmations curl -X GET "https://1confirmed.com/api/v1/confirmations?search=212643" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": { "paid_messages": [ { "id": 201, "phone": "212643000000", "confirmed": true, "paid": true, "broadcast_name": "April Campaign", "updated_at": "2026-04-10 14:30:00" } ], "unpaid_messages": 5 }, "message": "Cofirmations Retreived Successfully" }
Confirmation Webhook Listener
Create or update a webhook listener that receives confirmation events. When a contact confirms, a POST request is sent to your target_url.
# Set up confirmation webhook curl -X POST https://1confirmed.com/api/v1/confirmation/listeners \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target_url": "https://your-app.com/webhook/confirmations", "active": 1}'
{ "success": true, "data": { "target_url": "https://your-app.com/webhook/confirmations", "active": 1, "updated_at": "2026-04-12 01:00:00" }, "message": "Success" }
Payments
Retrieve the paginated list of your payment history, including amount, credit, payment method, and status.
No parameters required. Paginated with 10 entries per page.
# Get payment history curl -X GET https://1confirmed.com/api/v1/payments \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": { "payments": [ { "id": 42, "price": 49.95, "credit": 500, "user_id": 1, "is_paid": true, "method": "Stripe", "created_at": "2026-04-10 14:30:00", "updated_at": "2026-04-10 14:35:00", "expired": false } ], "pagination": { "total": 25, "count": 10, "per_page": 10, "next_page_url": "https://1confirmed.com/api/v1/payments?page=2", "prev_page_url": null, "current_page": 1, "total_pages": 3 } }, "message": "Payments Retreived Successfully" }
Create Payment
Initiate a credit purchase via Stripe or PayPal. Returns a checkout URL to redirect the user to complete payment.
# Purchase 500 credits via Stripe curl -X POST https://1confirmed.com/api/v1/payments \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"credit": 500, "method": "Stripe"}'
{ "success": true, "data": { "url": "https://checkout.stripe.com/pay/cs_live_..." }, "message": "Payment Creadted Successfully" }
Saved Lists
Retrieve all saved contact lists and lists shared with you. Supports search filtering and optional pagination.
# Get all saved lists curl -X GET https://1confirmed.com/api/v1/saved-list \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": { "lists": [ { "id": 1, "name": "VIP Clients", "is_shared": false, "created_at": "2026-04-01T10:00:00.000000Z", "updated_at": "2026-04-01T10:00:00.000000Z" } ] }, "message": "Saved and shared lists retrieved successfully" }
Show Saved List
Retrieve a specific saved list by its ID, including its full JSON data.
# Get a specific saved list curl -X GET https://1confirmed.com/api/v1/saved-list/1 \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": { "id": 1, "name": "VIP Clients", "json_data": "[{\"phone\":\"555-1234\",\"name\":\"Ali\"}]", "is_shared": false, "created_at": "2026-04-01T10:00:00.000000Z", "updated_at": "2026-04-01T10:00:00.000000Z" }, "message": "Saved list retrieved successfully" }
Create Saved List
Create a new saved contact list with JSON data containing your contacts.
# Create a new contact list curl -X POST https://1confirmed.com/api/v1/saved-list \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name": "VIP Clients", "json_data": "[{\"phone\":\"555-1234\",\"name\":\"Ali\"}]"}'
{ "success": true, "data": { "id": 5, "name": "VIP Clients", "json_data": "[{\"phone\":\"555-1234\",\"name\":\"Ali\"}]", "user_id": 1, "created_at": "2026-04-12T01:00:00.000000Z", "updated_at": "2026-04-12T01:00:00.000000Z" }, "message": "Saved list created successfully" }
Update Saved List
Update the name or JSON data of an existing saved list.
# Update saved list name curl -X PUT https://1confirmed.com/api/v1/saved-list/1 \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name": "Premium Clients"}'
{ "success": true, "data": { "id": 1, "name": "Premium Clients", "json_data": "[{\"phone\":\"555-1234\",\"name\":\"Ali\"}]", "user_id": 1 }, "message": "Saved list updated successfully" }
Delete Saved List
Delete a saved list. Only lists you own can be deleted.
# Delete saved list #4 curl -X DELETE https://1confirmed.com/api/v1/saved-list/4 \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": true, "message": "Saved list deleted successfully" }
Clone Saved List
Create a duplicate of an existing saved list. Works with both your own lists and shared lists.
# Clone saved list #3 curl -X POST https://1confirmed.com/api/v1/saved-list/3/clone \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": { "id": 6, "name": "VIP Clients (Copy)", "json_data": "[{\"phone\":\"555-1234\",\"name\":\"Ali\"}]", "user_id": 1 }, "message": "List cloned successfully" }
Connections Log
Retrieve the paginated log of all user connection events (logins, sessions). Returns 10 entries per page.
No parameters required. Paginated with 10 entries per page.
# Get connection logs curl -X GET https://1confirmed.com/api/v1/connections \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
{ "success": true, "data": [ { "id": 301, "ip_address": "197.230.xxx.xxx", "user_agent": "Mozilla/5.0 ...", "created_at": "2026-04-11 18:00:00" } ], "message": "Log Connections Retreived Successfully" }