Skip to main content
Piano Agency · €199/mese

API REST WooshStore

Crea progetti, gestisci chat AI, importa prodotti, pubblica store — tutto da script, n8n, dashboard custom. Autenticazione Bearer su ogni endpoint pubblico dell'app.

HTTPS onlyBearer tokenJSON in/outStreaming SSE per chat

1. Quick start

Tre passi per usare le API:

  1. Passa al piano Agency da /app/billing.
  2. Genera la key in /app/api-keys — copia il valore (mostrato solo una volta).
  3. Chiama qualunque endpoint con Authorization: Bearer wsk_....
curl https://wooshstoreai.com/api/projects \
  -H "Authorization: Bearer wsk_xxxxxxxxxxxxxxxx..." \
  -H "Accept: application/json"

2. Autenticazione

Tutti gli endpoint sotto /api/* accettano due metodi alternativi di auth:

  • Cookie session — usato dalla UI Next.js dopo login. Niente da fare lato client.
  • Bearer API key — header Authorization: Bearer wsk_.... Per script e integrazioni.

Le API key sono hash SHA-256 a riposo; il valore in chiaro è mostrato solo al momento della creazione. Revocale dal pannello /app/api-keys appena sospetti compromissione.

Authorization: Bearer wsk_q3VYz...K8RT
Content-Type: application/json
Accept: application/json

3. Progetti

Lista progetti

GET /api/projects?q=<query>&archived=<0|1>&limit=<n>

Restituisce array projects con stato, brand, dominio, contatori prodotti.

Crea progetto

POST /api/projects
{
  "title": "Beauty premium · cliente XYZ",
  "initialState": {
    "niche": "Beauty premium skincare",
    "targetGeo": "Europa",
    "brandStyle": "Premium",
    "brandName": "GlowLab",
    "persona": "Donne 28-40 anni, professioniste, sensibili al benessere",
    "targetLocales": ["it", "en", "fr"]
  }
}

Il payload initialState è Zod-whitelisted: campi extra vengono droppati silenziosamente per sicurezza.

Dettaglio progetto

GET /api/projects/:id

4. Chat AI streaming

L'endpoint chat ritorna eventi Server-Sent Events (SSE): text, tool_call, tool_result, state_patch, done, error.

POST /api/chat/:projectId
{"message": "Genera 5 brand name premium per beauty skincare"}
curl -N https://wooshstoreai.com/api/chat/prj_xxx \
  -H "Authorization: Bearer wsk_..." \
  -H "Content-Type: application/json" \
  -d '{"message":"Crea uno store fashion in italiano partendo da questo prodotto"}'

Senza ANTHROPIC_API_KEY in env, la chat fa fallback a una demo scripted deterministica (utile per testing).

5. Shopify OAuth

Avvia il flow OAuth standard per uno store esistente:

GET /api/shopify/install?shop=<store.myshopify.com>&project=<projectId>

Per i merchant senza account Shopify, redirige al programma partner WooshStore (commission 20% lifetime allo store):

GET /api/shopify/install?action=partner&project=<projectId>

Token salvato cifrato AES-256-GCM con WOOSHSTORE_ENCRYPTION_KEY. Mai esposto via API.

6. Billing webhooks (Whop)

Eventi gestiti automaticamente — non chiamare manualmente a meno di necessità debug:

POST /api/billing/webhook
X-Whop-Signature: t=..., v1=<hmac>
{
  "action": "invoice_paid",
  "data": {
    "id": "inv_...",
    "metadata": {
      "type": "wooshstore",
      "wooshstore_user_id": "<merchantId>",
      "wooshstore_tier": "pro"
    }
  }
}

Eventi ascoltati:

  • invoice_paid · membership_activated · membership.went_valid → upgrade Pro/Agency
  • membership.cancelled · membership.went_invalid → downgrade FREE

7. Errori standard

Tutti gli errori sono JSON con ok: false e un code stabile:

HTTPCodeSignificato
400INVALID_JSONBody non parsabile come JSON
400VALIDATIONZod schema fallito (vedi `issues`)
401UNAUTHENTICATEDManca sessione cookie o Bearer key
403PLAN_REQUIREDFunzionalità riservata a Pro/Agency
403FORBIDDENFounder-only o cross-tenant
404NOT_FOUNDRisorsa inesistente o non tua
429COST_LIMIT_EXCEEDEDToken Claude budget esaurito per il progetto
429TOO_MANY_KEYSHai >10 API keys attive
503STRIPE_NOT_CONFIGURED / WHOP_NOT_CONFIGUREDBilling non ancora live
503NO_DATABASEDATABASE_URL non impostata sul project

8. Rate limit & costi

  • Chat AI — max 30 messaggi/h per progetto, 100 messaggi/h per utente
  • Token budget — limite per progetto (default 200K input + 50K output per Free, alzato Pro/Agency)
  • API keys — max 10 attive per merchant (revocale prima di crearne nuove)
  • Magic Import — scraping reale; se mancano media/prodotto, errore esplicito e niente prodotti finti
  • Webhook GDPR — risposta entro 30s, audit log su tutti gli eventi (anche replay)