Riferimento API
L'API REST di AY-Robots si trova su https://www.ay-robots.com/api e parla JSON in entrambe le direzioni. Questa pagina documenta l'autenticazione, le convenzioni di risposta e ogni endpoint, con documentazione completa dei parametri per le rotte più probabilmente chiamate in modo programmatico.
Ultimo aggiornamento 2026-08-09
Autenticazione
Ogni endpoint richiede autenticazione, a meno che non sia elencato nella sezione Endpoint pubblici. L'API accetta due forme di credenziali, ed entrambe arrivano nello stesso modo: come cookie di sessione già inviato dalla dashboard, oppure come header Authorization con un token Bearer.
| Metodo | Come funziona | Adatto a |
|---|---|---|
| Sessione browser | Il token di sessione Supabase del proprio account connesso, inviato come cookie o come token Bearer | La dashboard stessa ed esperimenti rapidi da un contesto browser autenticato |
| Chiave API | Una chiave con prefisso ayr_live_, creata in /dashboard/settings e inviata come token Bearer | Script, server, CI e qualsiasi cosa non debba dipendere da un accesso via browser |
| MCP | Il server MCP ospitato su https://www.ay-robots.com/api/mcp (Streamable HTTP) | Agenti LLM e strumenti che parlano il Model Context Protocol |
curl https://www.ay-robots.com/api/sessions \
-H 'Authorization: Bearer ayr_live_your_key_here'Le chiavi API si creano e si revocano in /dashboard/settings. Vanno trattate come password: conservarle lato server e ruotarle creando prima una chiave sostitutiva prima di revocare quella vecchia. Chi usa la CLI desktop può anche esporre la piattaforma come server MCP locale con il comando: ay-robots mcp.
Le risposte sono in JSON. Gli errori seguono una forma coerente: un oggetto JSON con un singolo campo error contenente un messaggio leggibile, restituito con un codice di stato 4xx o 5xx appropriato. Le risposte di successo restituiscono la risorsa direttamente; alcuni endpoint racchiudono le liste in un campo denominato, il che gli esempi seguenti mostrano dove è rilevante.
Endpoint di autenticazione
Gestione di account e profilo. Sono usati principalmente dalla dashboard stessa, ma funzionano con qualsiasi credenziale valida.
/api/auth/profileToken di sessione Bearer o chiave APIRestituisce il profilo dell'utente autenticato.
/api/auth/profileToken di sessione Bearer o chiave APIAggiorna i campi del profilo, come il nome visualizzato e le preferenze di notifica.
/api/auth/syncToken di sessione BearerSincronizza l'utente auth di Supabase con il record utente della piattaforma.
/api/auth/check-onboardingToken di sessione BearerIndica se l'utente autenticato ha completato l'onboarding.
/api/auth/avatarToken di sessione BearerCarica una nuova immagine avatar per l'utente autenticato.
Endpoint cliente
Tutto ciò che un proprietario di robot gestisce: robot registrati, profilo cliente, dataset, fatture e statistiche della dashboard.
/api/client/robotsToken di sessione Bearer o chiave API (ruolo cliente)Elenca i robot registrati dal cliente autenticato, dal più recente, fino a 50 voci. I timestamp sono in formato ISO 8601; last_online e last_heartbeat sono null finché il robot non si è connesso almeno una volta.
curl https://www.ay-robots.com/api/client/robots \
-H 'Authorization: Bearer ayr_live_your_key_here'[
{
"id": "1f9f4c1e-7f2a-4b7e-9a45-0f4d2b6c8a11",
"name": "Lab SO-100",
"robot_type": "SO-100",
"status": "AVAILABLE",
"control_url": "wss://robots.example.com/so100/control",
"stream_url": "https://robots.example.com/so100/stream",
"hardware_id": "board:local:usb-1",
"last_online": "2026-08-09T10:12:00.000Z",
"last_heartbeat": "2026-08-09T10:12:00.000Z",
"total_hours": 12.5,
"tags": ["lab"],
"notes": null,
"created_at": "2026-07-01T09:00:00.000Z"
}
]/api/client/robotsToken di sessione Bearer o chiave API (ruolo cliente)Registra un nuovo robot e ne restituisce l'id. Un id hardware di scheda motore può appartenere a un solo robot; una collisione viene rifiutata con status 409.
/api/client/profileToken di sessione Bearer o chiave API (ruolo cliente)Restituisce il profilo cliente dell'utente autenticato.
/api/client/profileToken di sessione Bearer o chiave API (ruolo cliente)Aggiorna i campi del profilo cliente.
/api/client/datasetsToken di sessione Bearer o chiave API (ruolo cliente)Elenca i dataset cloud del cliente con conteggio degli episodi e dimensioni.
/api/client/invoicesToken di sessione Bearer o chiave API (ruolo cliente)Elenca le fatture mensili del cliente.
/api/client/statsToken di sessione Bearer o chiave API (ruolo cliente)Restituisce le statistiche di utilizzo per la dashboard cliente.
Endpoint operatore
Il lato operatore: profilo e disponibilità, certificazioni, pianificazione e statistiche sui guadagni.
/api/operator/profileToken di sessione Bearer o chiave API (ruolo operatore)Restituisce il profilo operatore dell'utente autenticato.
/api/operator/profileToken di sessione Bearer o chiave API (ruolo operatore)Crea o aggiorna il profilo operatore.
/api/operator/available-robotsToken di sessione Bearer o chiave API (ruolo operatore)Elenca i robot attualmente disponibili che corrispondono alle certificazioni dell'operatore.
/api/operator/certificationsToken di sessione Bearer o chiave API (ruolo operatore)Elenca le richieste di certificazione dell'operatore e il loro stato.
/api/operator/certificationsToken di sessione Bearer o chiave API (ruolo operatore)Richiede la certificazione per un tipo di robot.
/api/operator/scheduleToken di sessione Bearer o chiave API (ruolo operatore)Restituisce il calendario di disponibilità settimanale dell'operatore.
/api/operator/scheduleToken di sessione Bearer o chiave API (ruolo operatore)Aggiorna il calendario di disponibilità settimanale.
/api/operator/availabilityToken di sessione Bearer o chiave API (ruolo operatore)Restituisce la disponibilità attuale dell'operatore.
/api/operator/statsToken di sessione Bearer o chiave API (ruolo operatore)Restituisce statistiche su guadagni e sessioni per la dashboard operatore.
Sessioni
Le sessioni sono la risorsa centrale della piattaforma: una sessione è un impegno continuo di teleoperazione tra un operatore e un robot. Lo stato della sessione passa per PENDING, ACTIVE, PAUSED, COMPLETED e CANCELLED.
/api/sessionsToken di sessione Bearer o chiave APIElenca le sessioni per l'utente autenticato. Gli operatori vedono le sessioni che hanno operato; i clienti vedono le sessioni sui propri robot. L'insieme di campi differisce leggermente tra le due viste: la vista cliente include episodes_collected e data_collected_mb, la vista operatore include operator_earnings_cents.
| Name | In | Type | Description |
|---|---|---|---|
| status | query | string | Facoltativo. Filtra per stato della sessione, ad esempio ACTIVE o COMPLETED. Omettere per elencarle tutte. |
| limit | query | number | Facoltativo. Dimensione della pagina, predefinita 50, massimo 100. |
| offset | query | number | Facoltativo. Offset di paginazione, predefinito 0. |
curl 'https://www.ay-robots.com/api/sessions?status=COMPLETED&limit=10' \
-H 'Authorization: Bearer ayr_live_your_key_here'{
"sessions": [
{
"id": "6b0d2c9a-53f1-4f6e-8f1a-2c9d4e7b5a30",
"status": "COMPLETED",
"started_at": "2026-08-08T14:00:12.000Z",
"ended_at": "2026-08-08T14:47:31.000Z",
"duration_minutes": 47,
"client_charge_cents": 1175,
"episodes_collected": 23,
"data_collected_mb": 210.4,
"rating": 5,
"created_at": "2026-08-08T13:59:58.000Z",
"robot_id": "1f9f4c1e-7f2a-4b7e-9a45-0f4d2b6c8a11",
"robot_name": "Lab SO-100",
"robot_type": "SO-100",
"operator_name": "Jane D."
}
]
}/api/sessionsToken di sessione Bearer o chiave API (ruolo operatore)Avvia una sessione di teleoperazione su un robot disponibile. Richiede il ruolo operatore: i clienti non possono avviare sessioni. Un operatore può mantenere al massimo una sessione ACTIVE o PAUSED alla volta, e il robot deve avere attualmente lo stato AVAILABLE. All'avvio immediato il robot passa a IN_SESSION e il cliente viene notificato.
| Name | In | Type | Description |
|---|---|---|---|
| robotId | body | string | Obbligatorio. Id del robot da operare. Il robot deve essere AVAILABLE. |
| operatorId | body | string | Facoltativo. Id operatore esplicito; per impostazione predefinita l'operatore autenticato. |
| scheduledFor | body | string (ISO 8601) | Facoltativo. Pianifica la sessione per un momento futuro invece di avviarla immediatamente. |
curl -X POST https://www.ay-robots.com/api/sessions \
-H 'Authorization: Bearer ayr_live_your_key_here' \
-H 'Content-Type: application/json' \
-d '{"robotId": "1f9f4c1e-7f2a-4b7e-9a45-0f4d2b6c8a11"}'{
"sessionId": "6b0d2c9a-53f1-4f6e-8f1a-2c9d4e7b5a30",
"status": "ACTIVE"
}/api/sessions/[id]Token di sessione Bearer o chiave APIRestituisce una singola sessione con i relativi dettagli.
/api/sessions/[id]Token di sessione Bearer o chiave APIAggiorna il ciclo di vita della sessione: pausa, ripresa, terminazione e azioni correlate.
/api/sessions/[id]/extendToken di sessione Bearer o chiave API (cliente, proprietario della sessione)Richiede un'estensione della sessione. Solo il cliente proprietario della sessione può chiamare questo endpoint, e la sessione deve essere ACTIVE. La richiesta viene registrata come evento di sessione e l'operatore riceve una notifica; l'estensione vera e propria avviene quando l'operatore vi risponde.
| Name | In | Type | Description |
|---|---|---|---|
| id | path | string | L'id della sessione. |
| additionalMinutes | body | number | Durata di estensione richiesta, in minuti. |
curl -X POST https://www.ay-robots.com/api/sessions/6b0d2c9a-53f1-4f6e-8f1a-2c9d4e7b5a30/extend \
-H 'Authorization: Bearer ayr_live_your_key_here' \
-H 'Content-Type: application/json' \
-d '{"additionalMinutes": 30}'{
"message": "Extension request sent to operator"
}/api/sessions/[id]/messagesToken di sessione Bearer o chiave APIElenca i messaggi di chat di una sessione.
/api/sessions/[id]/messagesToken di sessione Bearer o chiave APIInvia un messaggio di chat in una sessione.
/api/sessions/[id]/rateToken di sessione Bearer o chiave API (cliente)Valuta una sessione completata su una scala da 1 a 5 stelle, con un commento facoltativo.
/api/sessions/exportToken di sessione Bearer o chiave APIEsporta i dati di sessione.
Pagamenti
Tutti i movimenti di denaro passano attraverso Stripe. La fatturazione cliente usa un cliente Stripe con un metodo di pagamento salvato; i pagamenti agli operatori usano Stripe Connect. La piattaforma stessa non memorizza mai dati di carte o conti bancari.
/api/stripe/customerToken di sessione Bearer (ruolo cliente)Crea o restituisce il cliente Stripe usato per la fatturazione cliente.
/api/stripe/connectToken di sessione Bearer (ruolo operatore)Restituisce lo stato dell'account Stripe Connect dell'operatore.
/api/stripe/connectToken di sessione Bearer (ruolo operatore)Avvia l'onboarding di Stripe Connect per i pagamenti agli operatori.
/api/stripe/setup-intentToken di sessione Bearer (ruolo cliente)Crea un SetupIntent Stripe per salvare un metodo di pagamento.
/api/stripe/portalToken di sessione Bearer (ruolo cliente)Crea una sessione del portale di fatturazione Stripe per gestire metodi di pagamento e fatture.
/api/stripe/payoutToken di sessione Bearer (ruolo operatore)Restituisce informazioni sui pagamenti per l'operatore autenticato.
/api/stripe/payoutToken di sessione Bearer (ruolo operatore)Richiede un pagamento del saldo accumulato. Il pagamento minimo è 10,00 EUR.
/api/stripe/webhookFirma webhook StripeRiceve eventi webhook da Stripe. Chiamato da Stripe, non dai client API.
Endpoint pubblici
Questi endpoint non richiedono autenticazione. È sicuro chiamarli da sistemi di monitoraggio, pagine di marketing o una sonda di stato.
/api/healthControllo di salute per l'API e la sua connessione al database. Restituisce 200 quando entrambi sono a posto; se il controllo del database fallisce, viene restituita la stessa struttura con status e db impostati su error e stato HTTP 503.
curl https://www.ay-robots.com/api/health{
"status": "ok",
"db": "ok",
"timestamp": "2026-08-09T10:12:00.000Z"
}/api/robots/[id]Restituisce informazioni pubbliche su un modello di robot supportato.
/api/public/pricingRestituisce i piani tariffari pubblici attuali.
/api/contactInvia un messaggio dal modulo di contatto. Il messaggio viene prima memorizzato e poi consegnato via email, così un'interruzione temporanea della posta non lo fa perdere: in quel caso la risposta riporta stored true e delivered false, e la consegna viene ritentata operativamente.
| Name | In | Type | Description |
|---|---|---|---|
| name | body | string | Obbligatorio. Il proprio nome. |
| body | string | Obbligatorio. Un indirizzo email valido per la risposta. | |
| category | body | string | Obbligatorio. Uno tra: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other. |
| subject | body | string | Obbligatorio. Breve oggetto. |
| message | body | string | Obbligatorio. Il corpo del messaggio. |
curl -X POST https://www.ay-robots.com/api/contact \
-H 'Content-Type: application/json' \
-d '{
"name": "Jane Doe",
"email": "jane@example.com",
"category": "Technical Support",
"subject": "SO-100 pairing question",
"message": "My arm shows as offline after pairing."
}'{
"success": true,
"message": "Message sent successfully",
"id": "b1f2c3d4-0000-0000-0000-000000000000",
"stored": true,
"delivered": true
}/api/robot-requestRichiede il supporto per un tipo di robot non ancora presente sulla piattaforma.
/api/statsRestituisce statistiche pubbliche della piattaforma.
Come AY-Robots protegge account e controllo robot live: autenticazione Supabase, ruoli, chiavi API, protezioni di sessione, audit trail e crittografia.
Come funzionano le sessioni su AY-Robots: ciclo di vita da PENDING a COMPLETED, eventi di attività, chat, valutazioni, estensioni e dati generati.