claude-api

Wrapper HTTP personale su Claude Code (headless). Uso privato — tutte le rotte /v1/* richiedono autenticazione.

Autenticazione: ogni richiesta a /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.

Endpoint

GET/health

Pubblico. Stato del servizio e se il token Claude è configurato.

POST/v1/ask

Invia un prompt a Claude Code. Body JSON:

campotipodescrizione
promptstring · obbligatorioIl prompt.
modelstringAlias opus / sonnet / haiku oppure id completo (es. claude-sonnet-5). Default: sonnet.
session_idstringRiprende una conversazione precedente (dal campo session_id della risposta).
system_promptstringIstruzioni aggiuntive di sistema.
workdirstringSottocartella del workspace (es. progetto-x): creata se non esiste, i file generati restano lì.
allowed_toolsstring[]Limita gli strumenti (es. ["Read","WebSearch"]). Default: tutti.
streambooltrue → risposta in streaming SSE (eventi JSON riga per riga).
timeout_msnumberTimeout 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.

GET/v1/models

Alias disponibili e modello di default.

GET/v1/skills

Skill installate sul server (caricate automaticamente da Claude Code quando pertinenti — puoi anche citarle nel prompt, es. "usa la skill humanizer-it").

GET/v1/version

Versione del wrapper e di Claude Code.

POST/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"

Streaming (SSE)

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.

Note operative