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.

MethodeSo funktioniert sieGeeignet für
Browser-SessionDas Supabase-Session-Token Ihres angemeldeten Kontos, gesendet als Cookie oder als Bearer-TokenDas Dashboard selbst und schnelle Experimente aus einem angemeldeten Browser-Kontext
API-KeyEin Key mit dem Präfix ayr_live_, angelegt in /dashboard/settings und gesendet als Bearer-TokenSkripte, Server, CI und alles, was nicht von einem Browser-Login abhängen darf
MCPDer gehostete MCP-Server unter https://www.ay-robots.com/api/mcp (Streamable HTTP)LLM-Agenten und Tools, die das Model Context Protocol sprechen
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Authentifizierung mit einem API-Key

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.

GET/api/auth/profileBearer-Session-Token oder API-Key

Liefert das Profil des authentifizierten Nutzers.

POST/api/auth/profileBearer-Session-Token oder API-Key

Aktualisiert Profilfelder wie den Anzeigenamen und die Benachrichtigungseinstellungen.

POST/api/auth/syncBearer-Session-Token

Synchronisiert den Supabase-Auth-Nutzer mit dem Plattform-Nutzerdatensatz.

GET/api/auth/check-onboardingBearer-Session-Token

Meldet, ob der authentifizierte Nutzer das Onboarding abgeschlossen hat.

POST/api/auth/avatarBearer-Session-Token

Lä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.

GET/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.

Request
curl https://www.ay-robots.com/api/client/robots \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Response
[
  {
    "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"
  }
]
POST/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.

GET/api/client/profileBearer-Session-Token oder API-Key (Kundenrolle)

Liefert das Kundenprofil des authentifizierten Nutzers.

PATCH/api/client/profileBearer-Session-Token oder API-Key (Kundenrolle)

Aktualisiert Felder des Kundenprofils.

GET/api/client/datasetsBearer-Session-Token oder API-Key (Kundenrolle)

Listet die Cloud-Datensätze des Kunden mit Episodenzahlen und Größen.

GET/api/client/invoicesBearer-Session-Token oder API-Key (Kundenrolle)

Listet die Monatsrechnungen des Kunden.

GET/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.

GET/api/operator/profileBearer-Session-Token oder API-Key (Operator-Rolle)

Liefert das Operator-Profil des authentifizierten Nutzers.

POST/api/operator/profileBearer-Session-Token oder API-Key (Operator-Rolle)

Legt das Operator-Profil an oder aktualisiert es.

GET/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.

GET/api/operator/certificationsBearer-Session-Token oder API-Key (Operator-Rolle)

Listet die Zertifizierungsanträge des Operators und deren Status.

POST/api/operator/certificationsBearer-Session-Token oder API-Key (Operator-Rolle)

Beantragt die Zertifizierung für einen Robotertyp.

GET/api/operator/scheduleBearer-Session-Token oder API-Key (Operator-Rolle)

Liefert den wöchentlichen Verfügbarkeitsplan des Operators.

POST/api/operator/scheduleBearer-Session-Token oder API-Key (Operator-Rolle)

Aktualisiert den wöchentlichen Verfügbarkeitsplan.

GET/api/operator/availabilityBearer-Session-Token oder API-Key (Operator-Rolle)

Liefert die aktuelle Verfügbarkeit des Operators.

GET/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.

GET/api/sessionsBearer-Session-Token oder API-Key

Listet 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.

NameInTypeDescription
statusquerystringOptional. Filtert nach Session-Status, etwa ACTIVE oder COMPLETED. Weglassen, um alle zu listen.
limitquerynumberOptional. Seitengröße, Standard 50, Maximum 100.
offsetquerynumberOptional. Paginierungs-Offset, Standard 0.
Request
curl 'https://www.ay-robots.com/api/sessions?status=COMPLETED&limit=10' \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Response
{
  "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."
    }
  ]
}
POST/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.

NameInTypeDescription
robotIdbodystringErforderlich. Id des zu steuernden Roboters. Der Roboter muss AVAILABLE sein.
operatorIdbodystringOptional. Explizite Operator-Id; Standard ist der authentifizierte Operator.
scheduledForbodystring (ISO 8601)Optional. Plant die Session für einen späteren Zeitpunkt, statt sie sofort zu starten.
Request
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"}'
Response
{
  "sessionId": "6b0d2c9a-53f1-4f6e-8f1a-2c9d4e7b5a30",
  "status": "ACTIVE"
}
GET/api/sessions/[id]Bearer-Session-Token oder API-Key

Liefert eine einzelne Session mit ihren Details.

PATCH/api/sessions/[id]Bearer-Session-Token oder API-Key

Aktualisiert den Session-Lebenszyklus: pausieren, fortsetzen, beenden und verwandte Aktionen.

POST/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.

NameInTypeDescription
idpathstringDie Session-Id.
additionalMinutesbodynumberGewünschte Verlängerung in Minuten.
Request
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}'
Response
{
  "message": "Extension request sent to operator"
}
GET/api/sessions/[id]/messagesBearer-Session-Token oder API-Key

Listet die Chat-Nachrichten einer Session.

POST/api/sessions/[id]/messagesBearer-Session-Token oder API-Key

Sendet eine Chat-Nachricht in einer Session.

POST/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.

POST/api/sessions/exportBearer-Session-Token oder API-Key

Exportiert 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.

POST/api/stripe/customerBearer-Session-Token (Kundenrolle)

Legt den Stripe-Kunden für die Kundenabrechnung an oder liefert ihn zurück.

GET/api/stripe/connectBearer-Session-Token (Operator-Rolle)

Liefert den Status des Stripe-Connect-Kontos des Operators.

POST/api/stripe/connectBearer-Session-Token (Operator-Rolle)

Startet das Stripe-Connect-Onboarding für Operator-Auszahlungen.

POST/api/stripe/setup-intentBearer-Session-Token (Kundenrolle)

Erzeugt einen Stripe-SetupIntent zum Hinterlegen einer Zahlungsmethode.

POST/api/stripe/portalBearer-Session-Token (Kundenrolle)

Erzeugt eine Stripe-Abrechnungsportal-Session zum Verwalten von Zahlungsmethoden und Rechnungen.

GET/api/stripe/payoutBearer-Session-Token (Operator-Rolle)

Liefert Auszahlungsinformationen für den authentifizierten Operator.

POST/api/stripe/payoutBearer-Session-Token (Operator-Rolle)

Fordert eine Auszahlung des angesammelten Guthabens an. Die Mindestauszahlung beträgt 10,00 EUR.

POST/api/stripe/webhookStripe-Webhook-Signatur

Empfä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.

GET/api/health

Health-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.

Request
curl https://www.ay-robots.com/api/health
Response
{
  "status": "ok",
  "db": "ok",
  "timestamp": "2026-08-09T10:12:00.000Z"
}
GET/api/robots/[id]

Liefert öffentliche Informationen über ein unterstütztes Robotermodell.

GET/api/public/pricing

Liefert die aktuellen öffentlichen Preispläne.

POST/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.

NameInTypeDescription
namebodystringErforderlich. Ihr Name.
emailbodystringErforderlich. Eine gültige E-Mail-Adresse für die Antwort.
categorybodystringErforderlich. Eine von: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other.
subjectbodystringErforderlich. Kurze Betreffzeile.
messagebodystringErforderlich. Der Nachrichtentext.
Request
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."
  }'
Response
{
  "success": true,
  "message": "Message sent successfully",
  "id": "b1f2c3d4-0000-0000-0000-000000000000",
  "stored": true,
  "delivered": true
}
POST/api/robot-request

Fragt Unterstützung für einen Robotertyp an, den die Plattform noch nicht kennt.

GET/api/stats

Liefert öffentliche Plattform-Statistiken.