Panoramica
Didit è la piattaforma di verifica dell’identità più adatta agli agenti. Gli agenti di programmazione basati sull’IA (Cursor, Claude Code, GitHub Copilot, Devin, OpenHands, Codex) possono registrarsi, configurare workflow e avviare verifiche dell’identità, tutto in modo programmatico e senza mai aprire un browser. Perché agli agenti piace Didit:- 2 chiamate API dal punto di partenza alle credenziali (registrazione + verify-email).
- Nessun browser richiesto: completamente senza interfaccia grafica, ideale per CI/CD e per i workflow degli agenti.
- Nessun secondo fattore per un nuovo account API: i token vengono restituiti subito dopo la verifica dell’email.
- Organizzazione e applicazione create automaticamente, con
api_keynella risposta della verifica. - API di gestione completa: configura workflow, questionari, liste e fatturazione, tutto via API.
- Server MCP disponibile: gli agenti possono scoprire e usare gli strumenti di Didit in modo nativo.
URL di base
Tutti gli endpoint di questa guida si trovano sull’host di autenticazione:https://verification.didit.me/v3). L’host di autenticazione emette i token di accesso JWT e gestisce le applicazioni. L’host di verifica gestisce sessioni, AML, workflow ecc., ed è autenticato con la api_key a lunga durata che ottieni con questo flusso.
Avvio rapido
Passaggio 1: Registrazione
201 Created):
A3K9F2) viene inviato via email all’indirizzo. Il codice scade 10 minuti dopo l’invio: se scade, richiama questo endpoint con la stessa email e la stessa password. Per un account non ancora verificato restituisce 200 con "A new verification code has been sent to your email." e un nuovo codice. Anche l’endpoint dedicato POST /programmatic/resend-otp/ (corpo: {"email", "password"}) reinvia il codice, con un intervallo di 60 secondi tra un invio e l’altro; entrambi gli endpoint condividono il limite di frequenza per la registrazione descritto sotto.
Passaggio 2: Verifica del codice e ottenimento delle credenziali
200 OK):
application.api_key in modo sicuro e inviala come intestazione x-api-key in ogni chiamata all’API di verifica.
I token sono JWT firmati RS256.
expires_in vale per impostazione predefinita 86400 secondi (24 ore). Il token di accesso serve solo per gli endpoint di gestione su apx.didit.me/auth/v2: il traffico dell’API di verifica su verification.didit.me/v3 viene autenticato con la api_key a lunga durata, non con il JWT.Passaggio 3: Usa l’API
Accessi successivi
Da qualsiasi macchina, scambia la tua email e la tua password con un nuovo JWT:access_token e refresh_token, senza browser. Da lì, richiama GET /organizations/me/ per scoprire il tuo org_id (l’uuid dell’organizzazione), poi GET /organizations/me/{org_id}/applications/ per elencare le applicazioni dell’organizzazione (l’uuid di ogni voce è un app_id), e infine GET /organizations/me/{org_id}/applications/{app_id}/ per recuperare la api_key.
Gli account creati nella console con email e password possono usare anche
POST /programmatic/login/ dopo la verifica dell’email. Gli account della console che usano solo OAuth devono impostare una password prima di poter usare questo endpoint di accesso senza interfaccia grafica.Quando l’accesso richiede altro
POST /programmatic/login/ restituisce token solo quando l’account non ha un secondo fattore.
Sono possibili altre tre risposte, che un agente che automatizza l’accesso deve gestire:
Una chiave API non richiede l’accesso, quindi usala per qualsiasi operazione automatizzata: un account con un secondo fattore non può completare l’accesso tramite questo endpoint.
Requisiti della password
Applicati lato server, una regola alla volta: al primo errore la verifica si interrompe e viene restituito un array semplice, ad esempio["Password must contain at least one uppercase letter."]. (Gli altri errori di validazione su questo endpoint usano la struttura {"password": [...]} con chiave di campo. La forma ad array semplice sulle regole di robustezza della password è una nota incongruenza lato server; nel codice client trattala come {"password": [...]}.)
Limiti di frequenza e blocchi
Tre controlli indipendenti proteggono l’host di autenticazione. Ognuno di essi può generare una risposta429; l’intestazione di risposta Retry-After indica per quanto tempo attendere prima di riprovare.
Il corpo di una risposta
429 ha questo aspetto:
Gestione delle applicazioni
Una volta autenticato, puoi recuperare, creare o aggiornare le applicazioni all’interno della tua organizzazione. Questa soluzione è ideale per i rivenditori che vogliono un’applicazione per ogni cliente. Ogni applicazione ha il proprioclient_id, api_key, metadati e impostazioni. È utile anche quando la tua organizzazione ha prodotti, marchi, regioni, ambienti o casi d’uso diversi che vuoi tenere separati.
403.
Cosa possono fare gli agenti dopo la registrazione?
Con laapi_key, gli agenti hanno accesso completo all’API di verifica. Endpoint sottoposti ad audit su https://verification.didit.me/v3:
Per l’elenco completo, consulta il riferimento dell’API di gestione.
Integrazione con il server MCP
Per la migliore esperienza con gli agenti, usa il server MCP Didit ospitato suhttps://mcp.didit.me/mcp. Non richiede una chiave API: alla prima connessione il tuo client apre il browser, tu Accedi con Didit (OAuth 2.1 con PKCE) e il server agisce per conto tuo, con i permessi del ruolo che hai nella console. I client con supporto nativo per MCP remoto (Cursor, VS Code) usano questa voce; Claude web e Desktop la aggiungono come connettore personalizzato:
claude mcp add --transport http didit https://mcp.didit.me/mcp. I client che supportano solo stdio (Windsurf, Zed) passano dal bridge mcp-remote, che esegue il flusso OAuth al posto tuo.
La chiave API che ricevi dal flusso di registrazione descritto sopra serve per chiamare la REST API dal tuo backend; MCP non la usa mai. Per i dettagli, consulta la panoramica MCP e l’installazione per client.
Riferimento della struttura degli errori
Tutti gli endpointapx.didit.me/auth/v2 condividono le stesse tre strutture di risposta (vedi openapi-auth.json):
- Validazione a livello di campo:
{"field": ["message", ...]}con HTTP400. - Validazione a livello di modulo (in particolare per la robustezza della password e per gli errori del codice di verifica): array semplice
["Invalid or expired verification code."]con HTTP400. - Autenticazione / regole di business:
{"detail": "..."}con400,401,403,404o429. Le risposte429includono l’intestazioneRetry-After, che indica per quanto tempo attendere prima di riprovare (il corpo contiene solodetail).
{"detail": "..."} e le risposte 429 includono X-RateLimit-* e Retry-After: vedi Limitazione della frequenza.