plugins/maccing-growth/skills/platforms/ycloud/ycloud-api/SKILL.md
YCloud v2 REST API reference for WhatsApp messaging via the BSP layer. Covers every callable endpoint: sending and listing messages (async and sendDirectly), template CRUD, phone number and WABA metadata, wallet balance, webhook management, contacts, unsubscribers/opt-outs, and media upload. Includes live-verified behavior deviations, pagination gotchas, and filter limitations. Use when calling the YCloud v2 REST API for WhatsApp — sending/listing messages, templates, phone numbers/WABA, wallet/balance, webhooks, contacts, unsubscribers, media, pagination gotchas. Triggers: 'ycloud api', 'X-API-Key', '/v2/whatsapp/messages', 'ycloud webhook', 'ycloud pagination', 'ycloud balance', 'sendDirectly', 'unsubscribers endpoint'.
npx skillsauth add andredezzy/maccing ycloud-apiInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
YCloud exposes a unified REST API at https://api.ycloud.com/v2 for WhatsApp
Business messaging. This skill covers the full public v2 endpoint surface with
live-verified (June 2026) behavior notes.
Related:
ycloud(BSP platform + dashboard-backend automation),
Base URL : https://api.ycloud.com/v2
Auth : X-API-Key: <your-api-key> (header, every request)
No OAuth, no Bearer token. One key grants full read/write access to all resources.
| Gotcha | Detail |
|---|---|
| Paginate with page, not offset | ?offset=N is silently ignored — always returns the newest page. Use page=1..100. |
| limit cap is 100 | Max 100 items per page. Max reachable offset: (100-1)*100 = 9,900 (~10k records total). |
| Message filters mostly broken | filter.status, filter.from, filter.type on GET /v2/whatsapp/messages are silently ignored. Only filter.wabaId and filter.to work server-side. Post-filter client-side for everything else. |
| Campaign→messages lag | Bulk campaign sends via the dashboard are not instantly reflected in GET /v2/whatsapp/messages; allow propagation time. |
| No bulkMessages API | There is no bulk-send endpoint in the public v2 API. Campaign sends are dashboard-only. |
| Campaign send is OPERATOR-ONLY | The agent NEVER auto-sends a marketing broadcast — no message-loop, no broadcast POST, no sendDirectly fan-out over a list. The human operator submits it in the dashboard UI. See the doctrine note below. |
| filterUnsubscribed not on sendDirectly | Available on POST /v2/whatsapp/messages only, not on the sendDirectly variant. |
| Template PATCH is full replacement | Every PATCH must include ALL components even when changing only one. |
| Phone number ID path broken | GET /v2/whatsapp/phoneNumbers/{PHONE_NUMBER_ID} returns 404. Use /{wabaId}/{phoneNumber} instead. |
| Unsubscribers has cursor + offset | The only endpoint returning both pagination styles simultaneously. |
| Balance is always USD | GET /v2/balance returns USD regardless of WABA billing currency. |
⚠️ DOCTRINE — the campaign/broadcast SEND is ALWAYS operator-executed, NEVER automated by the agent. Use this API for reads (status, analytics, balance, templates), for single transactional/inbox replies inside the 24h service window, and to build/validate lists — but the agent MUST NOT fire a marketing broadcast programmatically (no
POST /v2/whatsapp/messagesloop over a list, nosendDirectlyfan-out). The human operator uploads the list and clicks Send in the dashboard UI. A broadcast is irreversible, costs real money, and one bad send can crater quality or permanently ban the number — the human at the trigger is the last safety gate. Full rationale:sending-and-scale.md§6.
| Area | Key Endpoints | |---|---| | Messages | POST /v2/whatsapp/messages, POST /v2/whatsapp/messages/sendDirectly, GET /v2/whatsapp/messages, GET /v2/whatsapp/messages/{id} | | Templates | GET/POST /v2/whatsapp/templates, GET/PATCH/DELETE /v2/whatsapp/templates/{wabaId}/{name}/{lang} | | Phone Numbers | GET /v2/whatsapp/phoneNumbers, GET /v2/whatsapp/phoneNumbers/{wabaId}/{phone} | | WABA | GET /v2/whatsapp/businessAccounts, GET /v2/whatsapp/businessAccounts/{id} | | Wallet | GET /v2/balance (only wallet endpoint; /v2/wallets and /v2/me return 404) | | Webhooks | GET/POST /v2/webhookEndpoints, GET/PATCH/DELETE /v2/webhookEndpoints/{id} | | Contacts | GET /v2/contact/contacts, GET /v2/contact/contacts/{id} | | Unsubscribers | GET/POST /v2/unsubscribers, GET/DELETE /v2/unsubscribers/{customer}/{channel} | | Media | POST /v2/whatsapp/media/{phoneNumber}/upload |
| Intent | Reference | Use for | |---|---|---| | Full endpoint details, curl examples, response shapes, field tables | reference/v2-rest-reference.md | All v2 API endpoint usage | | Pagination algorithm, filter gotchas, behavior deviations | reference/v2-rest-reference.md#known-api-behavior-deviations | Debugging unexpected API responses | | Template send/deliver/read analytics (computed) | ../ycloud/reference/api-automation.md#computing-template-analytics-no-dedicated-endpoint | Building template performance reports | | Webhook event types and registration | reference/v2-rest-reference.md#webhooks | Setting up delivery status tracking | | Opt-out list and pre-send check | reference/v2-rest-reference.md#unsubscribers-opt-outs | Suppression logic before sends | | Feature-gated / unavailable endpoints | reference/v2-rest-reference.md#feature-gated-and-unavailable-endpoints | Confirming what 403/404s mean |
tools
Use when working with André's self-hosted Google Workspace MCP (the `google-workspace` plugin) — driving Calendar, Gmail, Drive, Docs, Sheets, Slides, Forms, Tasks, Chat, or Contacts via the `mcp__plugin_google-workspace_workspace__*` tools, OR setting up / troubleshooting its OAuth (first-run consent, 7-day test-mode re-auth, credential storage). Covers the account-isolation rule (never use the `mcp__claude_ai_*` Google connectors — different account).
tools
Use when working with the Notion API or MCP — creating, editing, querying, or moving databases, data sources, pages, views (table/board/gallery/chart), formulas, rollups, relations, blocks, icons, or covers; or hitting Notion API/MCP errors (validation_error, pagination, permission, 400/409).
tools
YCloud — a multi-channel communications provider (CPaaS: WhatsApp, SMS, Voice, Email), not a Meta-only BSP. This skill covers its WhatsApp Business operations: console navigation, account creation/onboarding, Embedded Signup, campaigns/inbox/journeys, auto-unsubscribe chatbot, the public-API-vs-dashboard-backend distinction, BSP migration, and read-only CDP automation. Use when operating YCloud for WhatsApp dispatch: embedded signup, campaign sends, campaign analytics, inbox, auto-unsubscribe chatbot, opt-out attribution, dashboard automation. Triggers on: 'ycloud', 'CPaaS', 'BSP', 'bulk campaign', 'whatsapp dashboard', 'embedded signup', 'auto-unsubscribe', 'opt-out chatbot', 'campaign analytics', 'dispatch automation', 'ycloud free plan', 'zero markup', 'ycloud account creation', 'ycloud onboarding', 'ycloud signup code'.
development
WhatsApp Business Platform (Cloud API) production reference for the maccing growth stack. Covers Cloud API setup, message types, templates (creation, approval, pacing, strategy), per-message pricing, webhooks, bulk sending at scale, WhatsApp Flows, media handling, Node.js/TypeScript SDK, error codes, compliance (LGPD, opt-in/opt-out), Calling API, MM Lite, Business Management API, business profile fields, dispatch operations (chip warming, direct API setup, BSP migration, number longevity), and 2025-2026 platform changes. Use when the user asks about whatsapp, whatsapp api, cloud api, WABA, BSP, whatsapp template, whatsapp marketing, message template, WhatsApp dispatch, WhatsApp number quality, WhatsApp Brazil, WhatsApp opt-in, WhatsApp webhook, WhatsApp flows, WhatsApp pricing, or anything related to sending or receiving WhatsApp messages via the Cloud API.