✓ Verified
💻 Development
✓ Enhanced Data
Sensorpro
Manage your Sensorpro email marketing account in OpenClaw.
- Rating
- 4 (202 reviews)
- Downloads
- 49,534 downloads
- Version
- 1.0.0
Overview
Manage your Sensorpro email marketing account in OpenClaw.
Complete Documentation
View Source →Use this skill to manage your Sensorpro email marketing account in OpenClaw.
Official docs:
- Home: https://sensorpro.net/api/
- Contacts: https://sensorpro.net/api/contacts.html
- Campaigns + metrics: https://sensorpro.net/api/campaigns.html
- Relay Email: https://sensorpro.net/api/sendemail.html
- Imports: https://www.sensorpro.net/api/imports.html
- Account: https://sensorpro.net/api/account.html
Setup (required)
Set these environment variables in your OpenClaw.env (or in the shell before running curl):
SENSORPRO_API_KEY— API key for thex-apikeyheaderSENSORPRO_ORG— organization code/nameSENSORPRO_USER— API username (must be an API user)SENSORPRO_PASS— API user password
How to get the API key
From the Sensorpro UI: 1) Go to API → API keys 2) Select “Sensorpro rest API default key” 3) Copy the key value intoSENSORPRO_API_KEY
4) If your API key is IP-restricted, whitelist the calling IP (the machine running OpenClaw)The key is passed as an HTTP header:
x-apikey: $SENSORPRO_API_KEY
How to create an API user
Sensorpro distinguishes between UI users and API users:- API users have no UI access but can use the REST API.
- Normal users have UI access but typically cannot use the REST API.
SENSORPRO_USERto that usernameSENSORPRO_PASSto that password
Safe secret handling (important)
- Put secrets in
~/.openclaw/.env(or your process manager), not inSKILL.md. - Don’t commit
.envto git. - Rotate the API key if it’s ever pasted into a public place.
Global gotchas
- IP allowlisting: Sensorpro REST API can be locked to whitelisted IPs.
- Every response includes
Result.TotalErrors; treat0as success. - Signin token (
Token) must be used in the URL path for most endpoints. - Logoff: server may require a body (HTTP 411 otherwise). Use
-d '{}'.
Quick workflow pattern (recommended)
1) Signin once → storeTOKEN
2) Make one or more API calls
3) LogoffExample (bash):
bash
TOKEN=$(curl -sS -X POST "https://apinie.sensorpro.net/auth/sys/signin" \
-H "Content-Type: application/json" \
-H "x-apikey: ${SENSORPRO_API_KEY}" \
-d "{\"Organization\":\"${SENSORPRO_ORG}\",\"User\":\"${SENSORPRO_USER}\",\"Password\":\"${SENSORPRO_PASS}\"}" \
| python3 -c 'import sys,json; print(json.load(sys.stdin).get("Token",""))')
# Call an endpoint (example)
curl -sS -X POST "https://apinie.sensorpro.net/api/Contact/UpdateAdd/${TOKEN}" \
-H "Content-Type: application/json" \
-d '{"AddToList":[],"Contact":[{"PersonalEMail":"[email protected]"}],"Options":{"Parameters":{},"Action":""},"ReturnFailedRequests":false,"UpdateByKey":"email","SendWelcomeEmail":false,"SignupFormId":"00000000-0000-0000-0000-000000000000"}'
# Log off (some servers require a body)
curl -sS -X POST "https://apinie.sensorpro.net/auth/sys/logoff/${TOKEN}" \
-H "Content-Type: application/json" -d '{}'
Core endpoints (cheat sheet)
Authentication
POST https://apinie.sensorpro.net/auth/sys/signin(headerx-apikeyrequired)POST https://apinie.sensorpro.net/auth/sys/logoff/[Token]
Contacts (token required)
Base:https://apinie.sensorpro.net/api/Contact//[Token]
UpdateAdd(recommended)Add,UpdateGetContacts,GetContactsPagedUpdateAddAsync,GetUpdateAddAsyncStatusChangeStatus,ChangeOptOutStatusDeleteContacts,ForgetMe
Campaigns + sending
Base:https://apinie.sensorpro.net/api/campaign//[Token] (note casing differs for some Get endpoints)
AddCampaign,AddDesign,AddSegment,AddBroadcast
Campaign results / metrics
POST https://apinie.sensorpro.net/api/Campaign/GetBroadcastStatus/[Token]POST https://apinie.sensorpro.net/api/campaign/GetCampaignResults/[Token]POST https://apinie.sensorpro.net/api/campaign/GetCampaignResultsLinks/[Token]
Relay Email
POST https://apinie.sensorpro.net/api/Email/SendEmail/[Token]
Imports
POST https://apinie.sensorpro.net/api/import/ExecuteFTPImport/[Token]POST https://apinie.sensorpro.net/api/import/GetImportStatus/[Token]POST https://apinie.sensorpro.net/api/import/ClearTagList/[Token]
Account
POST https://apinie.sensorpro.net/api/Account/AddSubOrganization/[Token]POST https://apinie.sensorpro.net/api/Account/AddUpdateUser/[Token]
Examples
Signin (manual curl)
bash
curl -sS -X POST "https://apinie.sensorpro.net/auth/sys/signin" \
-H "Content-Type: application/json" \
-H "x-apikey: ${SENSORPRO_API_KEY}" \
-d '{"Organization":"'"${SENSORPRO_ORG}"'","User":"'"${SENSORPRO_USER}"'","Password":"'"${SENSORPRO_PASS}"'"}'
Contacts: UpdateAdd (add/update by email)
bash
curl -sS -X POST "https://apinie.sensorpro.net/api/Contact/UpdateAdd/${TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"AddToList": [],
"Contact": [{"PersonalEMail":"[email protected]","FirstName":"","LastName":""}],
"Options":{"Parameters":{},"Action":""},
"ReturnFailedRequests": true,
"UpdateByKey": "email",
"SendWelcomeEmail": false,
"SignupFormId": "00000000-0000-0000-0000-000000000000"
}'
Campaign metrics: GetCampaignResults
bash
curl -sS -X POST "https://apinie.sensorpro.net/api/campaign/GetCampaignResults/${TOKEN}" \
-H "Content-Type: application/json" \
-d '{"CampaignId": 53}'
Relay: SendEmail (one-off)
bash
curl -sS -X POST "https://apinie.sensorpro.net/api/Email/SendEmail/${TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"From": {"DisplayName":"Marketing","Email":"[email protected]"},
"To": [{"DisplayName":"","Email":"[email protected]"}],
"Cc": [],
"Bcc": [],
"Headers": {},
"ReplyTo": null,
"ReturnPath": null,
"Subject": "Hello",
"HTMLMessageStyle": "",
"HTMLMessageEncoded": "<html><body><p>Hello</p></body></html>",
"PlainTextMessage": "Hello",
"MsgType": 0,
"MailEncoding": "UTF8",
"Schedule": {"DelayByMinutes": 0, "DelayUntilUTC": ""}
}'
Installation
Terminal bash
openclaw install sensorpro
Copied!
💻Code Examples
Example (bash):
example-bash.sh
TOKEN=$(curl -sS -X POST "https://apinie.sensorpro.net/auth/sys/signin" \
-H "Content-Type: application/json" \
-H "x-apikey: ${SENSORPRO_API_KEY}" \
-d "{\"Organization\":\"${SENSORPRO_ORG}\",\"User\":\"${SENSORPRO_USER}\",\"Password\":\"${SENSORPRO_PASS}\"}" \
| python3 -c 'import sys,json; print(json.load(sys.stdin).get("Token",""))')
# Call an endpoint (example)
curl -sS -X POST "https://apinie.sensorpro.net/api/Contact/UpdateAdd/${TOKEN}" \
-H "Content-Type: application/json" \
-d '{"AddToList":[],"Contact":[{"PersonalEMail":"[email protected]"}],"Options":{"Parameters":{},"Action":""},"ReturnFailedRequests":false,"UpdateByKey":"email","SendWelcomeEmail":false,"SignupFormId":"00000000-0000-0000-0000-000000000000"}'
# Log off (some servers require a body)
curl -sS -X POST "https://apinie.sensorpro.net/auth/sys/logoff/${TOKEN}" \
-H "Content-Type: application/json" -d '{}'## Signin (manual curl)
-signin-manual-curl.sh
curl -sS -X POST "https://apinie.sensorpro.net/auth/sys/signin" \
-H "Content-Type: application/json" \
-H "x-apikey: ${SENSORPRO_API_KEY}" \
-d '{"Organization":"'"${SENSORPRO_ORG}"'","User":"'"${SENSORPRO_USER}"'","Password":"'"${SENSORPRO_PASS}"'"}'## Contacts: UpdateAdd (add/update by email)
-contacts-updateadd-addupdate-by-email.sh
curl -sS -X POST "https://apinie.sensorpro.net/api/Contact/UpdateAdd/${TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"AddToList": [],
"Contact": [{"PersonalEMail":"[email protected]","FirstName":"","LastName":""}],
"Options":{"Parameters":{},"Action":""},
"ReturnFailedRequests": true,
"UpdateByKey": "email",
"SendWelcomeEmail": false,
"SignupFormId": "00000000-0000-0000-0000-000000000000"
}'## Campaign metrics: GetCampaignResults
-campaign-metrics-getcampaignresults.sh
curl -sS -X POST "https://apinie.sensorpro.net/api/campaign/GetCampaignResults/${TOKEN}" \
-H "Content-Type: application/json" \
-d '{"CampaignId": 53}'## Relay: SendEmail (one-off)
-relay-sendemail-one-off.sh
curl -sS -X POST "https://apinie.sensorpro.net/api/Email/SendEmail/${TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"From": {"DisplayName":"Marketing","Email":"[email protected]"},
"To": [{"DisplayName":"","Email":"[email protected]"}],
"Cc": [],
"Bcc": [],
"Headers": {},
"ReplyTo": null,
"ReturnPath": null,
"Subject": "Hello",
"HTMLMessageStyle": "",
"HTMLMessageEncoded": "<html><body><p>Hello</p></body></html>",
"PlainTextMessage": "Hello",
"MsgType": 0,
"MailEncoding": "UTF8",
"Schedule": {"DelayByMinutes": 0, "DelayUntilUTC": ""}
}'Tags
#coding_agents-and-ides
Quick Info
Category Development
Model Claude 3.5
Complexity One-Click
Author forcequit
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
Ready to Install?
Get started with this skill in seconds
openclaw install sensorpro
Related Skills
✓ Verified
💻 Development
4claw
4claw — a moderated imageboard for AI agents.
🧠 Claude-Ready
)}
★ 4.4 (118)
↓ 4,990
v1.0.0
✓ Verified
💻 Development
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
🧠 Claude-Ready
)}
★ 4.3 (89)
↓ 4,621
v1.0.0
✓ Verified
💻 Development
Acestep Lyrics Transcription
Transcribe audio to timestamped lyrics using OpenAI Whisper or ElevenLabs Scribe API.
⚡ GPT-Optimized
)}
★ 3.8 (274)
↓ 17,648
v1.0.0
✓ Verified
💻 Development
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.
🧠 Claude-Ready
)}
★ 4.7 (88)
↓ 1,625
v1.0.0