API Reference
PerSeo Insights REST API v1.0
Base URL
https://insights.perseodesign.com/api/v1
L'API REST di PerSeo Insights permette di avviare scansioni SEO, leggere i risultati, esportare report e gestire i token di accesso in modo programmatico. Ideale per CI/CD, monitoring automatizzato e integrazioni con tool di terze parti.
Per creare la tua prima API key accedi alla Dashboard, sezione API & Token.
Autenticazione
Tutti gli endpoint richiedono un Bearer token nell'header HTTP:
API Key (permanente)
Token a lunga vita creati dalla Dashboard. Iniziano con sk_live_. Usali per script, automazioni e integrazioni server-side.
JWT (sessione 24h)
Token a breve vita emessi da POST /auth/login. Usali per client interattivi che richiedono login esplicito.
Scopes disponibili
| Scope | Descrizione |
|---|---|
| read | Accesso in lettura: profilo, history, lista token |
| scan | Avvia nuove scansioni (POST /scans) |
| export | Esporta risultati (GET /scans/{id}/export/{format}) |
Rate Limits
I limiti API sono allineati ai limiti del sito web. Il reset avviene ogni 24h (finestra mobile).
| Tier | Single Scan/giorno | Sitemap Scan/giorno |
|---|---|---|
| Guest (non autenticato) | 1 | 1 |
| Free (registrato) | 5 | 5 |
| Pro | 50 | 10 |
Per maggiori dettagli sui piani e le funzionalità, visita la pagina dei Prezzi.
Response Format
Tutte le risposte seguono il formato standard JSON:
Successo
Errore
Auth
/api/v1/auth/login
No auth
Autentica con email/password e riceve un JWT access token (24h).
Response 200
/api/v1/auth/verify
JWT Bearer
Verifica la validita' di un JWT token.
Token Management
/api/v1/tokens
scope: read
Lista tutte le API key dell'utente autenticato.
/api/v1/tokens
scope: read
Crea una nuova API key. Il token viene mostrato una sola volta.
| Campo | Tipo | Req. | Descrizione |
|---|---|---|---|
| name | string | SI | Etichetta del token (max 100 char) |
| scopes | array | NO | Default ["read"]. Valori: read, scan, export |
token nella risposta viene mostrato una sola volta. Salvalo subito in modo sicuro.
/api/v1/tokens/{id}
scope: read
Revoca (disattiva) permanentemente un'API key.
Scansioni
/api/v1/scans
scope: scan
Avvia una scansione SEO asincrona. Risponde con 202 Accepted e un scan_id da usare per il polling.
| Campo | Tipo | Req. | Descrizione |
|---|---|---|---|
| url | string | SI | URL da analizzare (http o https) |
| mode | string | NO | single (default) o sitemap |
Response 202 Accepted
/api/v1/scans/{scan_id}
scope: read
Recupera stato e risultati di una scansione. Fai polling ogni 2-3 secondi finche' status != "running".
running
In corso
complete
Completata
error
Fallita
stopped
Interrotta
Storico
/api/v1/history
scope: read
Storico delle scansioni dell'utente con paginazione.
| Parametro | Tipo | Default | Descrizione |
|---|---|---|---|
| page | int | 1 | Numero pagina |
| per_page | int | 20 | Risultati per pagina (max 50) |
Esportazione
/api/v1/scans/{id}/export/{format}
scope: export
Esporta i risultati di una scansione. Formati supportati: json, csv, pdf.
Utente
/api/v1/user/profile
scope: read
Restituisce il profilo dell'utente autenticato.
/api/v1/user/usage
scope: read
Statistiche di utilizzo: scan oggi, richieste API, limiti del piano.
Codici di Errore
| Codice | HTTP | Descrizione |
|---|---|---|
MISSING_AUTH |
401 | Header Authorization assente o malformato |
INVALID_TOKEN |
401 | Token non valido, scaduto o revocato |
INSUFFICIENT_SCOPE |
403 | Il token non ha lo scope richiesto |
INVALID_CREDENTIALS |
401 | Email/password errate |
ACCOUNT_DISABLED |
403 | Account disabilitato |
RATE_LIMIT_EXCEEDED |
429 | Limite scan o richieste superato |
INVALID_REQUEST |
400 | Parametri mancanti o malformati |
INVALID_URL |
400 | URL non valido |
INVALID_SCOPES |
400 | Scope non riconosciuti |
NOT_FOUND |
404 | Risorsa non trovata |
FORBIDDEN |
403 | Accesso negato (risorsa di un altro utente) |
INTERNAL_ERROR |
500 | Errore interno del server |