Αναφορά 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 token | Scripts, servers, CI, και οτιδήποτε δεν πρέπει να εξαρτάται από σύνδεση browser |
| MCP | Ο hosted MCP server στο https://www.ay-robots.com/api/mcp (Streamable HTTP) | LLM agents και εργαλεία που μιλούν το Model Context Protocol |
curl https://www.ay-robots.com/api/sessions \
-H 'Authorization: Bearer ayr_live_your_key_here'Τα κλειδιά API δημιουργούνται και ανακαλούνται στο /dashboard/settings. Αντιμετωπίστε τα σαν κωδικούς πρόσβασης: κρατήστε τα στην πλευρά του server, και περιστρέψτε δημιουργώντας ένα κλειδί αντικατάστασης πριν ανακαλέσετε το παλιό. Αν χρησιμοποιείτε το CLI desktop, μπορεί επίσης να εκθέσει την πλατφόρμα ως τοπικό MCP server με την εντολή: ay-robots mcp.
Οι αποκρίσεις είναι JSON. Τα σφάλματα χρησιμοποιούν συνεπή μορφή: ένα αντικείμενο JSON με ένα μοναδικό πεδίο error που περιέχει ένα μήνυμα αναγνώσιμο από άνθρωπο, παραδιδόμενο με κατάλληλο κωδικό κατάστασης 4xx ή 5xx. Οι επιτυχείς αποκρίσεις επιστρέφουν τον πόρο απευθείας· μερικά endpoints περιτυλίγουν λίστες σε ένα ονομασμένο πεδίο, κάτι που τα παρακάτω παραδείγματα δείχνουν όπου έχει σημασία.
Endpoints αυθεντικοποίησης
Υδραυλικά λογαριασμού και προφίλ. Αυτά χρησιμοποιούνται κυρίως από τον ίδιο τον πίνακα ελέγχου, αλλά λειτουργούν με οποιοδήποτε έγκυρο διαπιστευτήριο.
/api/auth/profileBearer session token ή κλειδί APIΕπιστρέφει το προφίλ του αυθεντικοποιημένου χρήστη.
/api/auth/profileBearer session token ή κλειδί APIΕνημερώνει πεδία προφίλ όπως το εμφανιζόμενο όνομα και τις προτιμήσεις ειδοποιήσεων.
/api/auth/syncBearer session tokenΣυγχρονίζει τον χρήστη auth του Supabase με την εγγραφή χρήστη της πλατφόρμας.
/api/auth/check-onboardingBearer session tokenΑναφέρει αν ο αυθεντικοποιημένος χρήστης έχει ολοκληρώσει το onboarding.
/api/auth/avatarBearer session tokenΑνεβάζει μια νέα εικόνα avatar για τον αυθεντικοποιημένο χρήστη.
Endpoints πελάτη
Ό,τι διαχειρίζεται ένας κάτοχος ρομπότ: καταχωρισμένα ρομπότ, το προφίλ πελάτη, datasets, τιμολόγια, και στατιστικά πίνακα ελέγχου.
/api/client/robotsBearer session token ή κλειδί API (ρόλος πελάτη)Αναγράφει τα ρομπότ που έχει καταχωρίσει ο αυθεντικοποιημένος πελάτης, νεότερα πρώτα, έως 50 εγγραφές. Οι χρονοσφραγίδες είναι ISO 8601· τα last_online και last_heartbeat είναι null μέχρι το ρομπότ να έχει συνδεθεί μία φορά.
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 ή κλειδί API (ρόλος πελάτη)Καταχωρίζει ένα νέο ρομπότ και επιστρέφει το id του. Ένα hardware id πλακέτας κινητήρα μπορεί να ανήκει σε ένα μόνο ρομπότ· μια σύγκρουση απορρίπτεται με κατάσταση 409.
/api/client/profileBearer session token ή κλειδί API (ρόλος πελάτη)Επιστρέφει το προφίλ πελάτη του αυθεντικοποιημένου χρήστη.
/api/client/profileBearer session token ή κλειδί API (ρόλος πελάτη)Ενημερώνει πεδία προφίλ πελάτη.
/api/client/datasetsBearer session token ή κλειδί API (ρόλος πελάτη)Αναγράφει τα cloud datasets του πελάτη με πλήθος επεισοδίων και μεγέθη.
/api/client/invoicesBearer session token ή κλειδί API (ρόλος πελάτη)Αναγράφει τα μηνιαία τιμολόγια του πελάτη.
/api/client/statsBearer session token ή κλειδί API (ρόλος πελάτη)Επιστρέφει στατιστικά χρήσης για τον πίνακα ελέγχου πελάτη.
Endpoints χειριστή
Η πλευρά του χειριστή: προφίλ και διαθεσιμότητα, πιστοποιήσεις, προγραμματισμός, και στατιστικά εσόδων.
/api/operator/profileBearer session token ή κλειδί API (ρόλος χειριστή)Επιστρέφει το προφίλ χειριστή του αυθεντικοποιημένου χρήστη.
/api/operator/profileBearer session token ή κλειδί API (ρόλος χειριστή)Δημιουργεί ή ενημερώνει το προφίλ χειριστή.
/api/operator/available-robotsBearer session token ή κλειδί API (ρόλος χειριστή)Αναγράφει ρομπότ που είναι επί του παρόντος διαθέσιμα και ταιριάζουν με τις πιστοποιήσεις του χειριστή.
/api/operator/certificationsBearer session token ή κλειδί API (ρόλος χειριστή)Αναγράφει τα αιτήματα πιστοποίησης του χειριστή και την κατάστασή τους.
/api/operator/certificationsBearer session token ή κλειδί API (ρόλος χειριστή)Αιτείται πιστοποίηση για έναν τύπο ρομπότ.
/api/operator/scheduleBearer session token ή κλειδί API (ρόλος χειριστή)Επιστρέφει το εβδομαδιαίο πρόγραμμα διαθεσιμότητας του χειριστή.
/api/operator/scheduleBearer session token ή κλειδί API (ρόλος χειριστή)Ενημερώνει το εβδομαδιαίο πρόγραμμα διαθεσιμότητας.
/api/operator/availabilityBearer session token ή κλειδί API (ρόλος χειριστή)Επιστρέφει την τρέχουσα διαθεσιμότητα του χειριστή.
/api/operator/statsBearer session token ή κλειδί API (ρόλος χειριστή)Επιστρέφει στατιστικά εσόδων και συνεδριών για τον πίνακα ελέγχου χειριστή.
Συνεδρίες
Οι συνεδρίες είναι ο κεντρικός πόρος της πλατφόρμας: μία συνεδρία είναι μία συνεχής δέσμευση τηλεχειρισμού μεταξύ ενός χειριστή και ενός ρομπότ. Η κατάσταση συνεδρίας περνά μέσα από PENDING, ACTIVE, PAUSED, COMPLETED, και CANCELLED.
/api/sessionsBearer session token ή κλειδί APIΑναγράφει συνεδρίες για τον αυθεντικοποιημένο χρήστη. Οι χειριστές βλέπουν συνεδρίες που χειρίστηκαν· οι πελάτες βλέπουν συνεδρίες στα ρομπότ τους. Το σύνολο πεδίων διαφέρει ελαφρώς μεταξύ των δύο προβολών: η προβολή πελάτη περιλαμβάνει episodes_collected και data_collected_mb, η προβολή χειριστή περιλαμβάνει operator_earnings_cents.
| Name | In | Type | Description |
|---|---|---|---|
| status | query | string | Προαιρετικό. Φιλτράρισμα κατά κατάσταση συνεδρίας, για παράδειγμα ACTIVE ή COMPLETED. Παραλείψτε για να αναγράψετε όλες. |
| limit | query | number | Προαιρετικό. Μέγεθος σελίδας, προεπιλογή 50, μέγιστο 100. |
| offset | query | number | Προαιρετικό. Μετατόπιση σελιδοποίησης, προεπιλογή 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 ή κλειδί API (ρόλος χειριστή)Ξεκινά μια συνεδρία τηλεχειρισμού σε ένα διαθέσιμο ρομπότ. Απαιτεί τον ρόλο χειριστή: οι πελάτες δεν μπορούν να ξεκινήσουν συνεδρίες. Ένας χειριστής μπορεί να κρατά το πολύ μία ACTIVE ή PAUSED συνεδρία τη φορά, και το ρομπότ πρέπει επί του παρόντος να έχει κατάσταση AVAILABLE. Σε άμεση εκκίνηση το ρομπότ μεταβαίνει σε IN_SESSION και ο πελάτης ειδοποιείται.
| Name | In | Type | Description |
|---|---|---|---|
| robotId | body | string | Απαιτούμενο. Id του ρομπότ προς χειρισμό. Το ρομπότ πρέπει να είναι AVAILABLE. |
| operatorId | body | string | Προαιρετικό. Ρητό id χειριστή· η προεπιλογή είναι ο αυθεντικοποιημένος χειριστής. |
| scheduledFor | body | string (ISO 8601) | Προαιρετικό. Προγραμματίζει τη συνεδρία για μελλοντική στιγμή αντί να την ξεκινήσει αμέσως. |
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 ή κλειδί APIΕπιστρέφει μια μεμονωμένη συνεδρία με τις λεπτομέρειές της.
/api/sessions/[id]Bearer session token ή κλειδί APIΕνημερώνει τον κύκλο ζωής της συνεδρίας: παύση, συνέχιση, τερματισμό, και σχετικές ενέργειες.
/api/sessions/[id]/extendBearer session token ή κλειδί API (πελάτης, κάτοχος συνεδρίας)Αιτείται παράταση συνεδρίας. Μόνο ο πελάτης που κατέχει τη συνεδρία μπορεί να το καλέσει, και η συνεδρία πρέπει να είναι ACTIVE. Το αίτημα καταγράφεται ως γεγονός συνεδρίας και ο χειριστής λαμβάνει ειδοποίηση· η ίδια η παράταση συμβαίνει όταν ο χειριστής ενεργήσει πάνω σε αυτήν.
| Name | In | Type | Description |
|---|---|---|---|
| id | path | string | Το id της συνεδρίας. |
| additionalMinutes | body | number | Ζητούμενη διάρκεια παράτασης σε λεπτά. |
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 ή κλειδί APIΑναγράφει τα μηνύματα chat μιας συνεδρίας.
/api/sessions/[id]/messagesBearer session token ή κλειδί APIΣτέλνει ένα μήνυμα chat σε μια συνεδρία.
/api/sessions/[id]/rateBearer session token ή κλειδί API (πελάτης)Αξιολογεί μια ολοκληρωμένη συνεδρία σε κλίμακα 1 έως 5 αστέρων, με προαιρετικό σχόλιο.
/api/sessions/exportBearer session token ή κλειδί APIΕξάγει δεδομένα συνεδρίας.
Πληρωμές
Όλη η κίνηση χρημάτων γίνεται μέσω Stripe. Η χρέωση πελάτη χρησιμοποιεί έναν πελάτη Stripe με αποθηκευμένο τρόπο πληρωμής· οι πληρωμές χειριστών χρησιμοποιούν Stripe Connect. Η ίδια η πλατφόρμα ποτέ δεν αποθηκεύει δεδομένα κάρτας ή τραπεζικού λογαριασμού.
/api/stripe/customerBearer session token (ρόλος πελάτη)Δημιουργεί ή επιστρέφει τον πελάτη Stripe που χρησιμοποιείται για τη χρέωση πελάτη.
/api/stripe/connectBearer session token (ρόλος χειριστή)Επιστρέφει την κατάσταση του λογαριασμού Stripe Connect του χειριστή.
/api/stripe/connectBearer session token (ρόλος χειριστή)Ξεκινά το onboarding Stripe Connect για πληρωμές χειριστή.
/api/stripe/setup-intentBearer session token (ρόλος πελάτη)Δημιουργεί ένα Stripe SetupIntent για την αποθήκευση ενός τρόπου πληρωμής.
/api/stripe/portalBearer session token (ρόλος πελάτη)Δημιουργεί μια συνεδρία πύλης χρέωσης Stripe για τη διαχείριση τρόπων πληρωμής και τιμολογίων.
/api/stripe/payoutBearer session token (ρόλος χειριστή)Επιστρέφει πληροφορίες πληρωμής για τον αυθεντικοποιημένο χειριστή.
/api/stripe/payoutBearer session token (ρόλος χειριστή)Αιτείται μια πληρωμή συσσωρευμένων εσόδων. Η ελάχιστη πληρωμή είναι 10,00 EUR.
/api/stripe/webhookΥπογραφή webhook StripeΛαμβάνει γεγονότα webhook του Stripe. Καλείται από το Stripe, όχι από API clients.
Δημόσια endpoints
Αυτά τα endpoints δεν απαιτούν καμία αυθεντικοποίηση. Είναι ασφαλή για κλήση από monitoring, σελίδες marketing, ή ένα status probe.
/api/healthΈλεγχος υγείας για το API και τη σύνδεσή του με τη βάση δεδομένων. Επιστρέφει 200 όταν και τα δύο είναι εντάξει· αν ο έλεγχος βάσης δεδομένων αποτύχει, επιστρέφεται η ίδια μορφή με τα status και db ρυθμισμένα σε error και κατάσταση HTTP 503.
curl https://www.ay-robots.com/api/health{
"status": "ok",
"db": "ok",
"timestamp": "2026-08-09T10:12:00.000Z"
}/api/robots/[id]Επιστρέφει δημόσιες πληροφορίες για ένα υποστηριζόμενο μοντέλο ρομπότ.
/api/public/pricingΕπιστρέφει τα τρέχοντα δημόσια πλάνα τιμολόγησης.
/api/contactΥποβάλλει ένα μήνυμα φόρμας επικοινωνίας. Το μήνυμα αποθηκεύεται πρώτα και έπειτα παραδίδεται μέσω email, οπότε μια προσωρινή διακοπή mail δεν το χάνει: σε αυτή την περίπτωση η απόκριση αναφέρει stored true και delivered false, και η παράδοση επαναλαμβάνεται λειτουργικά.
| Name | In | Type | Description |
|---|---|---|---|
| name | body | string | Απαιτούμενο. Το όνομά σας. |
| body | string | Απαιτούμενο. Μια έγκυρη διεύθυνση email για την απάντηση. | |
| category | body | string | Απαιτούμενο. Ένα από: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other. |
| subject | body | string | Απαιτούμενο. Σύντομη γραμμή θέματος. |
| message | body | string | Απαιτούμενο. Το σώμα του μηνύματος. |
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-requestΑιτείται υποστήριξη για έναν τύπο ρομπότ που δεν βρίσκεται ακόμα στην πλατφόρμα.
/api/statsΕπιστρέφει δημόσια στατιστικά πλατφόρμας.
Πώς το AY-Robots ασφαλίζει λογαριασμούς και ζωντανό έλεγχο ρομπότ: αυθεντικοποίηση Supabase, μοντέλο ρόλων, κλειδιά API, μηχανισμοί προστασίας συνεδρίας, ίχνος ελέγχου, και κρυπτογράφηση.
Πώς λειτουργούν οι συνεδρίες στο AY-Robots: ο κύκλος ζωής από PENDING έως COMPLETED, κάθε γεγονός δραστηριότητας, το chat συνεδρίας, οι αξιολογήσεις, οι παρατάσεις και τα δεδομένα εκπαίδευσης.