Vai al contenuto
Centro assistenza Clevera

Usa la REST API di Clevera

Chiama Clevera dai tuoi script: URL di base, autenticazione con bearer-token, endpoint e i relativi permessi necessari, il flusso di preventivo-e-avvio per il lavoro a pagamento, idempotenza, formato degli errori e limiti di frequenza.

Aggiornato 9 min di lettura

La REST API di Clevera consente ai tuoi script e servizi di eseguire ciò che un agente può fare tramite MCP: leggere la tua libreria, richiedere video e articoli, esportare video, lavorare su siti di documentazione e seguire i lavori. Questo articolo copre l'URL di base, l'autenticazione, il flusso di richiesta per il lavoro a pagamento, gli errori e i limiti di frequenza.

Nozioni di base

URL di base https://app.clevera.ai/api/v1
Autenticazione Authorization: Bearer <token> con un token API (inizia con clv_agent_)
Formato JSON in entrata e in uscita. Invia Accept: application/json e, con un corpo, Content-Type: application/json.
Id Id pubblici, come job_… per i lavori. Usa gli id restituiti dall'API.

Verifica un token con GET /docs/me:

Terminal
curl -H "Authorization: Bearer $CLEVERA_TOKEN" \
     -H "Accept: application/json" \
     https://app.clevera.ai/api/v1/docs/me

La risposta indica per conto di chi agisce il token: nome e scadenza del token, la persona e il suo ruolo attuale, l'area di lavoro, i siti inclusi nell'ambito e i permessi attualmente attivi (i permessi del token ridotti al ruolo attuale della persona). Chiamalo per primo quando una chiamata viene rifiutata.

Endpoint

Ogni endpoint richiede il permesso mostrato. Chiamarne uno senza di esso restituisce 403 forbidden_ability. Vedi Permessi dell'agente.

Libreria e materiali

Metodo e percorso Permesso Cosa fa
GET /create/types any I tipi di video e clip social che puoi richiedere.
GET /library library:read Video, registrazioni e articoli che il proprietario del token può vedere.
GET /recordings library:read Solo registrazioni.
GET /library/{item} library:read Un elemento.
GET /library/{item}/transcript library:read La sua trascrizione.
GET /library/{item}/article library:read Il suo articolo.
GET /library/{item}/embed library:read Il suo codice di incorporamento.
GET /materials library:read Immagini, video e PDF caricati.
POST /materials, POST /materials/import, POST /materials/uploads, POST /materials/uploads/{upload_id}/complete materials:write Aggiungi un'immagine, un video o un PDF (direttamente, da un URL o come caricamento di grandi dimensioni).

Video e articoli

Metodo e percorso Permesso Cosa fa
POST /videos/quotes videos:create Cita un video da una registrazione (type: how_to, product_demo, cleanup, styled_video), un articolo da una registrazione (article) o una traduzione (translation).
POST /videos videos:create + credits:spend Crea il video citato (quote_id).
POST /articles/from-recording videos:create + credits:spend Crea l'articolo citato.
POST /videos/translations videos:create + credits:spend Crea la traduzione citata.
POST /clips/quotes videos:create Cita una clip social (tipi da GET /create/types).
POST /clips videos:create + credits:spend Crea la clip social citata.
POST /videos/{video_id}/exports videos:export Esegui il rendering di un MP4: resolution 1080p (predefinito), 2k o 4k; sempre 60 fps. Gratuito.

Lavori e crediti

Metodo e percorso Permesso Cosa fa
POST /quotes il permesso del lavoro Un preventivo per qualsiasi tipo di lavoro.
POST /jobs il permesso del lavoro (+ credits:spend quando a pagamento) Avvia un lavoro preventivato.
GET /jobs jobs:read Elenca i lavori.
GET /jobs/{job} jobs:read Stato e risultato di un lavoro.
GET /jobs/{job}/wait jobs:read Attendi un cambiamento invece di eseguire il polling.
GET /jobs/{job}/events jobs:read Eventi di avanzamento del lavoro.
POST /jobs/{job}/cancel jobs:read Annulla un lavoro. Troppo tardi: "Questo lavoro non può più essere annullato."
GET /credits credits:spend o jobs:read Saldo crediti dell'area di lavoro.

Siti di documentazione

Metodo e percorso Permesso Cosa fa
GET /docs/sites, GET /docs/sites/{site}, GET /docs/sites/{site}/tree, GET /docs/sites/{site}/pages content:read Siti nell'ambito del token e le loro pagine.
GET /docs/sites/{site}/search, GET /docs/pages/{page}, GET /docs/pages/{page}/revisions content:read Cerca e leggi pagine, bozze incluse.
POST /docs/sites/{site}/articles, PATCH /docs/pages/{page}/article, POST /docs/pages/{page}/review articles:write Crea e modifica bozze di articoli, invia per la revisione. Gli articoli pubblicati richiedono anche site:publish.
PATCH /docs/pages/{page}, DELETE /docs/pages/{page}, POST /docs/sites/{site}/sections, PATCH /docs/sections/{section} structure:write Sposta, rinomina, nascondi e rimuovi pagine; sezioni.
GET/POST /docs/sites/{site}/site-pages, PUT /docs/site-pages/{page}/body content:read / site-pages:write Pagine home, contatti e legali.
GET/POST /docs/sites/{site}/changelog, PATCH /docs/changelog/{entry} content:read / changelog:write Voci del registro delle modifiche come bozze.
POST /docs/media, POST /docs/media/uploads media:write Carica immagini.
POST /docs/sites/{site}/publish, POST /docs/pages/{page}/ready, POST /docs/changelog/{entry}/publish site:publish Pubblica ciò che vedono i lettori.
GET /insights/sites/{site}, …/gaps, …/feedback insights:read Lacune di ricerca, domande senza risposta, feedback sulle pagine.
PATCH /docs/sites/{site}/settings, …/appearance, PUT …/navigation, POST …/redirects site:configure Impostazioni del sito.
POST /docs/sites sites:create Crea un sito di documentazione.

Altro su agenti e siti di documentazione: Connetti agenti AI ai tuoi siti di documentazione.

Il lavoro che costa crediti prevede sempre prima un preventivo, poi l'avvio:

  1. Preventivalo. POST /videos/quotes (o /clips/quotes) con ciò che desideri. La risposta contiene un quote_id e l'intervallo di crediti. Un preventivo è valido per 15 minuti e può essere utilizzato una volta.
  2. Facoltativamente, esegui una prova. Invia l'avvio con "dry_run": true per sapere se verrebbe avviato, se necessita di approvazione o se verrebbe bloccato. Non viene scritto nulla.
  3. Avvialo. POST /videos con quote_id e un'intestazione Idempotency-Key. La risposta è 202 con un lavoro.
  4. Seguilo. GET /jobs/{job}/wait finché lo status del lavoro non cambia, oppure ascolta i webhook.
Quote, then start a how-to video
curl -X POST https://app.clevera.ai/api/v1/videos/quotes \
  -H "Authorization: Bearer $CLEVERA_TOKEN" -H "Content-Type: application/json" \
  -d '{"type": "how_to", "recording_id": "<recording id>", "language": "en-US"}'

curl -X POST https://app.clevera.ai/api/v1/videos \
  -H "Authorization: Bearer $CLEVERA_TOKEN" -H "Content-Type: application/json" \
  -H "Idempotency-Key: 3f6c1a2e-8d4b-4f7a-9c1e-2b5d7e9f0a13" \
  -d '{"quote_id": "<quote id>"}'

Stati del lavoro:

Stato Significato
queued Accettato, in procinto di essere eseguito.
running In esecuzione.
needs_input In attesa di una persona, solitamente un'approvazione su Richieste dell'agente. Il lavoro contiene un link e una scadenza.
succeeded Completato. Il lavoro collega il nuovo video o articolo.
failed Non riuscito; il lavoro ha un error_code.
canceled Annullato, o la sua approvazione è stata negata.
expired Nessuno lo ha approvato entro 24 ore.

Se un avvio viene eseguito immediatamente o attende una persona dipende dai limiti di spesa del token e dalla sua impostazione Approva automaticamente sotto. Vedi Controlla la spesa e le approvazioni dell'agente.

Riprova e idempotenza

Invia un'intestazione Idempotency-Key (un UUID nuovo per ogni azione) a ogni creazione e avvio. Se la rete cade e riprovi con la stessa chiave e lo stesso corpo, riceverai la prima risposta invece di un secondo video. Le chiavi vengono memorizzate per 24 ore.

Codice Significato
idempotency_key_reused La stessa chiave con un corpo diverso. Usa una nuova chiave per una nuova richiesta.
idempotency_in_progress La prima richiesta con questa chiave è ancora in esecuzione. Attendi e riprova.
idempotency_conflict "Questa chiave di idempotenza è stata utilizzata per una richiesta diversa."

Errori

Ogni errore ha la stessa forma, con un messaggio che indica cosa fare dopo:

{
  "error": {
    "code": "forbidden_ability",
    "message": "This token lacks the videos:create ability. Ask the workspace member who owns it for a token that has it.",
    "details": { "ability": "videos:create" }
  },
  "request_id": "req_example"
}

Includi il request_id quando contatti l'assistenza.

HTTP Codici Causa tipica
401 unauthenticated, token_expired, token_revoked Nessun token, uno errato, o uno scaduto o revocato.
402 insufficient_credits L'area di lavoro non ha abbastanza crediti per il preventivo.
403 forbidden_ability, forbidden_role, forbidden_item, ip_not_allowed, live_content_needs_publish, site_paused, forbidden Permesso mancante, ruolo del proprietario, accesso alla raccolta o lista consentita IP.
403 plan_locked "L'API dell'agente non è nel piano di questa area di lavoro. È disponibile da Pro in su."
404 not_found, unknown_kind "Nessun … con quell'id nell'ambito di questo token. Elenca o cerca prima e usa un id restituito."
409 revision_conflict, quote_used, not_cancelable, idempotency_* Il contenuto è cambiato, il preventivo è stato utilizzato o un conflitto di riprova.
410 quote_expired "Questo preventivo è scaduto. Richiedi un nuovo preventivo."
413 unsupported_media Il file è troppo grande o non è di un tipo supportato.
422 validation_failed, invalid_input, quote_mismatch, limit_reached Un campo è errato; details lo nomina.
429 rate_limited, cap_exceeded, busy Troppe richieste, un limite di spesa o due avvii contemporaneamente.

Ogni messaggio, con la soluzione: Correggi gli errori dell'agente e dell'API.

Limiti di frequenza

Limite Valore Messaggio
Richieste per token 300 al minuto "Questo token ha superato la sua frequenza di richieste. Attendi e riprova."
Richieste per area di lavoro 1.200 al minuto, tutti i token insieme "Questa area di lavoro ha superato la sua frequenza di richieste dell'agente. Attendi e riprova."
Scritture per token 60 al minuto "Troppe scritture da questo token. Attendi e riprova."
Scritture per token al giorno 2.000 "Questo token ha raggiunto il suo limite giornaliero di scrittura. Riprova domani."
Pubblicazioni per token 10 all'ora "Questo token ha raggiunto il suo limite orario di pubblicazione. Riprova più tardi."
Avvii a pagamento 20 all'ora per token, 100 al giorno per area di lavoro rate_limited con retry_after
Caricamenti 30 al minuto; 500 MB al giorno per token; 25 MB per file "Troppi caricamenti da questo token. Attendi e riprova." / "Questo token ha raggiunto il suo volume giornaliero di caricamento. Riprova domani."
Chiamate senza un token valido 60 al minuto per indirizzo IP "Troppe richieste. Attendi e riprova."

Una risposta 429 ha un'intestazione Retry-After e retry_after (secondi) nel corpo. Attendi quel tempo prima di riprovare. Letture, preventivi e controlli di stato non costano crediti.