{
  "schemaVersion": "1.0",
  "item": {
    "slug": "clicksend",
    "name": "ClickSend",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/byungkyu/clicksend",
    "canonicalUrl": "https://clawhub.ai/byungkyu/clicksend",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/clicksend",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=clicksend",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "LICENSE.txt"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/clicksend"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/clicksend",
    "agentPageUrl": "https://openagent3.xyz/skills/clicksend/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clicksend/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clicksend/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "ClickSend",
        "body": "Access the ClickSend API with managed authentication. Send SMS, MMS, and voice messages, manage contacts and lists, and track message delivery."
      },
      {
        "title": "Quick Start",
        "body": "# Get account info\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://gateway.maton.ai/clicksend/v3/account')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF"
      },
      {
        "title": "Base URL",
        "body": "https://gateway.maton.ai/clicksend/{native-api-path}\n\nReplace {native-api-path} with the actual ClickSend API endpoint path. The gateway proxies requests to rest.clicksend.com and automatically injects your authentication."
      },
      {
        "title": "Authentication",
        "body": "All requests require the Maton API key in the Authorization header:\n\nAuthorization: Bearer $MATON_API_KEY\n\nEnvironment Variable: Set your API key as MATON_API_KEY:\n\nexport MATON_API_KEY=\"YOUR_API_KEY\""
      },
      {
        "title": "Getting Your API Key",
        "body": "Sign in or create an account at maton.ai\nGo to maton.ai/settings\nCopy your API key"
      },
      {
        "title": "Connection Management",
        "body": "Manage your ClickSend connections at https://ctrl.maton.ai."
      },
      {
        "title": "List Connections",
        "body": "python <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections?app=clicksend&status=ACTIVE')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF"
      },
      {
        "title": "Create Connection",
        "body": "python <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({'app': 'clicksend'}).encode()\nreq = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF"
      },
      {
        "title": "Get Connection",
        "body": "python <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n\nResponse:\n\n{\n  \"connection\": {\n    \"connection_id\": \"37beee67-29f7-43b6-b0b2-5f0f7a5d6440\",\n    \"status\": \"ACTIVE\",\n    \"creation_time\": \"2026-02-10T10:04:12.418030Z\",\n    \"last_updated_time\": \"2026-02-10T10:06:17.059090Z\",\n    \"url\": \"https://connect.maton.ai/?session_token=...\",\n    \"app\": \"clicksend\",\n    \"metadata\": {}\n  }\n}"
      },
      {
        "title": "Delete Connection",
        "body": "python <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF"
      },
      {
        "title": "Specifying Connection",
        "body": "If you have multiple ClickSend connections, specify which one to use with the Maton-Connection header:\n\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://gateway.maton.ai/clicksend/v3/account')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Maton-Connection', '37beee67-29f7-43b6-b0b2-5f0f7a5d6440')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n\nIf omitted, the gateway uses the default (oldest) active connection."
      },
      {
        "title": "Response Format",
        "body": "All ClickSend API responses follow this structure:\n\n{\n  \"http_code\": 200,\n  \"response_code\": \"SUCCESS\",\n  \"response_msg\": \"Description of the result\",\n  \"data\": { ... }\n}"
      },
      {
        "title": "Get Account",
        "body": "GET /clicksend/v3/account\n\nResponse:\n\n{\n  \"http_code\": 200,\n  \"response_code\": \"SUCCESS\",\n  \"response_msg\": \"Here's your account\",\n  \"data\": {\n    \"user_id\": 672721,\n    \"username\": \"user@example.com\",\n    \"user_email\": \"user@example.com\",\n    \"balance\": \"2.005718\",\n    \"user_phone\": \"+18019234886\",\n    \"user_first_name\": \"John\",\n    \"user_last_name\": \"Doe\",\n    \"country\": \"US\",\n    \"default_country_sms\": \"US\",\n    \"timezone\": \"America/Chicago\",\n    \"_currency\": {\n      \"currency_name_short\": \"USD\",\n      \"currency_prefix_d\": \"$\"\n    }\n  }\n}"
      },
      {
        "title": "Send SMS",
        "body": "POST /clicksend/v3/sms/send\nContent-Type: application/json\n\n{\n  \"messages\": [\n    {\n      \"to\": \"+15551234567\",\n      \"body\": \"Hello from ClickSend!\",\n      \"source\": \"api\"\n    }\n  ]\n}\n\nParameters:\n\nFieldTypeDescriptiontostringRecipient phone number (E.164 format)bodystringSMS message contentsourcestringSource identifier (e.g., \"api\", \"sdk\")fromstringSender ID (optional)scheduleintUnix timestamp for scheduled send (optional)custom_stringstringCustom reference (optional)"
      },
      {
        "title": "Get SMS Price",
        "body": "POST /clicksend/v3/sms/price\nContent-Type: application/json\n\n{\n  \"messages\": [\n    {\n      \"to\": \"+15551234567\",\n      \"body\": \"Test message\",\n      \"source\": \"api\"\n    }\n  ]\n}"
      },
      {
        "title": "SMS History",
        "body": "GET /clicksend/v3/sms/history\n\nQuery Parameters:\n\nParameterDescriptiondate_fromUnix timestamp for start datedate_toUnix timestamp for end datepagePage number (default: 1)limitResults per page (default: 15)"
      },
      {
        "title": "Inbound SMS",
        "body": "GET /clicksend/v3/sms/inbound"
      },
      {
        "title": "SMS Receipts (Delivery Reports)",
        "body": "GET /clicksend/v3/sms/receipts"
      },
      {
        "title": "Cancel Scheduled SMS",
        "body": "PUT /clicksend/v3/sms/{message_id}/cancel"
      },
      {
        "title": "Cancel All Scheduled SMS",
        "body": "PUT /clicksend/v3/sms/cancel-all"
      },
      {
        "title": "List Templates",
        "body": "GET /clicksend/v3/sms/templates\n\nResponse:\n\n{\n  \"http_code\": 200,\n  \"response_code\": \"SUCCESS\",\n  \"response_msg\": \"Here are your templates.\",\n  \"data\": {\n    \"total\": 1,\n    \"per_page\": 15,\n    \"current_page\": 1,\n    \"data\": [\n      {\n        \"template_id\": 632497,\n        \"body\": \"Hello {name}, this is a test message.\",\n        \"template_name\": \"Test Template\"\n      }\n    ]\n  }\n}"
      },
      {
        "title": "Create Template",
        "body": "POST /clicksend/v3/sms/templates\nContent-Type: application/json\n\n{\n  \"template_name\": \"Welcome Message\",\n  \"body\": \"Hello {name}, welcome to our service!\"\n}"
      },
      {
        "title": "Update Template",
        "body": "PUT /clicksend/v3/sms/templates/{template_id}\nContent-Type: application/json\n\n{\n  \"template_name\": \"Updated Template\",\n  \"body\": \"Updated message content\"\n}"
      },
      {
        "title": "Delete Template",
        "body": "DELETE /clicksend/v3/sms/templates/{template_id}"
      },
      {
        "title": "Send MMS",
        "body": "POST /clicksend/v3/mms/send\nContent-Type: application/json\n\n{\n  \"messages\": [\n    {\n      \"to\": \"+15551234567\",\n      \"body\": \"Check out this image!\",\n      \"media_file\": \"https://example.com/image.jpg\",\n      \"source\": \"api\"\n    }\n  ]\n}"
      },
      {
        "title": "MMS History",
        "body": "GET /clicksend/v3/mms/history"
      },
      {
        "title": "Get MMS Price",
        "body": "POST /clicksend/v3/mms/price\nContent-Type: application/json\n\n{\n  \"messages\": [...]\n}"
      },
      {
        "title": "MMS Receipts",
        "body": "GET /clicksend/v3/mms/receipts"
      },
      {
        "title": "Send Voice Message",
        "body": "POST /clicksend/v3/voice/send\nContent-Type: application/json\n\n{\n  \"messages\": [\n    {\n      \"to\": \"+15551234567\",\n      \"body\": \"Hello, this is a voice message.\",\n      \"voice\": \"female\",\n      \"lang\": \"en-us\",\n      \"source\": \"api\"\n    }\n  ]\n}\n\nVoice Parameters:\n\nFieldDescriptiontoRecipient phone numberbodyText to be spokenvoiceVoice gender: male or femalelangLanguage code (e.g., en-us, en-gb, de-de)scheduleUnix timestamp for scheduled callrequire_inputRequire keypad input (0-1)machine_detectionDetect answering machine (0-1)"
      },
      {
        "title": "Available Languages",
        "body": "GET /clicksend/v3/voice/lang\n\nReturns list of supported languages with codes and available genders."
      },
      {
        "title": "Voice History",
        "body": "GET /clicksend/v3/voice/history\n\nNote: Requires voice access enabled on account."
      },
      {
        "title": "Get Voice Price",
        "body": "POST /clicksend/v3/voice/price"
      },
      {
        "title": "Cancel Voice Message",
        "body": "PUT /clicksend/v3/voice/{message_id}/cancel"
      },
      {
        "title": "List All Lists",
        "body": "GET /clicksend/v3/lists\n\nResponse:\n\n{\n  \"http_code\": 200,\n  \"response_code\": \"SUCCESS\",\n  \"response_msg\": \"Here are your contact lists.\",\n  \"data\": {\n    \"total\": 2,\n    \"data\": [\n      {\n        \"list_id\": 3555277,\n        \"list_name\": \"Opt-Out List\",\n        \"_contacts_count\": 0\n      },\n      {\n        \"list_id\": 3555278,\n        \"list_name\": \"Example List\",\n        \"_contacts_count\": 10\n      }\n    ]\n  }\n}"
      },
      {
        "title": "Get List",
        "body": "GET /clicksend/v3/lists/{list_id}"
      },
      {
        "title": "Create List",
        "body": "POST /clicksend/v3/lists\nContent-Type: application/json\n\n{\n  \"list_name\": \"My New List\"\n}"
      },
      {
        "title": "Update List",
        "body": "PUT /clicksend/v3/lists/{list_id}\nContent-Type: application/json\n\n{\n  \"list_name\": \"Updated List Name\"\n}"
      },
      {
        "title": "Delete List",
        "body": "DELETE /clicksend/v3/lists/{list_id}"
      },
      {
        "title": "Remove Duplicates",
        "body": "PUT /clicksend/v3/lists/{list_id}/remove-duplicates"
      },
      {
        "title": "List Contacts in a List",
        "body": "GET /clicksend/v3/lists/{list_id}/contacts\n\nQuery Parameters:\n\nParameterDescriptionpagePage numberlimitResults per pageupdated_afterFilter contacts updated after timestamp"
      },
      {
        "title": "Get Contact",
        "body": "GET /clicksend/v3/lists/{list_id}/contacts/{contact_id}\n\nResponse:\n\n{\n  \"http_code\": 200,\n  \"response_code\": \"SUCCESS\",\n  \"data\": {\n    \"contact_id\": 1581565666,\n    \"list_id\": 3555278,\n    \"phone_number\": \"+18019234886\",\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"email\": \"john@example.com\",\n    \"custom_1\": \"\",\n    \"custom_2\": \"\",\n    \"custom_3\": \"\",\n    \"custom_4\": \"\",\n    \"organization_name\": \"\",\n    \"address_city\": \"\",\n    \"address_state\": \"\",\n    \"address_country\": \"US\"\n  }\n}"
      },
      {
        "title": "Create Contact",
        "body": "POST /clicksend/v3/lists/{list_id}/contacts\nContent-Type: application/json\n\n{\n  \"phone_number\": \"+15551234567\",\n  \"first_name\": \"John\",\n  \"last_name\": \"Doe\",\n  \"email\": \"john@example.com\"\n}\n\nContact Fields:\n\nFieldDescriptionphone_numberPhone number (E.164 format)first_nameFirst namelast_nameLast nameemailEmail addressfax_numberFax numberorganization_nameCompany namecustom_1 - custom_4Custom fieldsaddress_line_1, address_line_2Addressaddress_city, address_state, address_postal_code, address_countryAddress components"
      },
      {
        "title": "Update Contact",
        "body": "PUT /clicksend/v3/lists/{list_id}/contacts/{contact_id}\nContent-Type: application/json\n\n{\n  \"first_name\": \"Jane\",\n  \"last_name\": \"Smith\"\n}"
      },
      {
        "title": "Delete Contact",
        "body": "DELETE /clicksend/v3/lists/{list_id}/contacts/{contact_id}"
      },
      {
        "title": "Copy Contact to Another List",
        "body": "PUT /clicksend/v3/lists/{from_list_id}/contacts/{contact_id}/copy/{to_list_id}"
      },
      {
        "title": "Transfer Contact to Another List",
        "body": "PUT /clicksend/v3/lists/{from_list_id}/contacts/{contact_id}/transfer/{to_list_id}"
      },
      {
        "title": "List Verified Email Addresses",
        "body": "GET /clicksend/v3/email/addresses"
      },
      {
        "title": "Add Email Address",
        "body": "POST /clicksend/v3/email/addresses\nContent-Type: application/json\n\n{\n  \"email_address\": \"sender@example.com\"\n}"
      },
      {
        "title": "Delete Email Address",
        "body": "DELETE /clicksend/v3/email/addresses/{email_address_id}"
      },
      {
        "title": "List Countries",
        "body": "GET /clicksend/v3/countries\n\nReturns list of all supported countries with codes."
      },
      {
        "title": "Pagination",
        "body": "ClickSend uses page-based pagination:\n\nGET /clicksend/v3/lists?page=2&limit=50\n\nResponse includes:\n\n{\n  \"data\": {\n    \"total\": 100,\n    \"per_page\": 50,\n    \"current_page\": 2,\n    \"last_page\": 2,\n    \"next_page_url\": null,\n    \"prev_page_url\": \"...?page=1\",\n    \"from\": 51,\n    \"to\": 100,\n    \"data\": [...]\n  }\n}\n\nParameters:\n\npage - Page number (default: 1)\nlimit - Results per page (default: 15)"
      },
      {
        "title": "JavaScript",
        "body": "const response = await fetch(\n  'https://gateway.maton.ai/clicksend/v3/sms/send',\n  {\n    method: 'POST',\n    headers: {\n      'Authorization': `Bearer ${process.env.MATON_API_KEY}`,\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({\n      messages: [\n        {\n          to: '+15551234567',\n          body: 'Hello from ClickSend!',\n          source: 'api'\n        }\n      ]\n    })\n  }\n);\nconst data = await response.json();\nconsole.log(data);"
      },
      {
        "title": "Python",
        "body": "import os\nimport requests\n\nresponse = requests.post(\n    'https://gateway.maton.ai/clicksend/v3/sms/send',\n    headers={\n        'Authorization': f'Bearer {os.environ[\"MATON_API_KEY\"]}',\n        'Content-Type': 'application/json'\n    },\n    json={\n        'messages': [\n            {\n                'to': '+15551234567',\n                'body': 'Hello from ClickSend!',\n                'source': 'api'\n            }\n        ]\n    }\n)\ndata = response.json()\nprint(f\"Status: {data['response_code']}\")"
      },
      {
        "title": "Notes",
        "body": "Phone numbers must be in E.164 format (e.g., +15551234567)\nAll timestamps are Unix timestamps (seconds since epoch)\nUse source field to identify your application in analytics\nTemplates support placeholders like {name}, {custom_1}, etc.\nSMS messages over 160 characters are split into multiple segments\nVoice access requires account-level permissions\nIMPORTANT: When using curl commands, use curl -g when URLs contain brackets to disable glob parsing\nIMPORTANT: When piping curl output to jq or other commands, environment variables like $MATON_API_KEY may not expand correctly in some shell environments"
      },
      {
        "title": "Error Handling",
        "body": "StatusMeaning200Success400Bad request401Unauthorized - invalid credentials403Forbidden - insufficient permissions404Resource not found429Rate limited500Internal server error\n\nResponse codes:\n\nSUCCESS - Operation completed successfully\nFORBIDDEN - Access denied to resource\nBAD_REQUEST - Invalid request parameters\nINVALID_RECIPIENT - Invalid phone number"
      },
      {
        "title": "Troubleshooting: API Key Issues",
        "body": "Check that the MATON_API_KEY environment variable is set:\n\necho $MATON_API_KEY\n\nVerify the API key is valid by listing connections:\n\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF"
      },
      {
        "title": "Troubleshooting: Invalid App Name",
        "body": "Ensure your URL path starts with clicksend. For example:\n\nCorrect: https://gateway.maton.ai/clicksend/v3/account\nIncorrect: https://gateway.maton.ai/v3/account"
      },
      {
        "title": "Resources",
        "body": "ClickSend Developer Portal\nClickSend REST API v3 Documentation\nClickSend PHP SDK\nClickSend Help Center\nMaton Community\nMaton Support"
      }
    ],
    "body": "ClickSend\n\nAccess the ClickSend API with managed authentication. Send SMS, MMS, and voice messages, manage contacts and lists, and track message delivery.\n\nQuick Start\n# Get account info\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://gateway.maton.ai/clicksend/v3/account')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n\nBase URL\nhttps://gateway.maton.ai/clicksend/{native-api-path}\n\n\nReplace {native-api-path} with the actual ClickSend API endpoint path. The gateway proxies requests to rest.clicksend.com and automatically injects your authentication.\n\nAuthentication\n\nAll requests require the Maton API key in the Authorization header:\n\nAuthorization: Bearer $MATON_API_KEY\n\n\nEnvironment Variable: Set your API key as MATON_API_KEY:\n\nexport MATON_API_KEY=\"YOUR_API_KEY\"\n\nGetting Your API Key\nSign in or create an account at maton.ai\nGo to maton.ai/settings\nCopy your API key\nConnection Management\n\nManage your ClickSend connections at https://ctrl.maton.ai.\n\nList Connections\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections?app=clicksend&status=ACTIVE')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n\nCreate Connection\npython <<'EOF'\nimport urllib.request, os, json\ndata = json.dumps({'app': 'clicksend'}).encode()\nreq = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Content-Type', 'application/json')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n\nGet Connection\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n\n\nResponse:\n\n{\n  \"connection\": {\n    \"connection_id\": \"37beee67-29f7-43b6-b0b2-5f0f7a5d6440\",\n    \"status\": \"ACTIVE\",\n    \"creation_time\": \"2026-02-10T10:04:12.418030Z\",\n    \"last_updated_time\": \"2026-02-10T10:06:17.059090Z\",\n    \"url\": \"https://connect.maton.ai/?session_token=...\",\n    \"app\": \"clicksend\",\n    \"metadata\": {}\n  }\n}\n\nDelete Connection\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n\nSpecifying Connection\n\nIf you have multiple ClickSend connections, specify which one to use with the Maton-Connection header:\n\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://gateway.maton.ai/clicksend/v3/account')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nreq.add_header('Maton-Connection', '37beee67-29f7-43b6-b0b2-5f0f7a5d6440')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n\n\nIf omitted, the gateway uses the default (oldest) active connection.\n\nAPI Reference\nResponse Format\n\nAll ClickSend API responses follow this structure:\n\n{\n  \"http_code\": 200,\n  \"response_code\": \"SUCCESS\",\n  \"response_msg\": \"Description of the result\",\n  \"data\": { ... }\n}\n\nAccount\nGet Account\nGET /clicksend/v3/account\n\n\nResponse:\n\n{\n  \"http_code\": 200,\n  \"response_code\": \"SUCCESS\",\n  \"response_msg\": \"Here's your account\",\n  \"data\": {\n    \"user_id\": 672721,\n    \"username\": \"user@example.com\",\n    \"user_email\": \"user@example.com\",\n    \"balance\": \"2.005718\",\n    \"user_phone\": \"+18019234886\",\n    \"user_first_name\": \"John\",\n    \"user_last_name\": \"Doe\",\n    \"country\": \"US\",\n    \"default_country_sms\": \"US\",\n    \"timezone\": \"America/Chicago\",\n    \"_currency\": {\n      \"currency_name_short\": \"USD\",\n      \"currency_prefix_d\": \"$\"\n    }\n  }\n}\n\nSMS\nSend SMS\nPOST /clicksend/v3/sms/send\nContent-Type: application/json\n\n{\n  \"messages\": [\n    {\n      \"to\": \"+15551234567\",\n      \"body\": \"Hello from ClickSend!\",\n      \"source\": \"api\"\n    }\n  ]\n}\n\n\nParameters:\n\nField\tType\tDescription\nto\tstring\tRecipient phone number (E.164 format)\nbody\tstring\tSMS message content\nsource\tstring\tSource identifier (e.g., \"api\", \"sdk\")\nfrom\tstring\tSender ID (optional)\nschedule\tint\tUnix timestamp for scheduled send (optional)\ncustom_string\tstring\tCustom reference (optional)\nGet SMS Price\nPOST /clicksend/v3/sms/price\nContent-Type: application/json\n\n{\n  \"messages\": [\n    {\n      \"to\": \"+15551234567\",\n      \"body\": \"Test message\",\n      \"source\": \"api\"\n    }\n  ]\n}\n\nSMS History\nGET /clicksend/v3/sms/history\n\n\nQuery Parameters:\n\nParameter\tDescription\ndate_from\tUnix timestamp for start date\ndate_to\tUnix timestamp for end date\npage\tPage number (default: 1)\nlimit\tResults per page (default: 15)\nInbound SMS\nGET /clicksend/v3/sms/inbound\n\nSMS Receipts (Delivery Reports)\nGET /clicksend/v3/sms/receipts\n\nCancel Scheduled SMS\nPUT /clicksend/v3/sms/{message_id}/cancel\n\nCancel All Scheduled SMS\nPUT /clicksend/v3/sms/cancel-all\n\nSMS Templates\nList Templates\nGET /clicksend/v3/sms/templates\n\n\nResponse:\n\n{\n  \"http_code\": 200,\n  \"response_code\": \"SUCCESS\",\n  \"response_msg\": \"Here are your templates.\",\n  \"data\": {\n    \"total\": 1,\n    \"per_page\": 15,\n    \"current_page\": 1,\n    \"data\": [\n      {\n        \"template_id\": 632497,\n        \"body\": \"Hello {name}, this is a test message.\",\n        \"template_name\": \"Test Template\"\n      }\n    ]\n  }\n}\n\nCreate Template\nPOST /clicksend/v3/sms/templates\nContent-Type: application/json\n\n{\n  \"template_name\": \"Welcome Message\",\n  \"body\": \"Hello {name}, welcome to our service!\"\n}\n\nUpdate Template\nPUT /clicksend/v3/sms/templates/{template_id}\nContent-Type: application/json\n\n{\n  \"template_name\": \"Updated Template\",\n  \"body\": \"Updated message content\"\n}\n\nDelete Template\nDELETE /clicksend/v3/sms/templates/{template_id}\n\nMMS\nSend MMS\nPOST /clicksend/v3/mms/send\nContent-Type: application/json\n\n{\n  \"messages\": [\n    {\n      \"to\": \"+15551234567\",\n      \"body\": \"Check out this image!\",\n      \"media_file\": \"https://example.com/image.jpg\",\n      \"source\": \"api\"\n    }\n  ]\n}\n\nMMS History\nGET /clicksend/v3/mms/history\n\nGet MMS Price\nPOST /clicksend/v3/mms/price\nContent-Type: application/json\n\n{\n  \"messages\": [...]\n}\n\nMMS Receipts\nGET /clicksend/v3/mms/receipts\n\nVoice\nSend Voice Message\nPOST /clicksend/v3/voice/send\nContent-Type: application/json\n\n{\n  \"messages\": [\n    {\n      \"to\": \"+15551234567\",\n      \"body\": \"Hello, this is a voice message.\",\n      \"voice\": \"female\",\n      \"lang\": \"en-us\",\n      \"source\": \"api\"\n    }\n  ]\n}\n\n\nVoice Parameters:\n\nField\tDescription\nto\tRecipient phone number\nbody\tText to be spoken\nvoice\tVoice gender: male or female\nlang\tLanguage code (e.g., en-us, en-gb, de-de)\nschedule\tUnix timestamp for scheduled call\nrequire_input\tRequire keypad input (0-1)\nmachine_detection\tDetect answering machine (0-1)\nAvailable Languages\nGET /clicksend/v3/voice/lang\n\n\nReturns list of supported languages with codes and available genders.\n\nVoice History\nGET /clicksend/v3/voice/history\n\n\nNote: Requires voice access enabled on account.\n\nGet Voice Price\nPOST /clicksend/v3/voice/price\n\nCancel Voice Message\nPUT /clicksend/v3/voice/{message_id}/cancel\n\nContact Lists\nList All Lists\nGET /clicksend/v3/lists\n\n\nResponse:\n\n{\n  \"http_code\": 200,\n  \"response_code\": \"SUCCESS\",\n  \"response_msg\": \"Here are your contact lists.\",\n  \"data\": {\n    \"total\": 2,\n    \"data\": [\n      {\n        \"list_id\": 3555277,\n        \"list_name\": \"Opt-Out List\",\n        \"_contacts_count\": 0\n      },\n      {\n        \"list_id\": 3555278,\n        \"list_name\": \"Example List\",\n        \"_contacts_count\": 10\n      }\n    ]\n  }\n}\n\nGet List\nGET /clicksend/v3/lists/{list_id}\n\nCreate List\nPOST /clicksend/v3/lists\nContent-Type: application/json\n\n{\n  \"list_name\": \"My New List\"\n}\n\nUpdate List\nPUT /clicksend/v3/lists/{list_id}\nContent-Type: application/json\n\n{\n  \"list_name\": \"Updated List Name\"\n}\n\nDelete List\nDELETE /clicksend/v3/lists/{list_id}\n\nRemove Duplicates\nPUT /clicksend/v3/lists/{list_id}/remove-duplicates\n\nContacts\nList Contacts in a List\nGET /clicksend/v3/lists/{list_id}/contacts\n\n\nQuery Parameters:\n\nParameter\tDescription\npage\tPage number\nlimit\tResults per page\nupdated_after\tFilter contacts updated after timestamp\nGet Contact\nGET /clicksend/v3/lists/{list_id}/contacts/{contact_id}\n\n\nResponse:\n\n{\n  \"http_code\": 200,\n  \"response_code\": \"SUCCESS\",\n  \"data\": {\n    \"contact_id\": 1581565666,\n    \"list_id\": 3555278,\n    \"phone_number\": \"+18019234886\",\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"email\": \"john@example.com\",\n    \"custom_1\": \"\",\n    \"custom_2\": \"\",\n    \"custom_3\": \"\",\n    \"custom_4\": \"\",\n    \"organization_name\": \"\",\n    \"address_city\": \"\",\n    \"address_state\": \"\",\n    \"address_country\": \"US\"\n  }\n}\n\nCreate Contact\nPOST /clicksend/v3/lists/{list_id}/contacts\nContent-Type: application/json\n\n{\n  \"phone_number\": \"+15551234567\",\n  \"first_name\": \"John\",\n  \"last_name\": \"Doe\",\n  \"email\": \"john@example.com\"\n}\n\n\nContact Fields:\n\nField\tDescription\nphone_number\tPhone number (E.164 format)\nfirst_name\tFirst name\nlast_name\tLast name\nemail\tEmail address\nfax_number\tFax number\norganization_name\tCompany name\ncustom_1 - custom_4\tCustom fields\naddress_line_1, address_line_2\tAddress\naddress_city, address_state, address_postal_code, address_country\tAddress components\nUpdate Contact\nPUT /clicksend/v3/lists/{list_id}/contacts/{contact_id}\nContent-Type: application/json\n\n{\n  \"first_name\": \"Jane\",\n  \"last_name\": \"Smith\"\n}\n\nDelete Contact\nDELETE /clicksend/v3/lists/{list_id}/contacts/{contact_id}\n\nCopy Contact to Another List\nPUT /clicksend/v3/lists/{from_list_id}/contacts/{contact_id}/copy/{to_list_id}\n\nTransfer Contact to Another List\nPUT /clicksend/v3/lists/{from_list_id}/contacts/{contact_id}/transfer/{to_list_id}\n\nEmail Addresses\nList Verified Email Addresses\nGET /clicksend/v3/email/addresses\n\nAdd Email Address\nPOST /clicksend/v3/email/addresses\nContent-Type: application/json\n\n{\n  \"email_address\": \"sender@example.com\"\n}\n\nDelete Email Address\nDELETE /clicksend/v3/email/addresses/{email_address_id}\n\nUtility Endpoints\nList Countries\nGET /clicksend/v3/countries\n\n\nReturns list of all supported countries with codes.\n\nPagination\n\nClickSend uses page-based pagination:\n\nGET /clicksend/v3/lists?page=2&limit=50\n\n\nResponse includes:\n\n{\n  \"data\": {\n    \"total\": 100,\n    \"per_page\": 50,\n    \"current_page\": 2,\n    \"last_page\": 2,\n    \"next_page_url\": null,\n    \"prev_page_url\": \"...?page=1\",\n    \"from\": 51,\n    \"to\": 100,\n    \"data\": [...]\n  }\n}\n\n\nParameters:\n\npage - Page number (default: 1)\nlimit - Results per page (default: 15)\nCode Examples\nJavaScript\nconst response = await fetch(\n  'https://gateway.maton.ai/clicksend/v3/sms/send',\n  {\n    method: 'POST',\n    headers: {\n      'Authorization': `Bearer ${process.env.MATON_API_KEY}`,\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({\n      messages: [\n        {\n          to: '+15551234567',\n          body: 'Hello from ClickSend!',\n          source: 'api'\n        }\n      ]\n    })\n  }\n);\nconst data = await response.json();\nconsole.log(data);\n\nPython\nimport os\nimport requests\n\nresponse = requests.post(\n    'https://gateway.maton.ai/clicksend/v3/sms/send',\n    headers={\n        'Authorization': f'Bearer {os.environ[\"MATON_API_KEY\"]}',\n        'Content-Type': 'application/json'\n    },\n    json={\n        'messages': [\n            {\n                'to': '+15551234567',\n                'body': 'Hello from ClickSend!',\n                'source': 'api'\n            }\n        ]\n    }\n)\ndata = response.json()\nprint(f\"Status: {data['response_code']}\")\n\nNotes\nPhone numbers must be in E.164 format (e.g., +15551234567)\nAll timestamps are Unix timestamps (seconds since epoch)\nUse source field to identify your application in analytics\nTemplates support placeholders like {name}, {custom_1}, etc.\nSMS messages over 160 characters are split into multiple segments\nVoice access requires account-level permissions\nIMPORTANT: When using curl commands, use curl -g when URLs contain brackets to disable glob parsing\nIMPORTANT: When piping curl output to jq or other commands, environment variables like $MATON_API_KEY may not expand correctly in some shell environments\nError Handling\nStatus\tMeaning\n200\tSuccess\n400\tBad request\n401\tUnauthorized - invalid credentials\n403\tForbidden - insufficient permissions\n404\tResource not found\n429\tRate limited\n500\tInternal server error\n\nResponse codes:\n\nSUCCESS - Operation completed successfully\nFORBIDDEN - Access denied to resource\nBAD_REQUEST - Invalid request parameters\nINVALID_RECIPIENT - Invalid phone number\nTroubleshooting: API Key Issues\nCheck that the MATON_API_KEY environment variable is set:\necho $MATON_API_KEY\n\nVerify the API key is valid by listing connections:\npython <<'EOF'\nimport urllib.request, os, json\nreq = urllib.request.Request('https://ctrl.maton.ai/connections')\nreq.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')\nprint(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))\nEOF\n\nTroubleshooting: Invalid App Name\nEnsure your URL path starts with clicksend. For example:\nCorrect: https://gateway.maton.ai/clicksend/v3/account\nIncorrect: https://gateway.maton.ai/v3/account\nResources\nClickSend Developer Portal\nClickSend REST API v3 Documentation\nClickSend PHP SDK\nClickSend Help Center\nMaton Community\nMaton Support"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/byungkyu/clicksend",
    "publisherUrl": "https://clawhub.ai/byungkyu/clicksend",
    "owner": "byungkyu",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/clicksend",
    "downloadUrl": "https://openagent3.xyz/downloads/clicksend",
    "agentUrl": "https://openagent3.xyz/skills/clicksend/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clicksend/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clicksend/agent.md"
  }
}