Welcome to Drop Cowboy - Ringless Voicemail Platform. Main navigation and content follows.

Developer Hub

Ringless Voicemail API & SMS Integration

Everything you need to integrate ringless voicemail and SMS into your applications. Complete REST API documentation, webhooks, and code examples.

Getting started with the Drop Cowboy API is straightforward. Sign up for an account to get your API credentials, then explore our documentation and npm package. Whether you're building a custom integration, adding communication features to your platform, or connecting existing systems, our REST API and webhooks make it easy to send ringless voicemail, SMS, and voice broadcasts from your applications.

Quick Start Code Examples

Get started with Drop Cowboy's API in minutes. Copy and paste these examples to send your first ringless voicemail or SMS. All examples use the production API at api.dropcowboy.com.

Send Ringless Voicemail (curl)

curl
# Use this to send a ringless voicemail drop to a single contact.
# Get your team_id and secret from Settings → API in your Drop Cowboy dashboard.
# Requires a registered brand_id and recording_id (or voice_id + tts_body).
# Delivery status is sent to your configured webhook URL.

curl -X POST https://api.dropcowboy.com/v1/rvm \
  -H "x-team-id: YOUR_TEAM_ID" \
  -H "x-secret: YOUR_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "team_id": "YOUR_TEAM_ID",
    "secret": "YOUR_SECRET",
    "foreign_id": "order-12345",
    "brand_id": "YOUR_BRAND_GUID",
    "phone_number": "15551234567",
    "recording_id": "YOUR_RECORDING_GUID",
    "forwarding_number": "15559876543",
    "postal_code": "90210",
    "callback_url": "https://your-domain.com/webhook"
  }'

Send SMS Text Message (curl)

curl
# Use this to send an SMS text message to a contact.
# Requires a registered pool_id for SMS sending.
# The opt_in field confirms you have consent (required by law).
# Character limit is 160 characters per message.

curl -X POST https://api.dropcowboy.com/v1/sms \
  -H "x-team-id: YOUR_TEAM_ID" \
  -H "x-secret: YOUR_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "team_id": "YOUR_TEAM_ID",
    "secret": "YOUR_SECRET",
    "phone_number": "15551234567",
    "caller_id": "15559876543",
    "pool_id": "YOUR_POOL_ID",
    "sms_body": "Hi John! Your appointment is confirmed for tomorrow at 2pm. Reply STOP to opt out.",
    "opt_in": true,
    "foreign_id": "appointment-456",
    "callback_url": "https://your-domain.com/webhook"
  }'

List Your Brands (curl)

curl
# Use this to retrieve all registered brands in your account.
# You'll need a brand_id to send ringless voicemail.
# Only brands with api_allowed: true can be used via API.

curl -X GET https://api.dropcowboy.com/v1/brand \
  -H "x-team-id: YOUR_TEAM_ID" \
  -H "x-secret: YOUR_SECRET"

# Response includes:
# - brand_id: Use this in your RVM requests
# - company_name: Your registered business name
# - registered: Brand registration status
# - api_allowed: Whether this brand can be used via API

Create & Populate Contact List (curl)

curl
# Use this to organize contacts into lists for campaign targeting.
# Step 1: Create a list, then Step 2: Add contacts to it.
# You can add up to 10,000 contacts per API call.

# Step 1: Create the list
curl -X POST https://api.dropcowboy.com/v1/list \
  -H "x-team-id: YOUR_TEAM_ID" \
  -H "x-secret: YOUR_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"list_name": "Q1 Prospects"}'

# Step 2: Add contacts (use list_id from step 1)
curl -X POST https://api.dropcowboy.com/v1/list/YOUR_LIST_ID/contacts \
  -H "x-team-id: YOUR_TEAM_ID" \
  -H "x-secret: YOUR_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "fields": ["first_name", "last_name", "phone", "email"],
    "values": [
      ["John", "Doe", "15551234567", "john@example.com"],
      ["Jane", "Smith", "15559876543", "jane@example.com"]
    ],
    "region": "US"
  }'

Send Ringless Voicemail with AI Voice (Node.js)

javascript
// Use this to send ringless voicemail using Mimic AI text-to-speech.
// Perfect for dynamic personalized messages without recording audio.
// Requires a voice_id from your Voices tab in Drop Cowboy dashboard.

const axios = require('axios');

async function sendRVMWithAI(contact) {
  const response = await axios.post('https://api.dropcowboy.com/v1/rvm', {
    team_id: process.env.DROP_COWBOY_TEAM_ID,
    secret: process.env.DROP_COWBOY_SECRET,
    foreign_id: `contact-${contact.id}`,
    brand_id: process.env.BRAND_ID,
    phone_number: contact.phone,
    voice_id: process.env.VOICE_ID, // Your Mimic AI voice
    tts_body: `Hi ${contact.firstName}, this is Sarah from Acme Corp. 
               I wanted to follow up on your recent inquiry about our services. 
               Please call me back at 555-987-6543. Thanks!`,
    forwarding_number: '15559876543',
    postal_code: contact.zip
  }, {
    headers: {
      'x-team-id': process.env.DROP_COWBOY_TEAM_ID,
      'x-secret': process.env.DROP_COWBOY_SECRET,
      'Content-Type': 'application/json'
    }
  });
  
  console.log('RVM queued:', response.data);
  return response.data;
}

// Example usage
sendRVMWithAI({
  id: 12345,
  firstName: 'John',
  phone: '15551234567',
  zip: '90210'
});

Handle Webhook Callbacks (Express.js)

javascript
// Use this to receive delivery status updates from Drop Cowboy.
// Configure your webhook URL in Settings → API in your dashboard.
// Drop Cowboy sends callbacks for: delivered, failed, opted_out events.

const express = require('express');
const app = express();

app.post('/webhooks/dropcowboy', express.json(), async (req, res) => {
  // Webhook payload includes:
  // - foreign_id: Your reference ID from the original request
  // - status: 'delivered', 'failed', or 'opted_out'
  // - phone_number: Recipient's phone number
  // - reason: Error details (if failed)
  
  const { foreign_id, status, phone_number, reason } = req.body;
  
  console.log(`Drop Cowboy callback: ${foreign_id} - ${status}`);
  
  // Update your database
  await db.campaigns.update({
    where: { id: foreign_id },
    data: { 
      status: status,
      delivered_at: status === 'delivered' ? new Date() : null,
      error_reason: reason
    }
  });
  
  // Always respond with 200 OK
  res.status(200).send('OK');
});

app.listen(3000, () => {
  console.log('Webhook server running on port 3000');
});

Need Help with Integration?

Whether you're just getting started or working on a complex integration, our support team and dedicated account managers are ready to help. Get implementation guidance, technical support, and best practices directly from the experts.

Frequently Asked Questions

Common questions about our API and developer tools

Create an API key in your Drop Cowboy dashboard, then add it as the auth header exactly as shown in our GitBook documentation. Import the Postman collection and run a sample call to verify 200 OK. Never place keys in client-side code; rotate keys from the dashboard when needed.
Create a request to Drop Cowboy's API with your audio (uploaded or hosted), recipient numbers, and a foreign_id containing your own record identifier (typically a database ID). Your request is immediately queued and Drop Cowboy processes it automatically, sending the ringless voicemail if it's within federal/state TCPA hours for that contact. If outside TCPA hours, the request remains queued until the next compliant window. Track delivery via webhooks—your foreign_id is included in all callbacks. Our Postman collection includes a working example you can duplicate and adapt.
Call Drop Cowboy's SMS endpoint with the sender, message body, and recipient. Send one API request per contact with fully personalized content already merged from your system. Your request is queued and sent immediately if within TCPA hours for that contact, otherwise queued until the next compliant window. Track delivery via webhooks for complete message lifecycle. Accounts needing more than 1,000 requests per second require support team approval.
Use Drop Cowboy's list endpoints to organize contacts for campaign targeting. First, create a list using the list creation endpoint, then add contacts in bulk using the contacts endpoint with fields and values arrays (up to 10,000 contacts per call). Each list can represent a segment—create as many lists as you need. This two-step process (create list, then populate contacts) gives you complete control over segmentation and targeting for your campaigns.
Enable webhooks for opt-out events and immediately add numbers to your suppression list. Before sending, pass suppression parameters or pre-check numbers. For SMS, STOP keywords are processed automatically by Drop Cowboy; your webhook lets you mirror changes in your CRM.
Drop Cowboy automatically handles TCPA compliance for you. When you submit an API request, it's immediately queued. Drop Cowboy processes the queue and sends your message if it's within federal/state TCPA hours for that contact. If outside compliant hours, your request remains queued and automatically sends during the next TCPA window for that contact. No manual scheduling needed—TCPA compliance is built-in.
Configure webhooks in your Drop Cowboy dashboard for delivery, failures, opt-outs, and completion events. Drop Cowboy includes your foreign_id in every webhook callback, allowing you to identify which record the event relates to. Alternatively, pass a custom callback_url with your record identifier in the URL (e.g., https://example.com/dropcowboy/result/12345). Validate webhook signatures and store the event payload to update your campaign records. Webhooks are the primary method for receiving delivery status updates.
Upload media per the Drop Cowboy documentation or reference a secure, publicly reachable URL. Use supported formats and keep file sizes within documented limits. Reuse media IDs for future campaigns to avoid duplicate uploads and speed up your send pipeline.
Trigger Drop Cowboy API calls from your workflows (e.g., CRM events, Zapier, CRON). Store templates in your app, inject variables, and call the API with the rendered payload. Use webhooks to chain follow-up actions based on delivery or opt-out events.
Drop Cowboy queues all API requests for processing. Standard accounts can send up to 1,000 requests per second—accounts needing higher throughput must contact Drop Cowboy's support team for approval. Handle HTTP 429/5xx with exponential backoff and honor Retry-After headers. Don't retry 4xx validation errors—fix the payload instead. Log request IDs, validate numbers early, and implement idempotency keys or de-duplication to prevent accidental re-sends. See Drop Cowboy's GitBook documentation for detailed rate limit information.

Ready to Transform Your Outreach?

Join 20,000+ businesses achieving 5-20x higher response rates with Drop Cowboy®