Cakto SPA — integração via Bearer + cookies
OAuth público é insuficiente. Endpoints internos, enums e auth descobertos via DevTools curl.
Cakto SPA integration
Por que precisa
OAuth público (api.cakto.com.br/public_api/) limitações:
- POST
/products/(criar): 404 contentDeliveries: PUT aceita mas silenciosamente filtra valores desconhecidosimage: aceita URL mas descarta (volta null)
SPA interna (api.cakto.com.br/api/) resolve.
Auth
| Item | Onde |
|---|---|
| Bearer JWT | localStorage.access_token, expira ~24h |
| csrftoken | Cookie HTTP, renova navegação |
| sessionid | Cookie HTTPOnly Django SSO, ~2 semanas |
| session-Rghd... | Cookie HTTPOnly Express app |
Captura DevTools
- Login em
app.cakto.com.br - F12 → Network → filtra Fetch/XHR → qualquer ação
- Copy as cURL (bash)
- Extrai pro
.secrets.env:CAKTO_BEARER,CAKTO_CSRF,CAKTO_SESSIONID,CAKTO_SESSION_APP
Endpoints descobertos
POST /api/products/ — criar placeholder
Body: {name, description, price, currency}. Retorna UUID, status="active".
PUT /api/product/<uuid>/ — update FULL
ATENÇÃO: /product/ singular. /products/<uuid>/ plural = 404.
Full-payload (não partial). Mínimos: name, description, price, type, installments, contentDeliveries, emailAccessLink, salesPage, producerName, supportEmail, guarantee, paymentMethods, paymentsOrder, defaultPaymentMethod, sendConfirmationEmail.
PUT /api/product/<uuid>/image/ — upload cover multipart
Field image=@cover.png;type=image/png. Retorna {detail: "Imagem salva com sucesso"}. Cover fica em cdn-checkout.cakto.com.br/products/<id>.
POST /public_api/webhook/ — webhook per-product (OAuth)
Body: {name, url, events:["purchase_approved"], products:[<uuid1>,...]}. Webhooks NÃO são globais — vinculam UUIDs específicos. Eventos válidos: só purchase_approved confirmado.
POST /api/pixels/pixel_domain/ — registrar pixel domain (user-level, 2026-06-01)
Body: {"domain":"pixels.<your-domain>"}. Retorna ID do domain (ex: 34622).
Insight não-óbvio: pixel domain no Cakto é user-level/conta, não per-product. Tu registra UMA vez e aplica a todos os produtos do producer automaticamente. UI Cakto NÃO tem campo "Pixel ID" por produto — só campo "Domínio" no painel de pixels da conta.
POST /api/pixels/pixel_domain/<id>/verify/ — disparar provisioning edge
Cakto checa o CNAME pixels.<your-domain> → pixels.cakto.com.br e provisiona SSL/edge no lado deles. Async, leva ~5-30min após chamada.
Setup completo (user-level, único pro producer):
- DNS: CNAME
pixels.<your-domain>→pixels.cakto.com.br(proxy OFF se Cloudflare) - Meta Business: verificar root domain via TXT + adicionar à Lista de Permissão do Pixel
- Cakto: POST registrar + POST verify (curls da UI)
- Aguardar provisioning (
pixels.cakto.com.brretorna NXDOMAIN até Cakto ativar — não confundir com erro DNS teu)
Caso real swarm 2026-06-01: domain ID 34622 pra pixels.kodama.solutions. Pixel Meta 2037993396952269. Provisioning iniciado.
Enums descobertos (NUNCA chutar — só via DevTools)
| Campo | Valores |
|---|---|
type |
"unique", "recurring" |
contentDeliveries |
["disabled"], ["emailAccess"], provavelmente ["cakto"] (members), ["external"] |
paymentMethods itens |
applepay, boleto, credit_card, googlepay, picpay, pix, pix_auto, threeDs |
affiliateClick |
"last", presumível "first" |
Lição: testei 20+ variantes de contentDeliveries (email, email_access, mail, emailAccessLink, etc) — todas silenciosamente revertem pra disabled. Só emailAccess (camelCase) é aceito. OAuth API filtra; só SPA aceita.
MCP tools no swarm (swarm-mcp.mjs)
- OAuth public_api:
cakto_list_products,cakto_get_product,cakto_update_product(partial fields que OAuth aceita),cakto_create_offer,cakto_setup_webhook - SPA Bearer+cookies:
cakto_upload_image(product_id),cakto_configure_delivery(product_id)(PUT full + signed PDF URL HMAC TTL 30d) - TODO:
cakto_register_pixel_domain(domain)+cakto_verify_pixel_domain(domain_id)— endpoints já mapeados (curls em vault, ver acima), só falta wrap em MCP tool
Pendências
- Refresh Bearer JWT: token expira 24h. Atualmente captura manual via DevTools. TODO: descobrir endpoint
/refreshou similar. - Affiliate marketplace: Cakto tem marketplace de afiliados (
affiliateMarketplace: true) — não explorado ainda. Pode ser flywheel pra distribuição depois de R$5k de venda (similar à regra Kiwify documentada antes).
Workflow completo de venda automática (5 PT-BR confirmado funcionando 2026-05-31)
agent-maker.make_prompt_pack→ gera PDF + cover, salva DB- User cadastra placeholder no Cakto (1×, 5min) ou
cakto_seed_products.pyautomatiza cakto_update_product(OAuth) → title/desc/price/sales_pagecakto_upload_image(SPA) → cover.pngcakto_configure_delivery(SPA) → emailAccess + signed PDF URLcakto_setup_webhook(OAuth) → notifica/api/webhooks/caktoem vendasagent-marketing.publish_meta_campaign_portfolio→ 1 camp / 5 adsets PAUSED- User revisa preview Ads Manager + ativa
- Vendas → webhook →
product_sales→/campanhasmostra P&L real
Por que documentei
SPAs comerciais não documentam endpoints internos. Mas pra integração com plataformas BR (Cakto, e provavelmente Hotmart, Eduzz), capturar via DevTools é o caminho real quando OAuth é insuficiente. Pattern reutilizável.