{"openapi":"3.1.0","info":{"title":"Akked WhatsApp API","version":"1.0.0","description":"Plan-independent WhatsApp API for safe, template-based messages through a selected Meta Cloud API or Baileys sender."},"servers":[{"url":"https://akked.app"}],"security":[{"bearerAuth":[]}],"paths":{"/api/v1/senders":{"get":{"summary":"Get the sender bound to this API key","responses":{"200":{"description":"Sender list"},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"request_id":{"type":"string","format":"uuid"},"fields":{"type":"object","additionalProperties":true}},"required":["code","message"]}}}}}},"403":{"description":"Sender unavailable"}}}},"/api/v1/templates":{"get":{"summary":"List exact template contracts","parameters":[{"name":"sender_id","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Template contract list"},"403":{"description":"Inactive entitlement"}}}},"/api/v1/messages":{"post":{"summary":"Queue an approved template message","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendTemplateRequest"}}}},"responses":{"202":{"description":"Queued or existing idempotent dispatch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DispatchAccepted"}}}},"402":{"description":"Insufficient credits"},"403":{"description":"API access, sender, or safety acknowledgement unavailable"},"409":{"description":"Idempotency conflict"},"422":{"description":"Invalid parameters, opt-out, suppression, or frequency cap"},"429":{"description":"Rate limit exceeded"},"503":{"description":"Service unavailable"}}}},"/api/v1/messages/{id}":{"get":{"summary":"Get dispatch status","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Dispatch status"},"404":{"description":"Message not found"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"ak_live_..."}},"schemas":{"SendTemplateRequest":{"type":"object","additionalProperties":false,"required":["to","template_key","language","parameters"],"properties":{"sender_id":{"type":"string","format":"uuid","description":"Optional. The API key is already bound to this sender."},"to":{"type":"string","pattern":"^\\+[1-9]\\d{6,14}$"},"template_key":{"type":"string"},"language":{"type":"string","enum":["en","ar"]},"parameters":{"type":"object","additionalProperties":true}}},"DispatchAccepted":{"type":"object","required":["id","status","status_url"],"properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["queued","sending","sent","delivered","read","failed","canceled"]},"status_url":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"request_id":{"type":"string","format":"uuid"},"fields":{"type":"object","additionalProperties":true}},"required":["code","message"]}}}}},"x-akked-template-contracts":[{"key":"order_confirmation","category":"UTILITY","languages":["en","ar"],"parameters":{"customer_name":{"type":"string","required":true,"description":"Customer name","maxLength":120},"order_number":{"type":"string","required":true,"description":"Order number","maxLength":80},"store_name":{"type":"string","required":true,"description":"Store name","maxLength":120},"total":{"type":"string","required":true,"description":"Formatted order total","maxLength":40},"currency":{"type":"string","required":true,"description":"ISO 4217 currency code","maxLength":3},"items":{"type":"string","required":true,"description":"Formatted line items","maxLength":2000},"address":{"type":"string","required":true,"description":"Delivery address","maxLength":512},"order_date":{"type":"string","required":true,"description":"Order date","maxLength":64}},"preview":{"en":"Hi Mona! 👋\n\nYour order 1048 from Akked Store has been received.\nTotal: 450 EGP\nItems: 1 x Sneakers\nDelivery to: Cairo, Egypt\nOrder date: July 26, 2026","ar":"أهلاً Mona! 👋\n\nنؤكد استلام طلبك رقم 1048 من Akked Store\nالإجمالي: 450 EGP\nالمنتجات: 1 x Sneakers\nالعنوان: Cairo, Egypt\nتاريخ الطلب: July 26, 2026"},"capabilities":{"native_buttons":true,"text_rendering":true,"meta_approval_required":true}},{"key":"confirmed_reply","category":"UTILITY","languages":["en","ar"],"parameters":{"customer_name":{"type":"string","required":true,"description":"Customer name","maxLength":120},"order_number":{"type":"string","required":true,"description":"Order number","maxLength":80}},"preview":{"en":"Thank you Mona, your order 1048 is confirmed.","ar":"شكراً Mona، تم تأكيد طلبك رقم 1048."},"capabilities":{"native_buttons":true,"text_rendering":true,"meta_approval_required":true}},{"key":"cancelled_reply","category":"UTILITY","languages":["en","ar"],"parameters":{"customer_name":{"type":"string","required":true,"description":"Customer name","maxLength":120},"order_number":{"type":"string","required":true,"description":"Order number","maxLength":80}},"preview":{"en":"Your order 1048 has been cancelled, Mona.","ar":"تم إلغاء طلبك رقم 1048 يا Mona."},"capabilities":{"native_buttons":true,"text_rendering":true,"meta_approval_required":true}},{"key":"paid_order","category":"UTILITY","languages":["en","ar"],"parameters":{"customer_name":{"type":"string","required":true,"description":"Customer name","maxLength":120},"order_number":{"type":"string","required":true,"description":"Order number","maxLength":80},"store_name":{"type":"string","required":true,"description":"Store name","maxLength":120},"total":{"type":"string","required":true,"description":"Formatted order total","maxLength":40},"currency":{"type":"string","required":true,"description":"ISO 4217 currency code","maxLength":3},"items":{"type":"string","required":true,"description":"Formatted line items","maxLength":2000},"address":{"type":"string","required":true,"description":"Delivery address","maxLength":512},"order_date":{"type":"string","required":true,"description":"Order date","maxLength":64}},"preview":{"en":"Thank you Mona! Your order 1048 from Akked Store has been paid and confirmed.\nTotal: 450 EGP\nItems: 1 x Sneakers\nDelivery to: Cairo, Egypt","ar":"شكراً Mona! تم دفع وتأكيد طلبك رقم 1048 من Akked Store.\nالإجمالي: 450 EGP\nالمنتجات: 1 x Sneakers\nالعنوان: Cairo, Egypt"},"capabilities":{"native_buttons":true,"text_rendering":true,"meta_approval_required":true}},{"key":"abandoned_cart","category":"MARKETING","languages":["en","ar"],"parameters":{"customer_name":{"type":"string","required":true,"description":"Customer name","maxLength":120},"store_name":{"type":"string","required":true,"description":"Store name","maxLength":120},"total":{"type":"string","required":true,"description":"Formatted cart total","maxLength":40},"currency":{"type":"string","required":true,"description":"ISO 4217 currency code","maxLength":3},"cart_step":{"type":"string","required":true,"description":"Checkout step","maxLength":120},"recovery_url":{"type":"string","required":true,"description":"Checkout recovery URL","maxLength":2048}},"preview":{"en":"Hi Mona!\n\nYour products from Akked Store are still waiting for you.\nTotal: 450 EGP\nLast step: checkout\n\nComplete your order here:\nhttps://akked.app/r/example-token\n\nReply STOP if you no longer want these messages.","ar":"أهلاً Mona!\n\nما زالت منتجاتك من Akked Store في انتظارك.\nالإجمالي: 450 EGP\nآخر خطوة: checkout\n\nأكمل طلبك من هنا:\nhttps://akked.app/r/example-token\n\nإذا لم تعد ترغب في استلام هذه الرسائل، أرسل STOP."},"capabilities":{"native_buttons":true,"text_rendering":true,"meta_approval_required":true}},{"key":"otp","category":"AUTHENTICATION","languages":["en","ar"],"parameters":{"code":{"type":"string","required":true,"description":"One-time password","maxLength":10}},"preview":{"en":"Your verification code is: 482901\nDo not share this code with anyone.","ar":"رمز التحقق الخاص بك هو: 482901\nلا تشارك هذا الرمز مع أي شخص."},"capabilities":{"native_buttons":true,"text_rendering":true,"meta_approval_required":true}}]}