Αναφορά API

Το REST API του AY-Robots ζει στο https://www.ay-robots.com/api και μιλά JSON και στις δύο κατευθύνσεις. Αυτή η σελίδα τεκμηριώνει την αυθεντικοποίηση, τις συμβάσεις απόκρισης, και κάθε endpoint, με πλήρη τεκμηρίωση παραμέτρων για τα routes που είναι πιο πιθανό να καλέσετε προγραμματιστικά.

Τελευταία ενημέρωση 2026-08-09

Αυθεντικοποίηση

Κάθε endpoint απαιτεί αυθεντικοποίηση εκτός αν αναφέρεται στην ενότητα Δημόσια. Το API δέχεται δύο μορφές διαπιστευτηρίων, και οι δύο φτάνουν με τον ίδιο τρόπο: είτε ως το cookie συνεδρίας που ο πίνακας ελέγχου ήδη στέλνει, είτε ως κεφαλίδα Authorization με ένα Bearer token.

ΜέθοδοςΠώς λειτουργείΧρησιμοποιήστε την για
Συνεδρία browserΤο session token Supabase του συνδεδεμένου λογαριασμού σας, στελνόμενο ως cookie ή ως Bearer tokenΤον ίδιο τον πίνακα ελέγχου και γρήγορα πειράματα από ένα αυθεντικοποιημένο περιβάλλον browser
Κλειδί APIΈνα κλειδί με το πρόθεμα ayr_live_, δημιουργημένο στο /dashboard/settings και στελνόμενο ως Bearer tokenScripts, servers, CI, και οτιδήποτε δεν πρέπει να εξαρτάται από σύνδεση browser
MCPΟ hosted MCP server στο https://www.ay-robots.com/api/mcp (Streamable HTTP)LLM agents και εργαλεία που μιλούν το Model Context Protocol
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Αυθεντικοποίηση με κλειδί API

Τα κλειδιά API δημιουργούνται και ανακαλούνται στο /dashboard/settings. Αντιμετωπίστε τα σαν κωδικούς πρόσβασης: κρατήστε τα στην πλευρά του server, και περιστρέψτε δημιουργώντας ένα κλειδί αντικατάστασης πριν ανακαλέσετε το παλιό. Αν χρησιμοποιείτε το CLI desktop, μπορεί επίσης να εκθέσει την πλατφόρμα ως τοπικό MCP server με την εντολή: ay-robots mcp.

Οι αποκρίσεις είναι JSON. Τα σφάλματα χρησιμοποιούν συνεπή μορφή: ένα αντικείμενο JSON με ένα μοναδικό πεδίο error που περιέχει ένα μήνυμα αναγνώσιμο από άνθρωπο, παραδιδόμενο με κατάλληλο κωδικό κατάστασης 4xx ή 5xx. Οι επιτυχείς αποκρίσεις επιστρέφουν τον πόρο απευθείας· μερικά endpoints περιτυλίγουν λίστες σε ένα ονομασμένο πεδίο, κάτι που τα παρακάτω παραδείγματα δείχνουν όπου έχει σημασία.

Endpoints αυθεντικοποίησης

Υδραυλικά λογαριασμού και προφίλ. Αυτά χρησιμοποιούνται κυρίως από τον ίδιο τον πίνακα ελέγχου, αλλά λειτουργούν με οποιοδήποτε έγκυρο διαπιστευτήριο.

GET/api/auth/profileBearer session token ή κλειδί API

Επιστρέφει το προφίλ του αυθεντικοποιημένου χρήστη.

POST/api/auth/profileBearer session token ή κλειδί API

Ενημερώνει πεδία προφίλ όπως το εμφανιζόμενο όνομα και τις προτιμήσεις ειδοποιήσεων.

POST/api/auth/syncBearer session token

Συγχρονίζει τον χρήστη auth του Supabase με την εγγραφή χρήστη της πλατφόρμας.

GET/api/auth/check-onboardingBearer session token

Αναφέρει αν ο αυθεντικοποιημένος χρήστης έχει ολοκληρώσει το onboarding.

POST/api/auth/avatarBearer session token

Ανεβάζει μια νέα εικόνα avatar για τον αυθεντικοποιημένο χρήστη.

Endpoints πελάτη

Ό,τι διαχειρίζεται ένας κάτοχος ρομπότ: καταχωρισμένα ρομπότ, το προφίλ πελάτη, datasets, τιμολόγια, και στατιστικά πίνακα ελέγχου.

GET/api/client/robotsBearer session token ή κλειδί API (ρόλος πελάτη)

Αναγράφει τα ρομπότ που έχει καταχωρίσει ο αυθεντικοποιημένος πελάτης, νεότερα πρώτα, έως 50 εγγραφές. Οι χρονοσφραγίδες είναι ISO 8601· τα last_online και last_heartbeat είναι null μέχρι το ρομπότ να έχει συνδεθεί μία φορά.

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 ή κλειδί API (ρόλος πελάτη)

Καταχωρίζει ένα νέο ρομπότ και επιστρέφει το id του. Ένα hardware id πλακέτας κινητήρα μπορεί να ανήκει σε ένα μόνο ρομπότ· μια σύγκρουση απορρίπτεται με κατάσταση 409.

GET/api/client/profileBearer session token ή κλειδί API (ρόλος πελάτη)

Επιστρέφει το προφίλ πελάτη του αυθεντικοποιημένου χρήστη.

PATCH/api/client/profileBearer session token ή κλειδί API (ρόλος πελάτη)

Ενημερώνει πεδία προφίλ πελάτη.

GET/api/client/datasetsBearer session token ή κλειδί API (ρόλος πελάτη)

Αναγράφει τα cloud datasets του πελάτη με πλήθος επεισοδίων και μεγέθη.

GET/api/client/invoicesBearer session token ή κλειδί API (ρόλος πελάτη)

Αναγράφει τα μηνιαία τιμολόγια του πελάτη.

GET/api/client/statsBearer session token ή κλειδί API (ρόλος πελάτη)

Επιστρέφει στατιστικά χρήσης για τον πίνακα ελέγχου πελάτη.

Endpoints χειριστή

Η πλευρά του χειριστή: προφίλ και διαθεσιμότητα, πιστοποιήσεις, προγραμματισμός, και στατιστικά εσόδων.

GET/api/operator/profileBearer session token ή κλειδί API (ρόλος χειριστή)

Επιστρέφει το προφίλ χειριστή του αυθεντικοποιημένου χρήστη.

POST/api/operator/profileBearer session token ή κλειδί API (ρόλος χειριστή)

Δημιουργεί ή ενημερώνει το προφίλ χειριστή.

GET/api/operator/available-robotsBearer session token ή κλειδί API (ρόλος χειριστή)

Αναγράφει ρομπότ που είναι επί του παρόντος διαθέσιμα και ταιριάζουν με τις πιστοποιήσεις του χειριστή.

GET/api/operator/certificationsBearer session token ή κλειδί API (ρόλος χειριστή)

Αναγράφει τα αιτήματα πιστοποίησης του χειριστή και την κατάστασή τους.

POST/api/operator/certificationsBearer session token ή κλειδί API (ρόλος χειριστή)

Αιτείται πιστοποίηση για έναν τύπο ρομπότ.

GET/api/operator/scheduleBearer session token ή κλειδί API (ρόλος χειριστή)

Επιστρέφει το εβδομαδιαίο πρόγραμμα διαθεσιμότητας του χειριστή.

POST/api/operator/scheduleBearer session token ή κλειδί API (ρόλος χειριστή)

Ενημερώνει το εβδομαδιαίο πρόγραμμα διαθεσιμότητας.

GET/api/operator/availabilityBearer session token ή κλειδί API (ρόλος χειριστή)

Επιστρέφει την τρέχουσα διαθεσιμότητα του χειριστή.

GET/api/operator/statsBearer session token ή κλειδί API (ρόλος χειριστή)

Επιστρέφει στατιστικά εσόδων και συνεδριών για τον πίνακα ελέγχου χειριστή.

Συνεδρίες

Οι συνεδρίες είναι ο κεντρικός πόρος της πλατφόρμας: μία συνεδρία είναι μία συνεχής δέσμευση τηλεχειρισμού μεταξύ ενός χειριστή και ενός ρομπότ. Η κατάσταση συνεδρίας περνά μέσα από PENDING, ACTIVE, PAUSED, COMPLETED, και CANCELLED.

GET/api/sessionsBearer session token ή κλειδί API

Αναγράφει συνεδρίες για τον αυθεντικοποιημένο χρήστη. Οι χειριστές βλέπουν συνεδρίες που χειρίστηκαν· οι πελάτες βλέπουν συνεδρίες στα ρομπότ τους. Το σύνολο πεδίων διαφέρει ελαφρώς μεταξύ των δύο προβολών: η προβολή πελάτη περιλαμβάνει episodes_collected και data_collected_mb, η προβολή χειριστή περιλαμβάνει operator_earnings_cents.

NameInTypeDescription
statusquerystringΠροαιρετικό. Φιλτράρισμα κατά κατάσταση συνεδρίας, για παράδειγμα ACTIVE ή COMPLETED. Παραλείψτε για να αναγράψετε όλες.
limitquerynumberΠροαιρετικό. Μέγεθος σελίδας, προεπιλογή 50, μέγιστο 100.
offsetquerynumberΠροαιρετικό. Μετατόπιση σελιδοποίησης, προεπιλογή 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 ή κλειδί API (ρόλος χειριστή)

Ξεκινά μια συνεδρία τηλεχειρισμού σε ένα διαθέσιμο ρομπότ. Απαιτεί τον ρόλο χειριστή: οι πελάτες δεν μπορούν να ξεκινήσουν συνεδρίες. Ένας χειριστής μπορεί να κρατά το πολύ μία ACTIVE ή PAUSED συνεδρία τη φορά, και το ρομπότ πρέπει επί του παρόντος να έχει κατάσταση AVAILABLE. Σε άμεση εκκίνηση το ρομπότ μεταβαίνει σε IN_SESSION και ο πελάτης ειδοποιείται.

NameInTypeDescription
robotIdbodystringΑπαιτούμενο. Id του ρομπότ προς χειρισμό. Το ρομπότ πρέπει να είναι AVAILABLE.
operatorIdbodystringΠροαιρετικό. Ρητό id χειριστή· η προεπιλογή είναι ο αυθεντικοποιημένος χειριστής.
scheduledForbodystring (ISO 8601)Προαιρετικό. Προγραμματίζει τη συνεδρία για μελλοντική στιγμή αντί να την ξεκινήσει αμέσως.
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 ή κλειδί API

Επιστρέφει μια μεμονωμένη συνεδρία με τις λεπτομέρειές της.

PATCH/api/sessions/[id]Bearer session token ή κλειδί API

Ενημερώνει τον κύκλο ζωής της συνεδρίας: παύση, συνέχιση, τερματισμό, και σχετικές ενέργειες.

POST/api/sessions/[id]/extendBearer session token ή κλειδί API (πελάτης, κάτοχος συνεδρίας)

Αιτείται παράταση συνεδρίας. Μόνο ο πελάτης που κατέχει τη συνεδρία μπορεί να το καλέσει, και η συνεδρία πρέπει να είναι ACTIVE. Το αίτημα καταγράφεται ως γεγονός συνεδρίας και ο χειριστής λαμβάνει ειδοποίηση· η ίδια η παράταση συμβαίνει όταν ο χειριστής ενεργήσει πάνω σε αυτήν.

NameInTypeDescription
idpathstringΤο id της συνεδρίας.
additionalMinutesbodynumberΖητούμενη διάρκεια παράτασης σε λεπτά.
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 ή κλειδί API

Αναγράφει τα μηνύματα chat μιας συνεδρίας.

POST/api/sessions/[id]/messagesBearer session token ή κλειδί API

Στέλνει ένα μήνυμα chat σε μια συνεδρία.

POST/api/sessions/[id]/rateBearer session token ή κλειδί API (πελάτης)

Αξιολογεί μια ολοκληρωμένη συνεδρία σε κλίμακα 1 έως 5 αστέρων, με προαιρετικό σχόλιο.

POST/api/sessions/exportBearer session token ή κλειδί API

Εξάγει δεδομένα συνεδρίας.

Πληρωμές

Όλη η κίνηση χρημάτων γίνεται μέσω Stripe. Η χρέωση πελάτη χρησιμοποιεί έναν πελάτη Stripe με αποθηκευμένο τρόπο πληρωμής· οι πληρωμές χειριστών χρησιμοποιούν Stripe Connect. Η ίδια η πλατφόρμα ποτέ δεν αποθηκεύει δεδομένα κάρτας ή τραπεζικού λογαριασμού.

POST/api/stripe/customerBearer session token (ρόλος πελάτη)

Δημιουργεί ή επιστρέφει τον πελάτη Stripe που χρησιμοποιείται για τη χρέωση πελάτη.

GET/api/stripe/connectBearer session token (ρόλος χειριστή)

Επιστρέφει την κατάσταση του λογαριασμού Stripe Connect του χειριστή.

POST/api/stripe/connectBearer session token (ρόλος χειριστή)

Ξεκινά το onboarding Stripe Connect για πληρωμές χειριστή.

POST/api/stripe/setup-intentBearer session token (ρόλος πελάτη)

Δημιουργεί ένα Stripe SetupIntent για την αποθήκευση ενός τρόπου πληρωμής.

POST/api/stripe/portalBearer session token (ρόλος πελάτη)

Δημιουργεί μια συνεδρία πύλης χρέωσης Stripe για τη διαχείριση τρόπων πληρωμής και τιμολογίων.

GET/api/stripe/payoutBearer session token (ρόλος χειριστή)

Επιστρέφει πληροφορίες πληρωμής για τον αυθεντικοποιημένο χειριστή.

POST/api/stripe/payoutBearer session token (ρόλος χειριστή)

Αιτείται μια πληρωμή συσσωρευμένων εσόδων. Η ελάχιστη πληρωμή είναι 10,00 EUR.

POST/api/stripe/webhookΥπογραφή webhook Stripe

Λαμβάνει γεγονότα webhook του Stripe. Καλείται από το Stripe, όχι από API clients.

Δημόσια endpoints

Αυτά τα endpoints δεν απαιτούν καμία αυθεντικοποίηση. Είναι ασφαλή για κλήση από monitoring, σελίδες marketing, ή ένα status probe.

GET/api/health

Έλεγχος υγείας για το API και τη σύνδεσή του με τη βάση δεδομένων. Επιστρέφει 200 όταν και τα δύο είναι εντάξει· αν ο έλεγχος βάσης δεδομένων αποτύχει, επιστρέφεται η ίδια μορφή με τα status και db ρυθμισμένα σε error και κατάσταση HTTP 503.

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]

Επιστρέφει δημόσιες πληροφορίες για ένα υποστηριζόμενο μοντέλο ρομπότ.

GET/api/public/pricing

Επιστρέφει τα τρέχοντα δημόσια πλάνα τιμολόγησης.

POST/api/contact

Υποβάλλει ένα μήνυμα φόρμας επικοινωνίας. Το μήνυμα αποθηκεύεται πρώτα και έπειτα παραδίδεται μέσω email, οπότε μια προσωρινή διακοπή mail δεν το χάνει: σε αυτή την περίπτωση η απόκριση αναφέρει stored true και delivered false, και η παράδοση επαναλαμβάνεται λειτουργικά.

NameInTypeDescription
namebodystringΑπαιτούμενο. Το όνομά σας.
emailbodystringΑπαιτούμενο. Μια έγκυρη διεύθυνση email για την απάντηση.
categorybodystringΑπαιτούμενο. Ένα από: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other.
subjectbodystringΑπαιτούμενο. Σύντομη γραμμή θέματος.
messagebodystringΑπαιτούμενο. Το σώμα του μηνύματος.
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

Αιτείται υποστήριξη για έναν τύπο ρομπότ που δεν βρίσκεται ακόμα στην πλατφόρμα.

GET/api/stats

Επιστρέφει δημόσια στατιστικά πλατφόρμας.