Yuboto Omni API Assistant
Implement, troubleshoot, and generate integrations for Yuboto Omni API (SMS/Viber/messaging endpoints, callbacks, lists/contacts/blacklist, cost/balance/acco...
Description
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: { "openclaw": { "emoji": "📨", "requires": { "bins": ["python3"], "env": ["OCTAPUSH_API_KEY"] }, "primaryEnv": "OCTAPUSH_API_KEY", }, }
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>"
- Read
- 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-smsdefaults to--batch-size 200(hard cap 1000 recipients/request)send-smsdefaults to--batch-delay-ms 250send-csvdefaults to--delay-ms 100
- Encoding defaults:
--sms-encoding autodetects non-GSM text and sends as Unicode- Force Unicode with
--sms-encoding unicodefor scripts like Greek/Arabic/Chinese - Force GSM-7 with
--sms-encoding gsmwhen needed
- Local state retention is enabled by default:
- Sent log rotates to last
5000lines (YUBOTO_MAX_SENT_LOG_LINES) - State index keeps up to
5000tracked IDs (YUBOTO_MAX_STATE_RECORDS)
- Sent log rotates to last
- 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_DIRoverride supported)
- CLI state default:
- 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.
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!