通过 OAuth 认证网关管理 Stripe 客户、订阅、发票、产品、价格和支付。
设计与多媒体
ClickSend
试用通过托管认证调用 ClickSend API,发送 SMS、MMS 与语音消息,每次写入操作均需用户确认。
它能做什么
通过 api.maton.ai 代理网关调用 ClickSend API,认证由网关统一管理。可向 E.164 号码发送 SMS 与 MMS,以多种语言发起语音呼叫,并查询发送历史与回执。支持 SMS 模板、联系人列表、单条联系人(新增、修改、复制、转移)以及已验证发件邮箱地址的增删改查。所有写入操作都必须经过用户明确确认;发送短信、彩信或语音会触达真实收件人并可能产生费用,因此执行前应核对收件人、内容与发送时间。
什么时候用它
- 向客户手机号发送事务性 SMS
- 查询近期短信任务的发送回执
- 在 ClickSend 中创建并维护联系人列表
- 用指定语言安排一条语音呼叫
技能文档
ClickSend
Access the ClickSend API with managed authentication. Send SMS, MMS, and voice messages, manage contacts and lists, and track message delivery.
Quick Start
# Get account info
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/clicksend/v3/account')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Base URL
https://api.maton.ai/clicksend/{native-api-path}
Maton proxies requests to rest.clicksend.com and automatically injects your authentication.
Authentication
All requests require the Maton API key in the Authorization header:
Authorization: Bearer $MATON_API_KEY
Environment Variable: Set your API key as MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"
Getting Your API Key
- Sign in or create an account at maton.ai
- Go to maton.ai/settings
- Copy your API key
Connection Management
Manage your ClickSend connections at https://api.maton.ai.
List Connections
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections?app=clicksend&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Create Connection
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'clicksend'}).encode()
req = urllib.request.Request('https://api.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Get Connection
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Response:
{
"connection": {
"connection_id": "{connection_id}",
"status": "ACTIVE",
"creation_time": "2026-02-10T10:04:12.418030Z",
"last_updated_time": "2026-02-10T10:06:17.059090Z",
"url": "https://connect.maton.ai/?session_token=...",
"app": "clicksend",
"metadata": {}
}
}
Delete Connection
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Specifying Connection
If you have multiple ClickSend connections, specify which one to use with the Maton-Connection header:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/clicksend/v3/account')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '{connection_id}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
If you have multiple connections, always include this header to ensure requests go to the intended account.
Security & Permissions
- Access is scoped to SMS, MMS, voice messages, contacts, lists, verified email addresses, and account info within the connected ClickSend account.
- All write operations require explicit user approval. Before executing any create, update, or delete call, confirm the target resource and intended effect with the user.
- Messaging operations (SMS, MMS, voice) deliver to real recipients and may incur costs. Confirm the recipient, content, and timing before sending.
- Email address management modifies verified sender identities on the account. Deleting a verified address may affect other services that depend on it. Confirm before modifying.
API Reference
Response Format
All ClickSend API responses follow this structure:
{
"http_code": 200,
"response_code": "SUCCESS",
"response_msg": "Description of the result",
"data": { ... }
}
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": "user@example.com",
"user_email": "user@example.com",
"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": "john@example.com",
"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": "john@example.com"
}
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
Account configuration. These endpoints manage verified sender email addresses on the ClickSend account. Adding or deleting addresses affects which sender identities are available for email campaigns. Confirm the address and intent with the user before modifying.
List Verified Email Addresses
GET /clicksend/v3/email/addresses
Add Email Address
POST /clicksend/v3/email/addresses
Content-Type: application/json
{
"email_address": "sender@example.com"
}
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.maton.ai/clicksend/v3/sms/send',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.MATON_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
messages: [
{
to: '+15551234567',
body: 'Hello from ClickSend!',
source: 'api'
}
]
})
}
);
const data = await response.json();
console.log(data);
Python
import os
import requests
response = requests.post(
'https://api.maton.ai/clicksend/v3/sms/send',
headers={
'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}',
'Content-Type': 'application/json'
},
json={
'messages': [
{
'to': '+15551234567',
'body': 'Hello from ClickSend!',
'source': 'api'
}
]
}
)
data = response.json()
print(f"Status: {data['response_code']}")
Notes
- Phone numbers must be in E.164 format (e.g.,
+15551234567) - All timestamps are Unix timestamps (seconds since epoch)
- Use
sourcefield 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
- IMPORTANT: When using curl commands, use
curl -gwhen URLs contain brackets to disable glob parsing - IMPORTANT: When piping curl output to
jqor other commands, environment variables like$MATON_API_KEYmay not expand correctly in some shell environments
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 successfullyFORBIDDEN- Access denied to resourceBAD_REQUEST- Invalid request parametersINVALID_RECIPIENT- Invalid phone number
Troubleshooting: API Key Issues
- Check that the
MATON_API_KEYenvironment variable is set:
echo $MATON_API_KEY
- Verify the API key is valid by listing connections:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Troubleshooting: Invalid App Name
- Ensure your URL path starts with
clicksend. For example:
- Correct:
https://api.maton.ai/clicksend/v3/account - Incorrect:
https://api.maton.ai/v3/account
Resources
相关技能
通过托管 OAuth 访问 Microsoft Graph Excel 接口,读写 OneDrive 中的工作簿、工作表、区域、表格与图表。
通过托管的 OAuth GraphQL 接口查询与管理 Linear 的 issue、项目、团队、周期、标签和评论。
通过托管 OAuth 代理访问 YouTube Data API v3,搜索与管理视频、播放列表、频道、订阅和评论。
通过一次 REST API 调用,向 10 个社交平台发布视频、图片、文字与文档。
在本地磁盘以分类纯 Markdown 文件保存需要长期留存的事实,与智能体内置记忆并存。
byungkyu 的更多技能
浏览全部技能通过托管 OAuth 访问 Microsoft Graph Excel 接口,读写 OneDrive 中的工作簿、工作表、区域、表格与图表。
通过托管的 OAuth GraphQL 接口查询与管理 Linear 的 issue、项目、团队、周期、标签和评论。
通过 OAuth 认证网关管理 Stripe 客户、订阅、发票、产品、价格和支付。
通过托管 OAuth 代理访问 YouTube Data API v3,搜索与管理视频、播放列表、频道、订阅和评论。
通过托管 OAuth 代理调用 WooCommerce REST API,管理商品、订单、客户、优惠券、物流、税务等数据。
通过托管 OAuth 认证,访问并管理 ClickUp 工作区、空间、文件夹、清单与任务等数据。