- name
- yuboto-omni-api
- description
- Implement, troubleshoot, and generate integrations for Yuboto Omni API (SMS/Viber/messaging endpoints, callbacks, lists/contacts/blacklist, cost/balance/account methods). Use when building code or workflows against Yuboto API docs, especially when endpoint details differ between PDF docs and live Swagger.
- metadata
Yuboto Omni API
Use this skill to work with Yuboto Omni API safely and consistently.
Note: This skill requires the OCTAPUSH_API_KEY environment variable.
Getting Started: You need a Yuboto/Octapush account with API access. Register at octapush.yuboto.com and request API access from support.
OpenClaw Integration: This skill supports native OpenClaw credential management. Store your API key in openclaw.json for centralized, secure credential handling.
Source-of-truth order
references/swagger_v1.json(live endpoint contract)references/api_quick_reference.md(human-readable endpoint map)references/omni_api_v1_10_raw.md(legacy PDF extract)assets/OMNI_API_DOCUMENTATION_V1_10.pdf(original PDF)
If PDF and Swagger conflict, prefer Swagger for endpoint paths/fields.
Fast workflow
- Identify the use case (send message, get DLR, contacts, subscriber lists, blacklist, cost/balance).
- Find matching endpoint(s):
- Read references/api_quick_reference.md, or - Run: python3 scripts/find_endpoints.py --q "<keyword>"
- Validate request schema directly in
references/swagger_v1.json:
- parameters (path/query/header) - requestBody - response schema
- Build implementation code with:
- clear auth header handling - retries + timeout - structured error mapping
- For advanced Viber features, check Swagger first.
Available commands (provided by scripts/yuboto_cli.py)
balance— get account balancecost --channel sms --iso2 gr --phonenumber +30...— estimate sending costsend-sms --sender <approved_sender> --text "..." --to +30... --batch-size 200 --sms-encoding auto— send SMS (auto-batched + auto Unicode/GSM)dlr --id <messageGuid>— check delivery status for one messagesend-csv --file contacts.csv --phone-col phonenumber --text-col text --sender-col sender— bulk send from CSVpoll-pending— refresh statuses for all pending messageshistory --last 20— show recent send recordsstatus/status --id <messageGuid>— inspect tracked message state
Output requirements
When generating code or integration instructions:
- Include exact method + path.
- Include required auth headers.
- Include minimal working request example.
- Include expected response shape.
- Include 1 failure case and handling.
Environment Variables
Required Credential
OCTAPUSH_API_KEY— Your Yuboto/Octapush API key (already base64 encoded from Octapush)
Note: This is the only credential required.
Optional Variables (for testing/overrides)
TEST_PHONENUMBER— Phone number for testing (international format: +3069XXXXXXXX)SMS_SENDER— Default sender ID for SMS messages (must be approved)YUBOTO_BASE_URL— Override API base URL (default:https://api.yuboto.com)
Getting an API Key
To use this skill, you need a Yuboto/Octapush API key:
- Register for an account at octapush.yuboto.com
- Contact Yuboto support to request API access
- Get your API key from your Octapush dashboard or via support
The API key is used for authentication with all Yuboto Omni API endpoints.
Setup Instructions
Option 1: OpenClaw Config (✅ Recommended)
Add to your openclaw.json config file:
"skills": {
"entries": {
"yuboto-omni-api": {
"enabled": true,
"env": {
"OCTAPUSH_API_KEY": "your_base64_api_key_here"
}
}
}
}Option 2: Environment Variable
export OCTAPUSH_API_KEY="your_base64_api_key_here"Note: .env files are not supported. Use OpenClaw config for secure, centralized credential management.
Security + Ops Notes
- Store API key in environment variable
OCTAPUSH_API_KEY, not in source files. - Prefer env vars over CLI
--api-keyto avoid leaking credentials in shell history. poll_pending.shreadsOCTAPUSH_API_KEYfrom the process environment only (it does not source.env).- Always use an account-approved sender ID for SMS. If sender is not approved, API returns
108 - Sms Sender is not valid. - Bulk safety defaults are enabled:
- send-sms defaults to --batch-size 200 (hard cap 1000 recipients/request) - send-sms defaults to --batch-delay-ms 250 - send-csv defaults to --delay-ms 100
- Encoding defaults:
- --sms-encoding auto detects non-GSM text and sends as Unicode - Force Unicode with --sms-encoding unicode for scripts like Greek/Arabic/Chinese - Force GSM-7 with --sms-encoding gsm when needed
- Local state retention is enabled by default:
- Sent log rotates to last 5000 lines (YUBOTO_MAX_SENT_LOG_LINES) - State index keeps up to 5000 tracked IDs (YUBOTO_MAX_STATE_RECORDS)
- Runtime data location default is outside the skill folder:
- CLI state default: $XDG_STATE_HOME/openclaw/yuboto-omni-api (fallback ~/.local/state/openclaw/yuboto-omni-api) - Poll logs/state default under the same base (YUBOTO_LOG_DIR/YUBOTO_STATE_DIR override supported)
- Privacy-by-default storage:
- Stored state/log keeps minimal metadata (messageGuid, timestamps, status, recipient count) - Full payload/text/recipient persistence is off by default - Enable full persistence only if needed via YUBOTO_STORE_FULL_PAYLOAD=true
- Runtime dependency model: Python standard library only (no
requestsinstall required). - Helper scripts are also stdlib-only:
scripts/refresh_swagger.pyusesurllib(no pip installs). - Treat local runtime logs/state as sensitive even in minimized mode.
Notes
- Swagger URL:
https://api.yuboto.com/scalar/#description/introduction - Swagger JSON:
https://api.yuboto.com/swagger/v1/swagger.json - More product/account info:
https://messaging.yuboto.com - Keep generated examples language-neutral unless user requests GR/EN copy.