Wrapper HTTP personale su Claude Code (headless). Uso privato — tutte le rotte /v1/* richiedono autenticazione.
/v1/* deve avere l'header
Authorization: Bearer <API_KEY> (in alternativa x-api-key: <API_KEY>).
Servizio a uso strettamente personale: i limiti dell'abbonamento Claude (finestra 5h + settimanale) valgono anche qui.
/health
Pubblico. Stato del servizio e se il token Claude è configurato.
/v1/ask
Invia un prompt a Claude Code. Body JSON:
| campo | tipo | descrizione |
|---|---|---|
prompt | string · obbligatorio | Il prompt. |
model | string | Alias opus / sonnet / haiku oppure id completo (es. claude-sonnet-5). Default: sonnet. |
session_id | string | Riprende una conversazione precedente (dal campo session_id della risposta). |
system_prompt | string | Istruzioni aggiuntive di sistema. |
workdir | string | Sottocartella del workspace (es. progetto-x): creata se non esiste, i file generati restano lì. |
allowed_tools | string[] | Limita gli strumenti (es. ["Read","WebSearch"]). Default: tutti. |
stream | bool | true → risposta in streaming SSE (eventi JSON riga per riga). |
timeout_ms | number | Timeout della richiesta (max quello del server, default 15 min). |
Esempio:
curl -s https://claude-api.alessandromanzullo.it/v1/ask \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Riscrivi in tono umano questo testo: ...",
"model": "opus"
}'
Risposta: { ok, result, session_id, model, num_turns, duration_ms, usage }.
Per continuare la conversazione, rimanda session_id.
/v1/models
Alias disponibili e modello di default.
/v1/skills
Skill installate sul server (caricate automaticamente da Claude Code quando pertinenti — puoi anche citarle nel prompt, es. "usa la skill humanizer-it").
/v1/version
Versione del wrapper e di Claude Code.
/v1/update
Aggiorna Claude Code all'ultima versione (npm i -g @anthropic-ai/claude-code@latest). Risponde con versione prima/dopo.
curl -s -X POST https://claude-api.alessandromanzullo.it/v1/update \ -H "Authorization: Bearer $API_KEY"
curl -N https://claude-api.alessandromanzullo.it/v1/ask \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "Scrivi un articolo su...", "stream": true}'
Ogni evento data: è un oggetto JSON di Claude Code (formato stream-json); l'evento finale è event: done.
CLAUDE_CODE_OAUTH_TOKEN) dura ~1 anno: se l'API risponde 401/503, rigenerarlo con claude setup-token sul Mac e aggiornare il .env sulla VPS.data/claude-home sulla VPS: sopravvivono ai riavvii./v1/ask con header Authorization.