← Back to Skills Marketplace
alvisdunlop

clicksend

by AlvisDunlop · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ Security Clean
94
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install alv-clicksend
Description
SkillBoss API Hub integration for SMS/MMS messaging and voice calls. Send SMS, MMS, and voice messages, manage contacts and lists. Use this skill when users...
README (SKILL.md)

ClickSend via SkillBoss API Hub

Send SMS, MMS, and voice messages via SkillBoss API Hub. Manage contacts and lists, and track message delivery.

Quick Start

import requests, os

SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]

response = requests.post(
    "https://api.skillboss.com/v1/run",
    headers={
        "Authorization": f"Bearer {SKILLBOSS_API_KEY}",
        "Content-Type": "application/json"
    },
    json={
        "model": "prelude/notify-send",
        "inputs": {
            "template_id": "your_template_id",  # Configure in Prelude dashboard
            "to": "+15551234567",
            "variables": {"message": "Hello from SkillBoss!"}
        }
    }
)
result = response.json()
print(result)

Base URL

https://api.skillboss.com/v1/run

All SMS requests are routed through SkillBoss API Hub using the /v1/run endpoint with Prelude as the SMS provider. Note: prelude/notify-send requires a template pre-configured in the Prelude dashboard. For OTP verification, use prelude/verify-send / prelude/verify-check.

Authentication

All requests require the SkillBoss API key in the Authorization header:

Authorization: Bearer $SKILLBOSS_API_KEY

Environment Variable: Set your API key as SKILLBOSS_API_KEY:

export SKILLBOSS_API_KEY="YOUR_API_KEY"

Getting Your API Key

  1. Sign in or create an account at heybossai.com
  2. Go to your account settings
  3. Copy your API key

API Reference

Response Format

All SkillBoss API Hub responses follow this structure:

{
  "status": "success",
  "result": { ... }
}

Account

Get Account

GET /clicksend/v3/account

Response:

{
  "http_code": 200,
  "response_code": "SUCCESS",
  "response_msg": "Here's your account",
  "data": {
    "user_id": 672721,
    "username": "[email protected]",
    "user_email": "[email protected]",
    "balance": "2.005718",
    "user_phone": "+18019234886",
    "user_first_name": "John",
    "user_last_name": "Doe",
    "country": "US",
    "default_country_sms": "US",
    "timezone": "America/Chicago",
    "_currency": {
      "currency_name_short": "USD",
      "currency_prefix_d": "$"
    }
  }
}

SMS

Send SMS

POST /clicksend/v3/sms/send
Content-Type: application/json

{
  "messages": [
    {
      "to": "+15551234567",
      "body": "Hello from ClickSend!",
      "source": "api"
    }
  ]
}

Parameters:

Field Type Description
to string Recipient phone number (E.164 format)
body string SMS message content
source string Source identifier (e.g., "api", "sdk")
from string Sender ID (optional)
schedule int Unix timestamp for scheduled send (optional)
custom_string string Custom reference (optional)

Get SMS Price

POST /clicksend/v3/sms/price
Content-Type: application/json

{
  "messages": [
    {
      "to": "+15551234567",
      "body": "Test message",
      "source": "api"
    }
  ]
}

SMS History

GET /clicksend/v3/sms/history

Query Parameters:

Parameter Description
date_from Unix timestamp for start date
date_to Unix timestamp for end date
page Page number (default: 1)
limit Results per page (default: 15)

Inbound SMS

GET /clicksend/v3/sms/inbound

SMS Receipts (Delivery Reports)

GET /clicksend/v3/sms/receipts

Cancel Scheduled SMS

PUT /clicksend/v3/sms/{message_id}/cancel

Cancel All Scheduled SMS

PUT /clicksend/v3/sms/cancel-all

SMS Templates

List Templates

GET /clicksend/v3/sms/templates

Response:

{
  "http_code": 200,
  "response_code": "SUCCESS",
  "response_msg": "Here are your templates.",
  "data": {
    "total": 1,
    "per_page": 15,
    "current_page": 1,
    "data": [
      {
        "template_id": 632497,
        "body": "Hello {name}, this is a test message.",
        "template_name": "Test Template"
      }
    ]
  }
}

Create Template

POST /clicksend/v3/sms/templates
Content-Type: application/json

{
  "template_name": "Welcome Message",
  "body": "Hello {name}, welcome to our service!"
}

Update Template

PUT /clicksend/v3/sms/templates/{template_id}
Content-Type: application/json

{
  "template_name": "Updated Template",
  "body": "Updated message content"
}

Delete Template

DELETE /clicksend/v3/sms/templates/{template_id}

MMS

Send MMS

POST /clicksend/v3/mms/send
Content-Type: application/json

{
  "messages": [
    {
      "to": "+15551234567",
      "body": "Check out this image!",
      "media_file": "https://example.com/image.jpg",
      "source": "api"
    }
  ]
}

MMS History

GET /clicksend/v3/mms/history

Get MMS Price

POST /clicksend/v3/mms/price
Content-Type: application/json

{
  "messages": [...]
}

MMS Receipts

GET /clicksend/v3/mms/receipts

Voice

Send Voice Message

POST /clicksend/v3/voice/send
Content-Type: application/json

{
  "messages": [
    {
      "to": "+15551234567",
      "body": "Hello, this is a voice message.",
      "voice": "female",
      "lang": "en-us",
      "source": "api"
    }
  ]
}

Voice Parameters:

Field Description
to Recipient phone number
body Text to be spoken
voice Voice gender: male or female
lang Language code (e.g., en-us, en-gb, de-de)
schedule Unix timestamp for scheduled call
require_input Require keypad input (0-1)
machine_detection Detect answering machine (0-1)

Available Languages

GET /clicksend/v3/voice/lang

Returns list of supported languages with codes and available genders.

Voice History

GET /clicksend/v3/voice/history

Note: Requires voice access enabled on account.

Get Voice Price

POST /clicksend/v3/voice/price

Cancel Voice Message

PUT /clicksend/v3/voice/{message_id}/cancel

Contact Lists

List All Lists

GET /clicksend/v3/lists

Response:

{
  "http_code": 200,
  "response_code": "SUCCESS",
  "response_msg": "Here are your contact lists.",
  "data": {
    "total": 2,
    "data": [
      {
        "list_id": 3555277,
        "list_name": "Opt-Out List",
        "_contacts_count": 0
      },
      {
        "list_id": 3555278,
        "list_name": "Example List",
        "_contacts_count": 10
      }
    ]
  }
}

Get List

GET /clicksend/v3/lists/{list_id}

Create List

POST /clicksend/v3/lists
Content-Type: application/json

{
  "list_name": "My New List"
}

Update List

PUT /clicksend/v3/lists/{list_id}
Content-Type: application/json

{
  "list_name": "Updated List Name"
}

Delete List

DELETE /clicksend/v3/lists/{list_id}

Remove Duplicates

PUT /clicksend/v3/lists/{list_id}/remove-duplicates

Contacts

List Contacts in a List

GET /clicksend/v3/lists/{list_id}/contacts

Query Parameters:

Parameter Description
page Page number
limit Results per page
updated_after Filter contacts updated after timestamp

Get Contact

GET /clicksend/v3/lists/{list_id}/contacts/{contact_id}

Response:

{
  "http_code": 200,
  "response_code": "SUCCESS",
  "data": {
    "contact_id": 1581565666,
    "list_id": 3555278,
    "phone_number": "+18019234886",
    "first_name": "John",
    "last_name": "Doe",
    "email": "[email protected]",
    "custom_1": "",
    "custom_2": "",
    "custom_3": "",
    "custom_4": "",
    "organization_name": "",
    "address_city": "",
    "address_state": "",
    "address_country": "US"
  }
}

Create Contact

POST /clicksend/v3/lists/{list_id}/contacts
Content-Type: application/json

{
  "phone_number": "+15551234567",
  "first_name": "John",
  "last_name": "Doe",
  "email": "[email protected]"
}

Contact Fields:

Field Description
phone_number Phone number (E.164 format)
first_name First name
last_name Last name
email Email address
fax_number Fax number
organization_name Company name
custom_1 - custom_4 Custom fields
address_line_1, address_line_2 Address
address_city, address_state, address_postal_code, address_country Address components

Update Contact

PUT /clicksend/v3/lists/{list_id}/contacts/{contact_id}
Content-Type: application/json

{
  "first_name": "Jane",
  "last_name": "Smith"
}

Delete Contact

DELETE /clicksend/v3/lists/{list_id}/contacts/{contact_id}

Copy Contact to Another List

PUT /clicksend/v3/lists/{from_list_id}/contacts/{contact_id}/copy/{to_list_id}

Transfer Contact to Another List

PUT /clicksend/v3/lists/{from_list_id}/contacts/{contact_id}/transfer/{to_list_id}

Email Addresses

List Verified Email Addresses

GET /clicksend/v3/email/addresses

Add Email Address

POST /clicksend/v3/email/addresses
Content-Type: application/json

{
  "email_address": "[email protected]"
}

Delete Email Address

DELETE /clicksend/v3/email/addresses/{email_address_id}

Utility Endpoints

List Countries

GET /clicksend/v3/countries

Returns list of all supported countries with codes.


Pagination

ClickSend uses page-based pagination:

GET /clicksend/v3/lists?page=2&limit=50

Response includes:

{
  "data": {
    "total": 100,
    "per_page": 50,
    "current_page": 2,
    "last_page": 2,
    "next_page_url": null,
    "prev_page_url": "...?page=1",
    "from": 51,
    "to": 100,
    "data": [...]
  }
}

Parameters:

  • page - Page number (default: 1)
  • limit - Results per page (default: 15)

Code Examples

JavaScript

const response = await fetch(
  'https://api.skillboss.com/v1/run',
  {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.SKILLBOSS_API_KEY}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      model: 'prelude/notify-send',
      inputs: {
        template_id: 'your_template_id',
        to: '+15551234567',
        variables: { message: 'Hello from SkillBoss!' }
      }
    })
  }
);
const data = await response.json();
const result = data.result;
console.log(result);

Python

import os
import requests

SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]

response = requests.post(
    "https://api.skillboss.com/v1/run",
    headers={
        "Authorization": f"Bearer {SKILLBOSS_API_KEY}",
        "Content-Type": "application/json"
    },
    json={
        "model": "prelude/notify-send",
        "inputs": {
            "template_id": "your_template_id",
            "to": "+15551234567",
            "variables": {"message": "Hello from SkillBoss!"}
        }
    }
)
result = response.json()
print(result)

Notes

  • Phone numbers must be in E.164 format (e.g., +15551234567)
  • All timestamps are Unix timestamps (seconds since epoch)
  • Use source field to identify your application in analytics
  • Templates support placeholders like {name}, {custom_1}, etc.
  • SMS messages over 160 characters are split into multiple segments
  • Voice access requires account-level permissions
  • All requests use the /v1/run endpoint: https://api.skillboss.com/v1/run
  • SkillBoss API Hub automatically routes to the optimal SMS provider

Error Handling

Status Meaning
200 Success
400 Bad request
401 Unauthorized - invalid credentials
403 Forbidden - insufficient permissions
404 Resource not found
429 Rate limited
500 Internal server error

Response codes:

  • SUCCESS - Operation completed successfully
  • FORBIDDEN - Access denied to resource
  • BAD_REQUEST - Invalid request parameters
  • INVALID_RECIPIENT - Invalid phone number

Troubleshooting: API Key Issues

  1. Check that the SKILLBOSS_API_KEY environment variable is set:
echo $SKILLBOSS_API_KEY
  1. Verify the API key is valid by making a test request:
python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.skillboss.com/v1/run')
req.add_header('Authorization', f'Bearer {os.environ["SKILLBOSS_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
import urllib.parse
data = json.dumps({'discover': True}).encode()
req.data = data
req.method = 'POST'
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Resources

Usage Guidance
This skill appears to be an instruction-only integration that calls the SkillBoss API Hub using SKILLBOSS_API_KEY. Before installing: verify that you intend to give the skill an API key for your SkillBoss account (this key can send SMS/voice and may incur charges); confirm whether SkillBoss is actually proxying ClickSend or another provider (the skill's name and the document's ClickSend examples are inconsistent); consider restricting the agent so it cannot send messages without explicit confirmation (to avoid accidental charges or data leaks); and monitor API key usage and billing after enabling the skill.
Capability Analysis
Type: OpenClaw Skill Name: alv-clicksend Version: 1.0.0 The skill bundle provides documentation and code examples for integrating ClickSend SMS/MMS services via the SkillBoss API Hub (api.skillboss.com). It correctly identifies the need for a SKILLBOSS_API_KEY environment variable and includes standard troubleshooting scripts and API references consistent with its stated purpose. No evidence of malicious intent, data exfiltration, or prompt injection was found in SKILL.md or _meta.json.
Capability Tags
requires-sensitive-credentials
Capability Assessment
Purpose & Capability
The SKILL.md consistently describes using SkillBoss (api.skillboss.com/v1/run) and requires only SKILLBOSS_API_KEY, which is appropriate for an API-hub-style SMS/voice integration. However, the skill is named 'clicksend' and includes ClickSend-style /clicksend/v3/ endpoint examples — this naming/documentation mismatch should be clarified (likely documentation mapping rather than an actual direct ClickSend dependency).
Instruction Scope
The instructions instruct the agent to call SkillBoss endpoints with the declared SKILLBOSS_API_KEY and provide example payloads. They do not direct the agent to read unrelated files, environment variables, or system state, nor to exfiltrate data to unexpected endpoints.
Install Mechanism
No install spec and no code files (instruction-only SKILL.md). This minimizes disk/write risk; nothing is downloaded or installed by the skill itself.
Credentials
Only SKILLBOSS_API_KEY is required, which is proportional to a service that proxies SMS/voice providers. No unrelated credentials or broad environment access are requested.
Persistence & Privilege
always is false and autonomous invocation is allowed (platform default). There is no request for permanent elevated presence or modification of other skills' configs.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install alv-clicksend
  3. After installation, invoke the skill by name or use /alv-clicksend
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release of the ClickSend integration via SkillBoss API Hub. - Send SMS, MMS, and voice messages using a unified SkillBoss API. - Manage contacts and contact lists, including creation, updating, and deletion. - Support for SMS/MMS/voice history, delivery receipts, templates, and pricing queries. - Detailed API documentation and code examples provided for quick onboarding. - Requires SkillBoss API key for authentication.
Metadata
Slug alv-clicksend
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is clicksend?

SkillBoss API Hub integration for SMS/MMS messaging and voice calls. Send SMS, MMS, and voice messages, manage contacts and lists. Use this skill when users... It is an AI Agent Skill for Claude Code / OpenClaw, with 94 downloads so far.

How do I install clicksend?

Run "/install alv-clicksend" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is clicksend free?

Yes, clicksend is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does clicksend support?

clicksend is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created clicksend?

It is built and maintained by AlvisDunlop (@alvisdunlop); the current version is v1.0.0.

💬 Comments