SMS Reminder API Documentation
    Developer
    Updated 30/01/202610 min read

    SMS Reminder API Documentation

    Complete API reference for adding contacts and managing SMS reminder campaigns programmatically.

    Quick Start

    Get started with the Remindlo API in 3 steps:

    1. Get your API key from Dashboard → Settings → API Keys
    2. List your campaigns to get campaign IDs
    3. Add contacts and enroll them in campaigns
    # Example: Add a contact
    curl -X POST "https://api.remindlo.co.uk/v1/contacts" \
      -H "x-api-key: sk_live_your_key_here" \
      -H "Content-Type: application/json" \
      -d '{
        "phone_e164": "+447912345678",
        "first_name": "John",
        "marketing_consent": true
      }'

    Authentication

    All API requests require an API key passed in the x-api-key header:

    x-api-key: sk_live_your_key_here

    Important: Keep your API key secure. Never expose it in client-side code or public repositories.

    Base URL

    https://api.remindlo.co.uk/v1

    Endpoints

    GET /v1/campaigns

    List all available SMS campaigns for your account.

    curl -X GET "https://api.remindlo.co.uk/v1/campaigns" \
      -H "x-api-key: sk_live_xxx"

    Response:

    {
      "campaigns": [
        {
          "id": "uuid",
          "name": "Appointment Reminder",
          "type": "recurring",
          "status": "running"
        }
      ]
    }

    POST /v1/contacts

    Create or update a contact. If a contact with the same phone or email exists, it will be updated.

    Request Body

    FieldTypeRequiredDescription
    phone_e164string*Phone in E.164 format (e.g., +447912345678)
    emailstring*Email address
    first_namestringContact's first name
    last_namestringContact's last name
    marketing_consentbooleanWhether contact agreed to receive messages
    next_due_atstringNext appointment date (ISO 8601)
    last_service_atstringLast service date (ISO 8601)
    notestringNotes about the contact
    tagsstring[]Tags for categorization
    custom_fieldsobjectCustom data as JSON
    campaign_idsstring[]Campaign IDs to auto-enroll

    * At least one of phone_e164 or email is required.

    curl -X POST "https://api.remindlo.co.uk/v1/contacts" \
      -H "x-api-key: sk_live_xxx" \
      -H "Content-Type: application/json" \
      -d '{
        "phone_e164": "+447912345678",
        "first_name": "John",
        "last_name": "Smith",
        "marketing_consent": true,
        "next_due_at": "2025-03-15",
        "campaign_ids": ["campaign-uuid"]
      }'

    Response:

    {
      "success": true,
      "contact_id": "uuid",
      "action": "created",
      "contact": {
        "id": "uuid",
        "first_name": "John",
        "last_name": "Smith",
        "phone_e164": "+447912345678",
        "marketing_consent": true,
        "next_due_at": "2025-03-15"
      },
      "enrollments": [
        { "campaign_id": "campaign-uuid", "status": "enrolled" }
      ]
    }

    GET /v1/contacts

    List contacts with filtering and pagination.

    Query Parameters

    ParameterTypeDescription
    limitnumberMax results (default 50, max 100)
    offsetnumberSkip first N results
    searchstringSearch in name, phone, email
    has_phonebooleanOnly contacts with phone
    marketing_consentbooleanFilter by consent
    next_due_beforestringDue date before (ISO 8601)
    next_due_afterstringDue date after (ISO 8601)
    sort_bystringcreated_at, updated_at, next_due_at, first_name
    sort_orderstringasc or desc
    curl -X GET "https://api.remindlo.co.uk/v1/contacts?limit=10&search=john" \
      -H "x-api-key: sk_live_xxx"

    GET /v1/contacts/:id

    Get a single contact by ID, phone, or email.

    # By ID
    curl -X GET "https://api.remindlo.co.uk/v1/contacts/uuid" \
      -H "x-api-key: sk_live_xxx"
    
    # By phone
    curl -X GET "https://api.remindlo.co.uk/v1/contacts?phone=+447912345678" \
      -H "x-api-key: sk_live_xxx"

    Error Handling

    All errors return a consistent JSON format:

    {
      "success": false,
      "error": {
        "code": "INVALID_PHONE_FORMAT",
        "message": "Phone number must be in E.164 format",
        "details": {
          "field": "phone_e164",
          "value": "07912345678",
          "suggestion": "Use format +447912345678 for UK numbers"
        }
      }
    }

    Error Codes

    HTTPCodeDescription
    400INVALID_PHONE_FORMATPhone not in E.164 format
    400INVALID_EMAIL_FORMATInvalid email address
    400MISSING_IDENTIFIERNo phone or email provided
    401INVALID_API_KEYMissing or invalid API key
    401API_KEY_EXPIREDAPI key has expired
    404CONTACT_NOT_FOUNDContact does not exist
    404CAMPAIGN_NOT_FOUNDCampaign does not exist
    500INTERNAL_ERRORServer error

    Use Cases

    AI Assistant Integration

    Perfect for AI assistants (Claude, ChatGPT) to manage contacts via chat:

    User: "Add John Smith, phone 07912345678, to the birthday campaign"
    AI: [calls GET /v1/campaigns to find "Birthday" campaign]
    AI: [calls POST /v1/contacts with campaign_ids]
    AI: "Done! John Smith has been added and enrolled in the Birthday campaign."

    CRM Integration

    Sync contacts from your CRM system automatically when appointments are booked.

    Zapier/Make Automation

    Connect Remindlo to 5000+ apps using webhook integrations.

    Code Examples

    JavaScript / Node.js

    const response = await fetch('https://api.remindlo.co.uk/v1/contacts', {
      method: 'POST',
      headers: {
        'x-api-key': 'sk_live_xxx',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        phone_e164: '+447912345678',
        first_name: 'John',
        marketing_consent: true
      })
    });
    const data = await response.json();
    console.log(data.contact_id);

    Python

    import requests
    
    response = requests.post(
        'https://api.remindlo.co.uk/v1/contacts',
        headers={'x-api-key': 'sk_live_xxx'},
        json={
            'phone_e164': '+447912345678',
            'first_name': 'John',
            'marketing_consent': True
        }
    )
    print(response.json()['contact_id'])

    PHP

    $ch = curl_init('https://api.remindlo.co.uk/v1/contacts');
    curl_setopt_array($ch, [
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => [
            'x-api-key: sk_live_xxx',
            'Content-Type: application/json'
        ],
        CURLOPT_POSTFIELDS => json_encode([
            'phone_e164' => '+447912345678',
            'first_name' => 'John',
            'marketing_consent' => true
        ])
    ]);
    $response = json_decode(curl_exec($ch), true);
    echo $response['contact_id'];

    Need Help?

    Contact us at [email protected] for API support.