API-Referenz
Die AY-Robots-REST-API lebt unter https://www.ay-robots.com/api und spricht in beide Richtungen JSON. Diese Seite dokumentiert die Authentifizierung, die Antwortkonventionen und jeden Endpunkt, mit vollständiger Parameterdokumentation für die Routen, die Sie am ehesten programmatisch aufrufen.
Zuletzt aktualisiert 2026-08-09
Authentifizierung
Jeder Endpunkt verlangt Authentifizierung, sofern er nicht im Abschnitt Öffentliche Endpunkte steht. Die API akzeptiert zwei Arten von Zugangsdaten, und beide kommen auf demselben Weg an: entweder als das Session-Cookie, das das Dashboard ohnehin sendet, oder als Authorization-Header mit einem Bearer-Token.
| Methode | So funktioniert sie | Geeignet für |
|---|---|---|
| Browser-Session | Das Supabase-Session-Token Ihres angemeldeten Kontos, gesendet als Cookie oder als Bearer-Token | Das Dashboard selbst und schnelle Experimente aus einem angemeldeten Browser-Kontext |
| API-Key | Ein Key mit dem Präfix ayr_live_, angelegt in /dashboard/settings und gesendet als Bearer-Token | Skripte, Server, CI und alles, was nicht von einem Browser-Login abhängen darf |
| MCP | Der gehostete MCP-Server unter https://www.ay-robots.com/api/mcp (Streamable HTTP) | LLM-Agenten und Tools, die das Model Context Protocol sprechen |
curl https://www.ay-robots.com/api/sessions \
-H 'Authorization: Bearer ayr_live_your_key_here'API-Keys werden in /dashboard/settings angelegt und widerrufen. Behandeln Sie sie wie Passwörter: serverseitig aufbewahren und rotieren, indem Sie erst den Ersatz-Key anlegen und dann den alten widerrufen. Wenn Sie die Desktop-CLI nutzen, kann sie die Plattform auch als lokalen MCP-Server bereitstellen, mit dem Befehl: ay-robots mcp.
Antworten sind JSON. Fehler haben eine einheitliche Form: ein JSON-Objekt mit einem einzelnen error-Feld und einer menschenlesbaren Meldung, ausgeliefert mit einem passenden 4xx- oder 5xx-Statuscode. Erfolgsantworten liefern die Ressource direkt; einige wenige Endpunkte packen Listen in ein benanntes Feld, was die Beispiele unten dort zeigen, wo es zählt.
Auth-Endpunkte
Konto- und Profilverwaltung. Diese Endpunkte nutzt in erster Linie das Dashboard selbst, sie funktionieren aber mit jeder gültigen Berechtigung.
/api/auth/profileBearer-Session-Token oder API-KeyLiefert das Profil des authentifizierten Nutzers.
/api/auth/profileBearer-Session-Token oder API-KeyAktualisiert Profilfelder wie den Anzeigenamen und die Benachrichtigungseinstellungen.
/api/auth/syncBearer-Session-TokenSynchronisiert den Supabase-Auth-Nutzer mit dem Plattform-Nutzerdatensatz.
/api/auth/check-onboardingBearer-Session-TokenMeldet, ob der authentifizierte Nutzer das Onboarding abgeschlossen hat.
/api/auth/avatarBearer-Session-TokenLädt ein neues Avatar-Bild für den authentifizierten Nutzer hoch.
Kunden-Endpunkte
Alles, was ein Roboterbesitzer verwaltet: registrierte Roboter, das Kundenprofil, Datensätze, Rechnungen und Dashboard-Statistiken.
/api/client/robotsBearer-Session-Token oder API-Key (Kundenrolle)Listet die vom authentifizierten Kunden registrierten Roboter, neueste zuerst, bis zu 50 Einträge. Zeitstempel sind ISO 8601; last_online und last_heartbeat sind null, bis sich der Roboter einmal verbunden hat.
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/robotsBearer-Session-Token oder API-Key (Kundenrolle)Registriert einen neuen Roboter und liefert seine Id. Eine Motor-Board-Hardware-Id kann nur zu einem Roboter gehören; eine Kollision wird mit Status 409 abgelehnt.
/api/client/profileBearer-Session-Token oder API-Key (Kundenrolle)Liefert das Kundenprofil des authentifizierten Nutzers.
/api/client/profileBearer-Session-Token oder API-Key (Kundenrolle)Aktualisiert Felder des Kundenprofils.
/api/client/datasetsBearer-Session-Token oder API-Key (Kundenrolle)Listet die Cloud-Datensätze des Kunden mit Episodenzahlen und Größen.
/api/client/invoicesBearer-Session-Token oder API-Key (Kundenrolle)Listet die Monatsrechnungen des Kunden.
/api/client/statsBearer-Session-Token oder API-Key (Kundenrolle)Liefert Nutzungsstatistiken für das Kunden-Dashboard.
Operator-Endpunkte
Die Operator-Seite: Profil und Verfügbarkeit, Zertifizierungen, Zeitplanung und Verdienststatistiken.
/api/operator/profileBearer-Session-Token oder API-Key (Operator-Rolle)Liefert das Operator-Profil des authentifizierten Nutzers.
/api/operator/profileBearer-Session-Token oder API-Key (Operator-Rolle)Legt das Operator-Profil an oder aktualisiert es.
/api/operator/available-robotsBearer-Session-Token oder API-Key (Operator-Rolle)Listet Roboter, die aktuell verfügbar sind und zu den Zertifizierungen des Operators passen.
/api/operator/certificationsBearer-Session-Token oder API-Key (Operator-Rolle)Listet die Zertifizierungsanträge des Operators und deren Status.
/api/operator/certificationsBearer-Session-Token oder API-Key (Operator-Rolle)Beantragt die Zertifizierung für einen Robotertyp.
/api/operator/scheduleBearer-Session-Token oder API-Key (Operator-Rolle)Liefert den wöchentlichen Verfügbarkeitsplan des Operators.
/api/operator/scheduleBearer-Session-Token oder API-Key (Operator-Rolle)Aktualisiert den wöchentlichen Verfügbarkeitsplan.
/api/operator/availabilityBearer-Session-Token oder API-Key (Operator-Rolle)Liefert die aktuelle Verfügbarkeit des Operators.
/api/operator/statsBearer-Session-Token oder API-Key (Operator-Rolle)Liefert Verdienst- und Session-Statistiken für das Operator-Dashboard.
Sessions
Sessions sind die zentrale Ressource der Plattform: Eine Session ist ein durchgehender Teleoperations-Einsatz zwischen einem Operator und einem Roboter. Der Session-Status durchläuft PENDING, ACTIVE, PAUSED, COMPLETED und CANCELLED.
/api/sessionsBearer-Session-Token oder API-KeyListet Sessions für den authentifizierten Nutzer. Operatoren sehen Sessions, die sie gefahren haben; Kunden sehen Sessions auf ihren Robotern. Die Feldmenge unterscheidet sich leicht zwischen beiden Sichten: Die Kundensicht enthält episodes_collected und data_collected_mb, die Operator-Sicht operator_earnings_cents.
| Name | In | Type | Description |
|---|---|---|---|
| status | query | string | Optional. Filtert nach Session-Status, etwa ACTIVE oder COMPLETED. Weglassen, um alle zu listen. |
| limit | query | number | Optional. Seitengröße, Standard 50, Maximum 100. |
| offset | query | number | Optional. Paginierungs-Offset, Standard 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/sessionsBearer-Session-Token oder API-Key (Operator-Rolle)Startet eine Teleoperations-Session auf einem verfügbaren Roboter. Verlangt die Operator-Rolle: Kunden können keine Sessions starten. Ein Operator kann höchstens eine ACTIVE- oder PAUSED-Session gleichzeitig halten, und der Roboter muss aktuell den Status AVAILABLE haben. Bei sofortigem Start wechselt der Roboter auf IN_SESSION und der Kunde wird benachrichtigt.
| Name | In | Type | Description |
|---|---|---|---|
| robotId | body | string | Erforderlich. Id des zu steuernden Roboters. Der Roboter muss AVAILABLE sein. |
| operatorId | body | string | Optional. Explizite Operator-Id; Standard ist der authentifizierte Operator. |
| scheduledFor | body | string (ISO 8601) | Optional. Plant die Session für einen späteren Zeitpunkt, statt sie sofort zu starten. |
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]Bearer-Session-Token oder API-KeyLiefert eine einzelne Session mit ihren Details.
/api/sessions/[id]Bearer-Session-Token oder API-KeyAktualisiert den Session-Lebenszyklus: pausieren, fortsetzen, beenden und verwandte Aktionen.
/api/sessions/[id]/extendBearer-Session-Token oder API-Key (Kunde, Session-Eigentümer)Fordert eine Session-Verlängerung an. Nur der Kunde, dem die Session gehört, kann diesen Endpunkt aufrufen, und die Session muss ACTIVE sein. Die Anfrage wird als Session-Ereignis protokolliert und der Operator erhält eine Benachrichtigung; die Verlängerung selbst geschieht, wenn der Operator darauf reagiert.
| Name | In | Type | Description |
|---|---|---|---|
| id | path | string | Die Session-Id. |
| additionalMinutes | body | number | Gewünschte Verlängerung in Minuten. |
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]/messagesBearer-Session-Token oder API-KeyListet die Chat-Nachrichten einer Session.
/api/sessions/[id]/messagesBearer-Session-Token oder API-KeySendet eine Chat-Nachricht in einer Session.
/api/sessions/[id]/rateBearer-Session-Token oder API-Key (Kunde)Bewertet eine abgeschlossene Session auf einer Skala von 1 bis 5 Sternen, mit optionalem Kommentar.
/api/sessions/exportBearer-Session-Token oder API-KeyExportiert Session-Daten.
Zahlungen
Alle Geldflüsse laufen über Stripe. Die Kundenabrechnung nutzt einen Stripe-Kunden mit hinterlegter Zahlungsmethode, Operator-Auszahlungen laufen über Stripe Connect. Die Plattform selbst speichert nie Karten- oder Bankdaten.
/api/stripe/customerBearer-Session-Token (Kundenrolle)Legt den Stripe-Kunden für die Kundenabrechnung an oder liefert ihn zurück.
/api/stripe/connectBearer-Session-Token (Operator-Rolle)Liefert den Status des Stripe-Connect-Kontos des Operators.
/api/stripe/connectBearer-Session-Token (Operator-Rolle)Startet das Stripe-Connect-Onboarding für Operator-Auszahlungen.
/api/stripe/setup-intentBearer-Session-Token (Kundenrolle)Erzeugt einen Stripe-SetupIntent zum Hinterlegen einer Zahlungsmethode.
/api/stripe/portalBearer-Session-Token (Kundenrolle)Erzeugt eine Stripe-Abrechnungsportal-Session zum Verwalten von Zahlungsmethoden und Rechnungen.
/api/stripe/payoutBearer-Session-Token (Operator-Rolle)Liefert Auszahlungsinformationen für den authentifizierten Operator.
/api/stripe/payoutBearer-Session-Token (Operator-Rolle)Fordert eine Auszahlung des angesammelten Guthabens an. Die Mindestauszahlung beträgt 10,00 EUR.
/api/stripe/webhookStripe-Webhook-SignaturEmpfängt Stripe-Webhook-Ereignisse. Wird von Stripe aufgerufen, nicht von API-Clients.
Öffentliche Endpunkte
Diese Endpunkte brauchen keine Authentifizierung. Sie lassen sich gefahrlos aus Monitoring, Marketing-Seiten oder einer Status-Probe aufrufen.
/api/healthHealth-Check für die API und ihre Datenbankverbindung. Liefert 200, wenn beide in Ordnung sind; scheitert die Datenbankprüfung, kommt dieselbe Struktur mit status und db auf error und HTTP-Status 503 zurück.
curl https://www.ay-robots.com/api/health{
"status": "ok",
"db": "ok",
"timestamp": "2026-08-09T10:12:00.000Z"
}/api/robots/[id]Liefert öffentliche Informationen über ein unterstütztes Robotermodell.
/api/public/pricingLiefert die aktuellen öffentlichen Preispläne.
/api/contactÜbermittelt eine Kontaktformular-Nachricht. Die Nachricht wird erst gespeichert und dann per E-Mail zugestellt; ein vorübergehender Mail-Ausfall verliert sie also nicht: In dem Fall meldet die Antwort stored true und delivered false, und die Zustellung wird operativ erneut versucht.
| Name | In | Type | Description |
|---|---|---|---|
| name | body | string | Erforderlich. Ihr Name. |
| body | string | Erforderlich. Eine gültige E-Mail-Adresse für die Antwort. | |
| category | body | string | Erforderlich. Eine von: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other. |
| subject | body | string | Erforderlich. Kurze Betreffzeile. |
| message | body | string | Erforderlich. Der Nachrichtentext. |
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-requestFragt Unterstützung für einen Robotertyp an, den die Plattform noch nicht kennt.
/api/statsLiefert öffentliche Plattform-Statistiken.
Wie AY-Robots Konten und Live-Steuerung absichert: Supabase-Authentifizierung, Rollenmodell, API-Keys, Session-Schutz, Audit-Trail und Verschlüsselung.
So funktionieren Sessions auf AY-Robots: der Lebenszyklus von PENDING bis COMPLETED, alle Aktivitätsereignisse, Session-Chat, Bewertungen und Verlängerungen.