{"id":"806035d3-3948-4a48-ad7f-40ee15d8ee93","shortId":"ABnHA8","kind":"skill","title":"Integrate Whatsapp","tagline":"Agent Skills skill by Gokapso","description":"# Integrate WhatsApp\n\n## Setup\n\nPreferred path:\n- Kapso CLI installed and authenticated (`kapso login`)\n- Use `kapso status` to confirm project access before onboarding or messaging\n\nFallback path:\nEnv vars:\n- `KAPSO_API_BASE_URL` (host only, no `/platform/v1`)\n- `KAPSO_API_KEY`\n- `META_GRAPH_VERSION` (optional, default `v24.0`)\n\nAuth header (direct API calls):\n```\nX-API-Key: <api_key>\n```\n\nInstall deps (once):\n```bash\nnpm i\n```\n\n## Connect WhatsApp (setup links)\n\nPreferred onboarding path (CLI):\n\n1. Start onboarding: `kapso setup`\n2. If setup is blocked, resolve context with:\n   - `kapso projects list`\n   - `kapso projects use <project-id>`\n   - `kapso customers list`\n   - `kapso customers new --name \"<customer-name>\" --external-id <external-id>`\n   - `kapso setup --customer <customer-id>`\n3. Complete the hosted onboarding URL\n4. Confirm connected numbers: `kapso whatsapp numbers list --output json`\n5. Resolve the exact number you want to operate: `kapso whatsapp numbers resolve --phone-number \"<display-number>\" --output json`\n\nFallback onboarding flow (direct API):\n\n1. Create customer: `POST /platform/v1/customers`\n2. Generate setup link: `POST /platform/v1/customers/:id/setup_links`\n3. Customer completes embedded signup\n4. Use `phone_number_id` to send messages and configure webhooks\n\nDetect connection:\n- Project webhook `whatsapp.phone_number.created` (recommended)\n- Success redirect URL query params (use for frontend UX)\n\nRecommended Kapso setup-link defaults:\n```json\n{\n  \"setup_link\": {\n    \"allowed_connection_types\": [\"dedicated\"],\n    \"provision_phone_number\": true,\n    \"phone_number_country_isos\": [\"US\"]\n  }\n}\n```\n\nNotes:\n- `kapso setup` and `kapso whatsapp numbers new` use dedicated plus provisioning by default.\n- Keep `phone_number_country_isos`, `phone_number_area_code`, `language`, and redirect URLs as optional overrides.\n\n- Platform API base: `/platform/v1`\n- Meta proxy base: `/meta/whatsapp/v24.0` (messaging, templates, media)\n- Use `phone_number_id` as the primary WhatsApp identifier\n\n## Receive events (webhooks)\n\nUse webhooks to receive:\n- Project events (connection lifecycle, workflow events)\n- Phone-number events (messages, conversations, delivery status)\n\nScope rules:\n- **Project webhooks**: only project-level events (connection lifecycle, workflow events)\n- **Phone-number webhooks**: only WhatsApp message + conversation events for that `phone_number_id`\n- WhatsApp message/conversation events (`whatsapp.message.*`, `whatsapp.conversation.*`) are **phone-number only**\n\nCreate a webhook:\n- Project-level: `node scripts/create.js --scope project --url <https://...> --events <csv>`\n- Phone-number: `node scripts/create.js --phone-number-id <id> --url <https://...> --events <csv>`\n\nCommon flags for create/update:\n- `--url <https://...>` - webhook destination\n- `--events <csv|json-array>` - event types (Kapso webhooks)\n- `--kind <kapso|meta>` - Kapso (event-based) vs raw Meta forwarding\n- `--payload-version <v1|v2>` - payload format (`v2` recommended)\n- `--buffer-enabled <true|false>` - enable buffering for `whatsapp.message.received`\n- `--buffer-window-seconds <n>` - 1-60 seconds\n- `--max-buffer-size <n>` - 1-100\n- `--active <true|false>` - enable/disable\n\nTest delivery:\n```bash\nnode scripts/test.js --webhook-id <id>\n```\n\nAlways verify signatures. See:\n- `references/webhooks-overview.md`\n- `references/webhooks-reference.md`\n\n## Send and read messages\n\n### Discover IDs first\n\nTwo Meta IDs are needed for different operations:\n\n| ID | Used for | How to discover |\n|----|----------|-----------------|\n| `business_account_id` (WABA) | Template CRUD | `kapso whatsapp numbers resolve --phone-number \"<display-number>\" --output json` or `node scripts/list-platform-phone-numbers.mjs` |\n| `phone_number_id` | Sending messages, media upload | `kapso whatsapp numbers resolve --phone-number \"<display-number>\" --output json` or `node scripts/list-platform-phone-numbers.mjs` |\n\n### Operate with the CLI first\n\nCommon commands:\n```bash\nkapso whatsapp numbers list --output json\nkapso whatsapp numbers resolve --phone-number \"<display-number>\" --output json\nkapso whatsapp messages send --phone-number-id <PHONE_NUMBER_ID> --to <wa-id> --text \"Hello from Kapso\"\nkapso whatsapp messages list --phone-number-id <PHONE_NUMBER_ID> --limit 50 --output json\nkapso whatsapp messages get <MESSAGE_ID> --phone-number-id <PHONE_NUMBER_ID> --output json\nkapso whatsapp conversations list --phone-number-id <PHONE_NUMBER_ID> --output json\nkapso whatsapp templates list --phone-number-id <PHONE_NUMBER_ID> --output json\nkapso whatsapp templates get <TEMPLATE_ID> --phone-number-id <PHONE_NUMBER_ID> --output json\n```\n\n### SDK setup\n\nInstall:\n```bash\nnpm install @kapso/whatsapp-cloud-api\n```\n\nCreate client:\n```ts\nimport { WhatsAppClient } from \"@kapso/whatsapp-cloud-api\";\n\nconst client = new WhatsAppClient({\n  baseUrl: \"https://api.kapso.ai/meta/whatsapp\",\n  kapsoApiKey: process.env.KAPSO_API_KEY!\n});\n```\n\n### Send a text message\n\nVia SDK:\n```ts\nawait client.messages.sendText({\n  phoneNumberId: \"<PHONE_NUMBER_ID>\",\n  to: \"+15551234567\",\n  body: \"Hello from Kapso\"\n});\n```\n\n### Send a template message\n\n1. Discover IDs: `node scripts/list-platform-phone-numbers.mjs`\n2. Draft template payload from `assets/template-utility-order-status-update.json`\n3. Create: `node scripts/create-template.mjs --business-account-id <WABA_ID> --file <payload.json>`\n4. Check status: `node scripts/template-status.mjs --business-account-id <WABA_ID> --name <name>`\n5. Send: `node scripts/send-template.mjs --phone-number-id <ID> --file <send-payload.json>`\n\n### Send an interactive message\n\nInteractive messages require an active 24-hour session window. For outbound notifications outside the window, use templates.\n\n1. Discover `phone_number_id`\n2. Pick payload from `assets/send-interactive-*.json`\n3. Send: `node scripts/send-interactive.mjs --phone-number-id <ID> --file <payload.json>`\n\n### Read inbox data\n\nPreferred path:\n- CLI: `kapso whatsapp messages ...`, `kapso whatsapp conversations ...`, `kapso whatsapp templates ...`\n\nFallback path:\n- Proxy: `GET /{phone_number_id}/messages`, `GET /{phone_number_id}/conversations`\n- SDK: `client.messages.query()`, `client.messages.get()`, `client.conversations.list()`, `client.conversations.get()`, `client.templates.get()`\n\n### Template rules\n\nCreation:\n- Use `parameter_format: \"NAMED\"` with `{{param_name}}` (preferred over positional)\n- Include examples when using variables in HEADER/BODY\n- Use `language` (not `language_code`)\n- Don't interleave QUICK_REPLY with URL/PHONE_NUMBER buttons\n- URL button variables must be at the end of the URL and use positional `{{1}}`\n\nSend-time:\n- For NAMED templates, include `parameter_name` in header/body params\n- URL buttons need a `button` component with `sub_type: \"url\"` and `index`\n- Media headers use either `id` or `link` (never both)\n\n## WhatsApp Flows\n\nUse Flows to build native WhatsApp forms. Read `references/whatsapp-flows-spec.md` before editing Flow JSON.\n\n### Create and publish a flow\n\n1. Create flow: `node scripts/create-flow.js --phone-number-id <id> --name <name>`\n2. Update JSON: `node scripts/update-flow-json.js --flow-id <id> --json-file <path>`\n3. Publish: `node scripts/publish-flow.js --flow-id <id>`\n4. Test: `node scripts/send-test-flow.js --phone-number-id <id> --flow-id <id> --to <phone>`\n\n### Attach a data endpoint (dynamic flows)\n\n1. Set up encryption: `node scripts/setup-encryption.js --flow-id <id>`\n2. Create endpoint: `node scripts/set-data-endpoint.js --flow-id <id> --code-file <path>`\n3. Deploy: `node scripts/deploy-data-endpoint.js --flow-id <id>`\n4. Register: `node scripts/register-data-endpoint.js --flow-id <id>`\n\n### Flow JSON rules\n\nStatic flows (no data endpoint):\n- Use `version: \"7.3\"`\n- `routing_model` and `data_api_version` are optional\n- See `assets/sample-flow.json`\n\nDynamic flows (with data endpoint):\n- Use `version: \"7.3\"` with `data_api_version: \"3.0\"`\n- `routing_model` is required (defines valid screen transitions)\n- See `assets/dynamic-flow.json`\n\n### Data endpoint rules\n\nHandler signature:\n```js\nasync function handler(request, env) {\n  const body = await request.json();\n  // body.data_exchange.action: INIT | data_exchange | BACK\n  // body.data_exchange.screen: current screen id\n  // body.data_exchange.data: user inputs\n  return Response.json({\n    version: \"3.0\",\n    screen: \"NEXT_SCREEN_ID\",\n    data: { }\n  });\n}\n```\n\n- Do not use `export` or `module.exports`\n- Completion uses `screen: \"SUCCESS\"` with `extension_message_response.params`\n- Do not include `endpoint_uri` or `data_channel_uri` (Kapso injects these)\n\n### Troubleshooting\n\n- Preview shows `\"flow_token is missing\"`: flow is dynamic without a data endpoint. Attach one and refresh.\n- Encryption setup errors: enable encryption in Settings for the phone number/WABA.\n- OAuthException 139000 (Integrity): WABA must be verified in Meta security center.\n\n## Scripts\n\n### Webhooks\n\n| Script | Purpose |\n|--------|---------|\n| `list.js` | List webhooks |\n| `get.js` | Get webhook details |\n| `create.js` | Create a webhook |\n| `update.js` | Update a webhook |\n| `delete.js` | Delete a webhook |\n| `test.js` | Send a test event |\n\n### Messaging and templates\n\n| Script | Purpose | Required ID |\n|--------|---------|-------------|\n| `list-platform-phone-numbers.mjs` | Discover business_account_id + phone_number_id | — |\n| `list-connected-numbers.mjs` | List WABA phone numbers | business_account_id |\n| `list-templates.mjs` | List templates (with filters) | business_account_id |\n| `template-status.mjs` | Check single template status | business_account_id |\n| `create-template.mjs` | Create a template | business_account_id |\n| `update-template.mjs` | Update existing template | business_account_id |\n| `send-template.mjs` | Send template message | phone_number_id |\n| `send-interactive.mjs` | Send interactive message | phone_number_id |\n| `upload-media.mjs` | Upload media for send-time headers | phone_number_id |\n\n### Flows\n\n| Script | Purpose |\n|--------|---------|\n| `list-flows.js` | List all flows |\n| `create-flow.js` | Create a new flow |\n| `get-flow.js` | Get flow details |\n| `read-flow-json.js` | Read flow JSON |\n| `update-flow-json.js` | Update flow JSON (creates new version) |\n| `publish-flow.js` | Publish a flow |\n| `get-data-endpoint.js` | Get data endpoint config |\n| `set-data-endpoint.js` | Create/update data endpoint code |\n| `deploy-data-endpoint.js` | Deploy data endpoint |\n| `register-data-endpoint.js` | Register data endpoint with Meta |\n| `get-encryption-status.js` | Check encryption status |\n| `setup-encryption.js` | Set up flow encryption |\n| `send-test-flow.js` | Send a test flow message |\n| `delete-flow.js` | Delete a flow |\n| `list-flow-responses.js` | List stored flow responses |\n| `list-function-logs.js` | List function logs |\n| `list-function-invocations.js` | List function invocations |\n\n### OpenAPI\n\n| Script | Purpose |\n|--------|---------|\n| `openapi-explore.mjs` | Explore OpenAPI (search/op/schema/where) |\n\nExamples:\n```bash\nnode scripts/openapi-explore.mjs --spec whatsapp search \"template\"\nnode scripts/openapi-explore.mjs --spec whatsapp op sendMessage\nnode scripts/openapi-explore.mjs --spec whatsapp schema TemplateMessage\nnode scripts/openapi-explore.mjs --spec platform ops --tag \"WhatsApp Flows\"\nnode scripts/openapi-explore.mjs --spec platform op setupWhatsappFlowEncryption\nnode scripts/openapi-explore.mjs --spec platform search \"setup link\"\n```\n\n## Assets\n\n| File | Description |\n|------|-------------|\n| `template-utility-order-status-update.json` | UTILITY template with named params + URL button |\n| `send-template-order-status-update.json` | Send-time payload for order_status_update |\n| `template-utility-named.json` | UTILITY template showing button ordering rules |\n| `template-marketing-media-header.json` | MARKETING template with IMAGE header |\n| `template-authentication-otp.json` | AUTHENTICATION OTP template (COPY_CODE) |\n| `send-interactive-buttons.json` | Interactive button message |\n| `send-interactive-list.json` | Interactive list message |\n| `send-interactive-cta-url.json` | Interactive CTA URL message |\n| `send-interactive-location-request.json` | Location request message |\n| `send-interactive-catalog-message.json` | Catalog message |\n| `sample-flow.json` | Static flow example (no endpoint) |\n| `dynamic-flow.json` | Dynamic flow example (with endpoint) |\n| `webhooks-example.json` | Webhook create/update payload example |\n\n## References\n\n- [references/getting-started.md](references/getting-started.md) - Platform onboarding\n- [references/platform-api-reference.md](references/platform-api-reference.md) - Full endpoint reference\n- [references/setup-links.md](references/setup-links.md) - Setup link configuration\n- [references/detecting-whatsapp-connection.md](references/detecting-whatsapp-connection.md) - Connection detection methods\n- [references/webhooks-overview.md](references/webhooks-overview.md) - Webhook types, signature verification, retries\n- [references/webhooks-event-types.md](references/webhooks-event-types.md) - Available events\n- [references/webhooks-reference.md](references/webhooks-reference.md) - Webhook API and payload notes\n- [references/templates-reference.md](references/templates-reference.md) - Template creation rules, components cheat sheet, send-time components\n- [references/whatsapp-api-reference.md](references/whatsapp-api-reference.md) - Meta proxy payloads for messages and conversations\n- [references/whatsapp-cloud-api-js.md](references/whatsapp-cloud-api-js.md) - SDK usage for sending and reading messages\n- [references/whatsapp-flows-spec.md](references/whatsapp-flows-spec.md) - Flow JSON spec\n\n## Related skills\n\n- `automate-whatsapp` - Workflows, agents, and automations\n- `observe-whatsapp` - Debugging, logs, health checks\n\n<!-- FILEMAP:BEGIN -->\n```text\n[integrate-whatsapp file map]|root: .\n|.:{package.json,SKILL.md}\n|assets:{dynamic-flow.json,sample-flow.json,send-interactive-buttons.json,send-interactive-catalog-message.json,send-interactive-cta-url.json,send-interactive-list.json,send-interactive-location-request.json,send-template-order-status-update.json,template-authentication-otp.json,template-marketing-media-header.json,template-utility-named.json,template-utility-order-status-update.json,webhooks-example.json}\n|references:{detecting-whatsapp-connection.md,getting-started.md,platform-api-reference.md,setup-links.md,templates-reference.md,webhooks-event-types.md,webhooks-overview.md,webhooks-reference.md,whatsapp-api-reference.md,whatsapp-cloud-api-js.md,whatsapp-flows-spec.md}\n|scripts:{create-flow.js,create-function.js,create-template.mjs,create.js,delete-flow.js,delete.js,deploy-data-endpoint.js,deploy-function.js,get-data-endpoint.js,get-encryption-status.js,get-flow.js,get-function.js,get.js,list-connected-numbers.mjs,list-flow-responses.js,list-flows.js,list-function-invocations.js,list-function-logs.js,list-platform-phone-numbers.mjs,list-templates.mjs,list.js,openapi-explore.mjs,publish-flow.js,read-flow-json.js,register-data-endpoint.js,send-interactive.mjs,send-template.mjs,send-test-flow.js,set-data-endpoint.js,setup-encryption.js,submit-template.mjs,template-status.mjs,test.js,update-flow-json.js,update-function.js,update-template.mjs,update.js,upload-media.mjs,upload-template-header-handle.mjs}\n|scripts/lib:{args.mjs,cli.js,env.js,env.mjs,http.js,output.js,output.mjs,request.mjs,run.js,whatsapp-flow.js}\n|scripts/lib/webhooks:{args.js,kapso-api.js,webhook.js}\n```\n<!-- FILEMAP:END -->","tags":["integrate","whatsapp","agent","skills","gokapso"],"capabilities":["skill","source-gokapso","category-agent-skills"],"categories":["agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/gokapso/agent-skills/integrate-whatsapp","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"install_from":"skills.sh"}},"qualityScore":"0.300","qualityRationale":"deterministic score 0.30 from registry signals: · indexed on skills.sh · published under gokapso/agent-skills","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T09:40:30.184Z","embedding":null,"createdAt":"2026-04-18T20:32:17.190Z","updatedAt":"2026-04-22T09:40:30.184Z","lastSeenAt":"2026-04-22T09:40:30.184Z","tsv":"'+15551234567':601 '-100':399 '-60':392 '/conversations':717 '/messages':712 '/meta/whatsapp':585 '/meta/whatsapp/v24.0':248 '/platform/v1':42,244 '/platform/v1/customers':150,156 '1':75,146,391,398,610,670,771,825,871 '139000':1039 '2':80,151,615,675,835,880 '24':658 '3':107,158,621,681,846,891 '3.0':938,979 '4':113,163,630,853,898 '5':123,640 '50':521 '7.3':915,933 'access':26 'account':440,627,637,1087,1098,1106,1114,1121,1128 'activ':400,657 'agent':3,1441 'allow':198 'alway':412 'api':36,44,55,59,145,242,588,920,936,1396 'api.kapso.ai':584 'api.kapso.ai/meta/whatsapp':583 'area':232 'args.js':1538 'args.mjs':1527 'array':353 'asset':1286,1460 'assets/dynamic-flow.json':948 'assets/sample-flow.json':925 'assets/send-interactive-':679 'assets/template-utility-order-status-update.json':620 'async':955 'attach':865,1023 'auth':52 'authent':17,1320 'autom':1438,1443 'automate-whatsapp':1437 'avail':1391 'await':597,962 'back':968 'base':37,243,247,364 'baseurl':582 'bash':64,406,483,567,1246 'block':84 'bodi':602,961 'body.data_exchange.action':964 'body.data_exchange.data':973 'body.data_exchange.screen':969 'buffer':379,384,388,396 'buffer-en':378 'buffer-window-second':387 'build':810 'busi':439,626,636,1086,1097,1105,1113,1120,1127 'business-account-id':625,635 'button':756,758,785,788,1296,1310,1327 'call':56 'catalog':1343 'category-agent-skills' 'center':1048 'channel':1004 'cheat':1406 'check':631,1109,1207,1450 'cli':14,74,479,695 'cli.js':1528 'client':572,579 'client.conversations.get':722 'client.conversations.list':721 'client.messages.get':720 'client.messages.query':719 'client.messages.sendtext':598 'client.templates.get':723 'code':233,748,889,1195,1324 'code-fil':888 'command':482 'common':342,481 'complet':108,160,991 'compon':789,1405,1411 'config':1190 'configur':172,1376 'confirm':24,114 'connect':67,115,175,199,270,291,1379 'const':578,960 'context':86 'convers':279,302,536,701,1420 'copi':1323 'countri':208,228 'creat':147,319,571,622,820,826,881,1061,1117,1163,1179 'create-flow.js':1162,1487 'create-function.js':1488 'create-template.mjs':1116,1489 'create.js':1060,1490 'create/update':345,1192,1359 'creation':726,1403 'crud':444 'csv':350 'cta':1335 'current':970 'custom':95,98,106,148,159 'data':692,867,911,919,929,935,949,966,984,1003,1021,1188,1193,1198,1202 'debug':1447 'dedic':201,220 'default':50,194,224 'defin':943 'delet':1069,1222 'delete-flow.js':1221,1491 'delete.js':1068,1492 'deliveri':280,405 'dep':62 'deploy':892,1197 'deploy-data-endpoint.js':1196,1493 'deploy-function.js':1494 'descript':1288 'destin':348 'detail':1059,1170 'detect':174,1380 'detecting-whatsapp-connection.md':1475 'differ':431 'direct':54,144 'discov':422,438,611,671,1085 'draft':616 'dynam':869,926,1018,1352 'dynamic-flow.json':1351,1461 'edit':817 'either':799 'embed':161 'enabl':380,383,1030 'enable/disable':403 'encrypt':874,1027,1031,1208,1214 'end':764 'endpoint':868,882,912,930,950,1000,1022,1189,1194,1199,1203,1350,1356,1370 'env':33,959 'env.js':1529 'env.mjs':1530 'error':1029 'event':262,269,273,277,290,294,303,311,330,341,349,354,363,1076,1392 'event-bas':362 'exact':126 'exampl':738,1245,1348,1354,1361 'exchang':967 'exist':1125 'explor':1242 'export':988 'extension_message_response.params':996 'extern':102 'external-id':101 'fallback':31,141,705 'fals':382,402 'file':629,648,689,845,890,1287,1455 'filter':1104 'first':424,480 'flag':343 'flow':143,806,808,818,824,827,841,851,862,870,878,886,896,903,905,909,927,1012,1016,1155,1161,1166,1169,1173,1177,1185,1213,1219,1224,1228,1272,1347,1353,1432 'flow-id':840,850,861,877,885,895,902 'form':813 'format':375,729 'forward':368 'frontend':187 'full':1369 'function':956,1232,1236 'generat':152 'get':527,557,708,713,1057,1168,1187 'get-data-endpoint.js':1186,1495 'get-encryption-status.js':1206,1496 'get-flow.js':1167,1497 'get-function.js':1498 'get.js':1056,1499 'getting-started.md':1476 'gokapso':7 'graph':47 'handler':952,957 'header':53,797,1151,1318 'header/body':743,782 'health':1449 'hello':509,603 'host':39,110 'hour':659 'http.js':1531 'id':103,167,255,308,339,411,423,427,433,441,459,506,519,531,541,551,561,612,628,638,647,674,688,711,716,800,833,842,852,860,863,879,887,897,904,972,983,1083,1088,1091,1099,1107,1115,1122,1129,1136,1143,1154 'id/setup_links':157 'identifi':260 'imag':1317 'import':574 'inbox':691 'includ':737,778,999 'index':795 'init':965 'inject':1007 'input':975 'instal':15,61,566,569 'integr':1,8,1040,1453 'integrate-whatsapp':1452 'interact':651,653,1139,1326,1330,1334 'interleav':751 'invoc':1237 'iso':209,229 'js':954 'json':122,140,195,352,453,472,489,498,523,533,543,553,563,680,819,837,844,906,1174,1178,1433 'json-array':351 'json-fil':843 'kapso':13,18,21,35,43,78,88,91,94,97,104,117,132,190,212,215,356,359,361,445,464,484,490,499,511,512,524,534,544,554,605,696,699,702,1006 'kapso-api.js':1539 'kapso/whatsapp-cloud-api':570,577 'kapsoapikey':586 'keep':225 'key':45,60,589 'kind':358 'languag':234,745,747 'level':289,324 'lifecycl':271,292 'limit':520 'link':70,154,193,197,802,1285,1375 'list':90,96,120,487,515,537,547,1054,1093,1101,1159,1226,1231,1235,1331 'list-connected-numbers.mjs':1092,1500 'list-flow-responses.js':1225,1501 'list-flows.js':1158,1502 'list-function-invocations.js':1234,1503 'list-function-logs.js':1230,1504 'list-platform-phone-numbers.mjs':1084,1505 'list-templates.mjs':1100,1506 'list.js':1053,1507 'locat':1339 'log':1233,1448 'login':19 'map':1456 'market':1314 'max':395 'max-buffer-s':394 'media':251,462,796,1146 'messag':30,170,249,278,301,421,461,501,514,526,593,609,652,654,698,1077,1133,1140,1220,1328,1332,1337,1341,1344,1418,1429 'message/conversation':310 'meta':46,245,360,367,426,1046,1205,1414 'method':1381 'miss':1015 'model':917,940 'module.exports':990 'must':760,1042 'name':100,639,730,733,776,780,834,1293 'nativ':811 'need':429,786 'never':803 'new':99,218,580,1165,1180 'next':981 'node':325,334,407,455,474,613,623,633,642,683,828,838,848,855,875,883,893,900,1247,1253,1259,1265,1273,1279 'note':211,1399 'notif':664 'npm':65,568 'number':116,119,127,134,138,166,204,207,217,227,231,254,276,297,307,317,333,338,447,451,458,466,470,486,492,496,505,518,530,540,550,560,646,673,687,710,715,832,859,1090,1096,1135,1142,1153 'number/waba':1037 'oauthexcept':1038 'observ':1445 'observe-whatsapp':1444 'onboard':28,72,77,111,142,1366 'one':1024 'op':1257,1269,1277 'openapi':1238,1243 'openapi-explore.mjs':1241,1508 'oper':131,432,476 'option':49,239,923 'order':1303,1311 'otp':1321 'outbound':663 'output':121,139,452,471,488,497,522,532,542,552,562 'output.js':1532 'output.mjs':1533 'outsid':665 'overrid':240 'package.json':1458 'param':184,732,783,1294 'paramet':728,779 'path':12,32,73,694,706 'payload':370,374,618,677,1301,1360,1398,1416 'payload-vers':369 'phone':137,165,203,206,226,230,253,275,296,306,316,332,337,450,457,469,495,504,517,529,539,549,559,645,672,686,709,714,831,858,1036,1089,1095,1134,1141,1152 'phone-numb':136,274,295,315,331,449,468,494 'phone-number-id':336,503,516,528,538,548,558,644,685,830,857 'phonenumberid':599 'pick':676 'platform':241,1268,1276,1282,1365 'platform-api-reference.md':1477 'plus':221 'posit':736,770 'post':149,155 'prefer':11,71,693,734 'preview':1010 'primari':258 'process.env.kapso':587 'project':25,89,92,176,268,284,288,323,328 'project-level':287,322 'provis':202,222 'proxi':246,707,1415 'publish':822,847,1183 'publish-flow.js':1182,1509 'purpos':1052,1081,1157,1240 'queri':183 'quick':752 'raw':366 'read':420,690,814,1172,1428 'read-flow-json.js':1171,1510 'receiv':261,267 'recommend':179,189,377 'redirect':181,236 'refer':1362,1371,1474 'references/detecting-whatsapp-connection.md':1377,1378 'references/getting-started.md':1363,1364 'references/platform-api-reference.md':1367,1368 'references/setup-links.md':1372,1373 'references/templates-reference.md':1400,1401 'references/webhooks-event-types.md':1389,1390 'references/webhooks-overview.md':416,1382,1383 'references/webhooks-reference.md':417,1393,1394 'references/whatsapp-api-reference.md':1412,1413 'references/whatsapp-cloud-api-js.md':1421,1422 'references/whatsapp-flows-spec.md':815,1430,1431 'refresh':1026 'regist':899,1201 'register-data-endpoint.js':1200,1511 'relat':1435 'repli':753 'request':958,1340 'request.json':963 'request.mjs':1534 'requir':655,942,1082 'resolv':85,124,135,448,467,493 'respons':1229 'response.json':977 'retri':1388 'return':976 'root':1457 'rout':916,939 'rule':283,725,907,951,1312,1404 'run.js':1535 'sample-flow.json':1345,1462 'schema':1263 'scope':282,327 'screen':945,971,980,982,993 'script':1049,1051,1080,1156,1239,1486 'scripts/create-flow.js':829 'scripts/create-template.mjs':624 'scripts/create.js':326,335 'scripts/deploy-data-endpoint.js':894 'scripts/lib':1526 'scripts/lib/webhooks':1537 'scripts/list-platform-phone-numbers.mjs':456,475,614 'scripts/openapi-explore.mjs':1248,1254,1260,1266,1274,1280 'scripts/publish-flow.js':849 'scripts/register-data-endpoint.js':901 'scripts/send-interactive.mjs':684 'scripts/send-template.mjs':643 'scripts/send-test-flow.js':856 'scripts/set-data-endpoint.js':884 'scripts/setup-encryption.js':876 'scripts/template-status.mjs':634 'scripts/test.js':408 'scripts/update-flow-json.js':839 'sdk':564,595,718,1423 'search':1251,1283 'search/op/schema/where':1244 'second':390,393 'secur':1047 'see':415,924,947 'send':169,418,460,502,590,606,641,649,682,773,1073,1131,1138,1149,1216,1299,1409,1426 'send-interactive-buttons.json':1325,1463 'send-interactive-catalog-message.json':1342,1464 'send-interactive-cta-url.json':1333,1465 'send-interactive-list.json':1329,1466 'send-interactive-location-request.json':1338,1467 'send-interactive.mjs':1137,1512 'send-template-order-status-update.json':1297,1468 'send-template.mjs':1130,1513 'send-test-flow.js':1215,1514 'send-tim':772,1148,1298,1408 'sendmessag':1258 'session':660 'set':872,1033,1211 'set-data-endpoint.js':1191,1515 'setup':10,69,79,82,105,153,192,196,213,565,1028,1284,1374 'setup-encryption.js':1210,1516 'setup-link':191 'setup-links.md':1478 'setupwhatsappflowencrypt':1278 'sheet':1407 'show':1011,1309 'signatur':414,953,1386 'signup':162 'singl':1110 'size':397 'skill':4,5,1436 'skill.md':1459 'source-gokapso' 'spec':1249,1255,1261,1267,1275,1281,1434 'start':76 'static':908,1346 'status':22,281,632,1112,1209,1304 'store':1227 'sub':791 'submit-template.mjs':1517 'success':180,994 'tag':1270 'templat':250,443,546,556,608,617,669,704,724,777,1079,1102,1111,1119,1126,1132,1252,1291,1308,1315,1322,1402 'template-authentication-otp.json':1319,1469 'template-marketing-media-header.json':1313,1470 'template-status.mjs':1108,1518 'template-utility-named.json':1306,1471 'template-utility-order-status-update.json':1289,1472 'templatemessag':1264 'templates-reference.md':1479 'test':404,854,1075,1218 'test.js':1072,1519 'text':508,592,1451 'time':774,1150,1300,1410 'token':1013 'transit':946 'troubleshoot':1009 'true':205,381,401 'ts':573,596 'two':425 'type':200,355,792,1385 'updat':836,1065,1124,1176,1305 'update-flow-json.js':1175,1520 'update-function.js':1521 'update-template.mjs':1123,1522 'update.js':1064,1523 'upload':463,1145 'upload-media.mjs':1144,1524 'upload-template-header-handle.mjs':1525 'uri':1001,1005 'url':38,112,182,237,329,340,346,757,767,784,793,1295,1336 'url/phone_number':755 'us':210 'usag':1424 'use':20,93,164,185,219,252,264,434,668,727,740,744,769,798,807,913,931,987,992 'user':974 'util':1290,1307 'ux':188 'v1':372 'v2':373,376 'v24.0':51 'valid':944 'var':34 'variabl':741,759 'verif':1387 'verifi':413,1044 'version':48,371,914,921,932,937,978,1181 'via':594 'vs':365 'waba':442,1041,1094 'want':129 'webhook':173,177,263,265,285,298,321,347,357,410,1050,1055,1058,1063,1067,1071,1358,1384,1395 'webhook-id':409 'webhook.js':1540 'webhooks-event-types.md':1480 'webhooks-example.json':1357,1473 'webhooks-overview.md':1481 'webhooks-reference.md':1482 'whatsapp':2,9,68,118,133,216,259,300,309,446,465,485,491,500,513,525,535,545,555,697,700,703,805,812,1250,1256,1262,1271,1439,1446,1454 'whatsapp-api-reference.md':1483 'whatsapp-cloud-api-js.md':1484 'whatsapp-flow.js':1536 'whatsapp-flows-spec.md':1485 'whatsapp.conversation':313 'whatsapp.message':312 'whatsapp.message.received':386 'whatsapp.phone_number.created':178 'whatsappcli':575,581 'window':389,661,667 'without':1019 'workflow':272,293,1440 'x':58 'x-api-key':57","prices":[{"id":"10fcc78d-f7b3-443c-8bb9-053fc222588d","listingId":"806035d3-3948-4a48-ad7f-40ee15d8ee93","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"gokapso","category":"agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T20:32:17.190Z"}],"sources":[{"listingId":"806035d3-3948-4a48-ad7f-40ee15d8ee93","source":"github","sourceId":"gokapso/agent-skills/integrate-whatsapp","sourceUrl":"https://github.com/gokapso/agent-skills/tree/master/skills/integrate-whatsapp","isPrimary":false,"firstSeenAt":"2026-04-18T22:11:59.295Z","lastSeenAt":"2026-04-22T06:55:27.972Z"},{"listingId":"806035d3-3948-4a48-ad7f-40ee15d8ee93","source":"skills_sh","sourceId":"gokapso/agent-skills/integrate-whatsapp","sourceUrl":"https://skills.sh/gokapso/agent-skills/integrate-whatsapp","isPrimary":true,"firstSeenAt":"2026-04-18T20:32:17.190Z","lastSeenAt":"2026-04-22T09:40:30.184Z"}],"details":{"listingId":"806035d3-3948-4a48-ad7f-40ee15d8ee93","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"gokapso","slug":"integrate-whatsapp","source":"skills_sh","category":"agent-skills","skills_sh_url":"https://skills.sh/gokapso/agent-skills/integrate-whatsapp"},"updatedAt":"2026-04-22T09:40:30.184Z"}}