Copied to clipboard!
1Confirmed v2.7.4
Dashboard →
API Reference

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.

https://1confirmed.com/api/v1

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.

Token Format: Include your token in the request header as Authorization: Bearer {your_token}
Required Headers
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.

POST /api/v1/login
Body Parameters JSON
email
string required

A valid email address

password
string required

The user's password

two_factor_code
string optional

6-digit 2FA code from authenticator app (required if 2FA is enabled on the account)

# Login request
curl -X POST https://1confirmed.com/api/v1/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "password": "your_password"
  }'
Response
200 OK
{
  "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"
}
200 — 2FA Required
{
  "success": true,
  "data": {
    "user_id": 1,
    "two_factor_verified": true
  },
  "message": "Two-Factor Authentication is enabled. Please provide your 2FA code."
}
404 — Not Verified
{
  "success": false,
  "message": "Your Account Verification Is Not Completed Yet. We've sent a verification message to your WhatsApp number."
}
404 — Invalid Credentials
{
  "success": false,
  "message": "The email or password you entered is incorrect. Please try again."
}
422 — Validation Error
{
  "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.

GET /api/v1/user
Authorization: Bearer Token required in the Authorization header.
Parameters None

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"
Response
200 OK
{
  "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.

GET /api/v1/categories
Authorization: Bearer Token required in the Authorization header.
Parameters None

No parameters required.

# Get all categories
curl -X GET https://1confirmed.com/api/v1/categories \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Response
200 OK
{
  "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.

GET /api/v1/templates
Authorization: Bearer Token required in the Authorization header.
Query Parameters URL
language_id
integer required

Language ID (from /languages).

is_broadcast
integer required

0 for single message templates, 1 for broadcast templates.

name
string optional

Search templates by display name.

category_id
integer optional

Filter by category ID.

has_flow_form
integer optional

0 or 1 — filter by flow form support.

has_carousel
integer optional

0 or 1 — filter carousel templates.

has_flow
integer optional

0 or 1 — filter flow templates.

is_calendar
integer optional

0 or 1 — filter calendar templates.

# 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"
Response
200 OK
{
  "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.

GET /api/v1/template/accounts
Authorization: Bearer Token required in the Authorization header.
Query Parameters URL
template_id
integer required

ID of the template to get available sender numbers for.

# 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"
Response
200 OK
{
  "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.

GET /api/v1/languages
Authorization: Bearer Token required.
ParametersNone

No parameters required.

# Get all languages
curl -X GET https://1confirmed.com/api/v1/languages \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Response
200 OK
{
  "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.

GET /api/v1/credits
Authorization: Bearer Token required.
ParametersNone

No parameters required.

# Get credit balance
curl -X GET https://1confirmed.com/api/v1/credits \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Response
200 OK
{
  "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.

POST /api/v1/messages
Authorization: Bearer Token required in the Authorization header.
Body Parameters JSON / Multipart
template_id
integer required

ID of the WhatsApp template to use. Must exist in templates table.

template_account_flow_id
integer required

ID of the template account flow (WhatsApp area code / sender).

phone
numeric required

Recipient phone number (without '+' prefix).

name
string required

Name label for this message/broadcast entry.

country_id
integer optional

Country ID for the recipient. Must exist in countries table.

data
object optional

Key-value pairs for template variable mapping (e.g. {"name": "John", "date": "2026-04-11"}).

delayed_to
datetime optional

Schedule message for later. Must be at least 15 minutes in the future.

# 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"
    }
  }'
Response
200 OK
{
  "data": {
    "messaging_product": "whatsapp",
    "contacts": [
      {
        "input": "213555123456",
        "wa_id": "213555123456"
      }
    ],
    "messages": [
      {
        "id": "wamid.HBgNMjEzNTU..."
      }
    ]
  },
  "message": "Message has been sent successfully"
}
200 — Scheduled
{
  "data": null,
  "message": "Message has been scheduled successfully for 2026-04-12 10:00:00",
  "scheduled_for": "2026-04-12 10:00:00"
}
404 — Error
{
  "success": false,
  "message": "You don't have enough credits in your balance to send your broadcast/message."
}
422 — Validation Error
{
  "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.

POST /api/v1/send-broadcast
Authorization: Bearer Token required. Content-Type: multipart/form-data (when uploading Excel file) or application/json.
Body Parameters JSON / Multipart
name
string required

Name of the broadcast campaign.

template_id
integer required

ID of the WhatsApp template to use.

template_account_flow_id
integer required

ID of the template account flow (WhatsApp sender / area code).

language_id
integer required

Language ID for the broadcast template.

data
JSON string required

JSON-encoded mapping data containing contact list with template variables. Structure: {"data": [...]}

global_data
object optional

Key-value pairs for global template variables shared across all contacts.

country_id
integer optional

Country ID for the broadcast recipients.

file
file optional

Excel file (.xlsx, .xls) containing contacts data.

as_form
boolean optional

Send as flow form. Accepts: on, off, true, false, 1, 0. Only valid for templates with flow forms.

delayed_to
datetime optional

Schedule broadcast for later. Format: YYYY-MM-DD HH:MM:SS. Must be at least 15 minutes in the future.

saved_list_id
integer optional

ID of a previously saved contact list to reuse.

list_name
string optional

If provided, saves the current contact data as a new reusable list.

follow_up_configuration
object optional

Automatic follow-up config: hours (1-168), template_id, mapping (array), global_variables (array), as_form.

json_data
string (JSON) optional

Raw JSON data of contacts to save as a list. Used together with list_name.

calendar_id
integer optional

Required for calendar templates. Must belong to the authenticated user and be a valid, active calendar.

# 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"
    }
  }'
Response
200 OK
{
  "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"
}
404 — Error
{
  "success": false,
  "message": "Insufficient credits"
}
422 — Validation Error
{
  "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.

GET /api/v1/broadcasts
Authorization: Bearer Token required in the Authorization header.
Query Parameters URL
search
string optional

Search broadcasts by name or template name.

page
integer optional

Page number for pagination (default: 1). Each page returns 15 items.

# List all broadcasts
curl -X GET https://1confirmed.com/api/v1/broadcasts?search=April \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Response
200 OK
{
  "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.

GET /api/v1/broadcasts/{id}
Authorization: Bearer Token required in the Authorization header.
Parameters URL
id
integer required

The ID of the broadcast (URL parameter). Must belong to the authenticated user.

# Get broadcast details
curl -X GET https://1confirmed.com/api/v1/broadcasts/156 \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Response
200 OK
{
  "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"
}
404 — Not Found
{
  "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.

GET /api/v1/contacts
Authorization: Bearer Token required in the Authorization header.
Query Parameters URL
broadcast_id
integer required

ID of the broadcast to retrieve contacts for. Must exist and belong to the authenticated user.

follow_up
integer optional

1 to get only follow-up (re-engagement) contacts. Defaults to 0 (original contacts).

page
integer optional

Page number for pagination (default: 1). Each page returns 15 items.

# 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"
Response
200 OK
{
  "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.

GET /api/v1/filter/contacts/segments
Authorization: Bearer Token required.
Query ParametersURL
broadcast_id
integer optional

Filter contacts by a specific broadcast ID.

status
string optional

Filter by WhatsApp delivery status. Values: sent, delivered, read, failed.

is_sent
boolean optional

Filter by whether the message was sent. true or false.

confirmed
boolean optional

Filter by confirmation status.

interacted
boolean optional

Filter by whether the contact interacted with the message.

canceled
boolean optional

Filter by cancellation status.

phone
string optional

Search by phone number (partial match).

date_range[]
array optional

Filter by creation date range. Pass two dates: date_range[]=2026-04-01&date_range[]=2026-04-12.

has_data
boolean optional

true to get contacts with data, false for contacts without data.

page
integer optional

Page number for pagination. 20 contacts per page.

# 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"
Response
200 OK
{
  "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 /api/v1/black-list
Authorization: Bearer Token required.
Query ParametersURL
search
string optional

Search 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"
Response
200 OK
{
  "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.

POST /api/v1/black-list
Authorization: Bearer Token required.
Body ParametersJSON
phone
string required

Phone number to blacklist (max 15 chars). Must not already exist under the same account.

cr_account_id
integer required

CrAccount ID the blacklist entry belongs to. Must be owned by you.

# 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}'
Response
200 OK
{
  "success": true,
  "data": {
    "phone": "213555123456",
    "for_all": 2,
    "cr_account_id": 1,
    "user_id": 1
  },
  "message": "added successfully"
}
422 — Already Blacklisted
{
  "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 /api/v1/confirmations
Authorization: Bearer Token required.
Query ParametersURL
search
string optional

Search 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"
Response
200 OK
{
  "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.

POST /api/v1/confirmation/listeners
Authorization: Bearer Token required.
Body ParametersJSON
target_url
string (URL) required

The URL that will receive confirmation webhook POST requests.

active
boolean optional

1 to enable, 0 to disable the listener.

# 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}'
Response
200 OK
{
  "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.

GET /api/v1/payments
Authorization: Bearer Token required.
ParametersNone

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"
Response
200 OK
{
  "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.

POST /api/v1/payments
Authorization: Bearer Token required.
Body ParametersJSON
credit
integer required

Number of credits to purchase. Must meet the minimum purchase amount.

method
string required

Payment method. Accepted values: Stripe or Paypal.

# 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"}'
Response
200 OK
{
  "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 /api/v1/saved-list
Authorization: Bearer Token required.
Query ParametersURL
search
string optional

Filter lists by name.

page
integer optional

If provided, results are paginated (10 per page). Without it, all lists are returned.

# Get all saved lists
curl -X GET https://1confirmed.com/api/v1/saved-list \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Response
200 OK
{
  "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 /api/v1/saved-list/{id}
Authorization: Bearer Token required.
Path ParametersURL
id
integer required

ID of the saved list.

# 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"
Response
200 OK
{
  "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.

POST /api/v1/saved-list
Authorization: Bearer Token required.
Body ParametersJSON
name
string required

Name of the list (max 255 characters).

json_data
string (JSON) required

JSON array of contacts. Each contact should include a phone field.

broadcast_id
integer optional

Associate the list with an existing broadcast.

# 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\"}]"}'
Response
200 OK
{
  "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.

PUT /api/v1/saved-list/{id}
Authorization: Bearer Token required.
Body ParametersJSON
name
string optional

Updated name (max 255 characters).

json_data
string (JSON) optional

Updated JSON array of contacts.

# 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"}'
Response
200 OK
{
  "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 /api/v1/saved-list/{id}
Authorization: Bearer Token required.
Path ParametersURL
id
integer required

ID of the saved list to delete.

# Delete saved list #4
curl -X DELETE https://1confirmed.com/api/v1/saved-list/4 \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Response
200 OK
{
  "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.

POST /api/v1/saved-list/{id}/clone
Authorization: Bearer Token required.
Path ParametersURL
id
integer required

ID of the saved list to clone.

# 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"
Response
200 OK
{
  "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.

GET /api/v1/connections
Authorization: Bearer Token required.
ParametersNone

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"
Response
200 OK
{
  "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"
}