Chat API
Χρησιμοποιήστε το Rivya Chat API για non-streaming ή SSE turns, sessions που δημιουργούνται από API, συνημμένα εικόνας file_id και token-based διακανονισμό credits.
Τελευταίος έλεγχος στις 2026/05/11
Χρησιμοποιήστε POST /api/v1/chat/completions για μία πλήρη non-streaming απάντηση chat ή POST /api/v1/chat/completions/stream για Server-Sent Events.
Το Chat API βασίζεται σε session. Παραλείψτε το session_id για να ξεκινήσετε νέο API chat session. Περάστε ένα επιστρεφόμενο session_id για να συνεχίσετε το ίδιο session που δημιουργήθηκε από API.
Τρέχον εύρος
Το Chat API v1 υποστηρίζει:
- non-streaming απαντήσεις assistant
- SSE streaming με
text/event-stream - chat sessions που δημιουργούνται από API
- κράτηση credits λογαριασμού και τελικό token-based settlement
- προαιρετική web search, reasoning effort και thought mode όταν υποστηρίζονται από το επιλεγμένο μοντέλο
- συνημμένα εικόνας μέσω τιμών
file_idαπό το Files API
Το Chat API v1 δεν υποστηρίζει:
- raw ιστορικό
messagesπου παρέχει ο χρήστης - συνέχιση Studio-only chat sessions
- αυθαίρετα εξωτερικά URL συνημμένων
- γεγονότα chat webhook
Απαιτούμενα scopes
Χρησιμοποιήστε κλειδί API με:
chat:create
chat:readΤα νέα κλειδιά που δημιουργούνται στις ρυθμίσεις περιλαμβάνουν και τα δύο scopes από προεπιλογή. Παλαιότερα κλειδιά μπορεί να χρειάζεται να δημιουργηθούν ξανά πριν καλέσετε το Chat API.
Δημιουργία Chat Completion
curl https://rivya.ai/api/v1/chat/completions \
-H "Authorization: Bearer rvya_sk_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: chat-turn-001" \
-d '{
"model": "gpt-5-2-chat",
"message": "Write a concise launch plan for a new product image campaign",
"client_request_id": "chat-001"
}'Απάντηση:
{
"id": "chatcmpl_...",
"object": "chat.completion",
"session_id": "session_id",
"model": "gpt-5-2-chat",
"created_at": "2026-05-11T00:00:00.000Z",
"message": {
"id": "assistant_message_id",
"role": "assistant",
"content": "..."
},
"usage": {
"input_tokens": 1200,
"output_tokens": 320,
"total_tokens": 1520
},
"credits": {
"reserved": 3,
"final": 2
}
}Streaming Chat Completion
Χρησιμοποιήστε POST /api/v1/chat/completions/stream όταν ο διακομιστής σας θέλει assistant deltas καθώς φτάνουν:
curl -N https://rivya.ai/api/v1/chat/completions/stream \
-H "Authorization: Bearer rvya_sk_..." \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-H "Idempotency-Key: chat-stream-001" \
-d '{
"model": "gpt-5-2-chat",
"message": "Write a concise launch plan for a new product image campaign",
"client_request_id": "chat-stream-001"
}'Οι streaming απαντήσεις χρησιμοποιούν Content-Type: text/event-stream; charset=utf-8.
Events:
| Event | Σημασία |
|---|---|
session.created | Το κλειδί API, το μοντέλο, το session, τα συνημμένα, το rate limit και οι έλεγχοι κράτησης credits πέρασαν. |
message.delta | Εμφανιζόμενο delta για το μήνυμα assistant. Δεν είναι ακόμη δεσμευμένο μήνυμα. |
message.completed | Το μήνυμα assistant δεσμεύτηκε στο session που δημιουργήθηκε από API. |
usage.completed | Η χρήση tokens και τα τελικά credits διακανονίστηκαν. |
heartbeat | Keepalive event κατά τη διάρκεια μεγάλων παύσεων. |
error | Δημόσιος φάκελος σφάλματος API για αποτυχία αφού ξεκίνησε το streaming. |
done | Το stream ολοκληρώθηκε επιτυχώς. |
Παράδειγμα stream:
event: session.created
data: {"request_id":"req_...","session_id":"session_id","model":"gpt-5-2-chat"}
event: message.delta
data: {"request_id":"req_...","session_id":"session_id","delta":"Draft ","index":0}
event: message.completed
data: {"request_id":"req_...","session_id":"session_id","message":{"id":"assistant_message_id","role":"assistant","content":"Draft ...","created_at":"2026-05-11T00:00:00.000Z"}}
event: usage.completed
data: {"request_id":"req_...","session_id":"session_id","usage":{"input_tokens":1200,"output_tokens":320,"total_tokens":1520},"credits":{"reserved":3,"final":2}}
event: done
data: {"request_id":"req_...","ok":true}Αν συμβεί σφάλμα μετά το πρώτο SSE event, το stream στέλνει event: error και μετά κλείνει:
event: error
data: {"error":{"code":"internal_error","message":"The request could not be completed.","requestId":"req_..."}}Αν ο client αποσυνδεθεί πριν την ολοκλήρωση, το Rivya σταματά το in-flight generation stream όταν είναι δυνατό. Τα partial deltas δεν αποθηκεύονται ως τελικό μήνυμα assistant. Αν ο διακομιστής έχει ήδη δεσμεύσει message.completed, το τελικό αποτέλεσμα μπορεί να διαβαστεί αργότερα με GET /api/v1/chat/sessions/{sessionId}.
Συνέχιση session
Χρησιμοποιήστε το επιστρεφόμενο session_id:
curl https://rivya.ai/api/v1/chat/completions \
-H "Authorization: Bearer rvya_sk_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: chat-turn-002" \
-d '{
"model": "gpt-5-2-chat",
"session_id": "session_id",
"message": "Now turn that into a 5-step execution checklist."
}'Το session πρέπει να ανήκει στον ίδιο λογαριασμό Rivya και να έχει δημιουργηθεί από Public API. Το Chat API δεν επιστρέφει ούτε συνεχίζει Studio-only chat sessions.
Συνημμένα εικόνας
Τα συνημμένα Chat χρησιμοποιούν εγγραφές Files API, όχι εξωτερικά URL.
- Ανεβάστε εικόνα με
POST /api/v1/files. - Χρησιμοποιήστε το επιστρεφόμενο
idωςattachments[].file_id.
{
"model": "gpt-5-2-chat",
"message": "Review this product photo and suggest a cleaner editorial direction.",
"attachments": [
{
"file_id": "file_..."
}
]
}Το αρχείο πρέπει να ανήκει στον ίδιο λογαριασμό, να έχει kind: "image" και να είναι διαθέσιμο. Τα μοντέλα που δεν υποστηρίζουν συνημμένα εικόνας επιστρέφουν chat_attachment_not_supported.
Προαιρετικά controls
{
"model": "gpt-5-2-chat",
"message": "Compare three launch options.",
"enable_web_search": false,
"reasoning_effort": "default",
"thought_mode": "default"
}Η υποστήριξη controls διαφέρει ανά μοντέλο. Διαβάστε /api/v1/models και ελέγξτε το chat_capabilities πριν εκθέσετε controls στο UI σας.
Λίστα sessions
Χρησιμοποιήστε GET /api/v1/chat/sessions με κλειδί που περιλαμβάνει chat:read.
curl https://rivya.ai/api/v1/chat/sessions \
-H "Authorization: Bearer rvya_sk_..."Αυτό επιστρέφει μόνο sessions που δημιουργήθηκαν από API:
{
"object": "list",
"data": [
{
"id": "session_id",
"object": "chat.session",
"model": "gpt-5-2-chat",
"tool_slug": null,
"title": "Write a concise launch plan...",
"controls": {
"enable_web_search": false,
"reasoning_effort": null,
"thought_mode": null
},
"created_at": "2026-05-11T00:00:00.000Z",
"updated_at": "2026-05-11T00:00:00.000Z",
"last_message_at": "2026-05-11T00:00:00.000Z"
}
]
}Λήψη session
Χρησιμοποιήστε GET /api/v1/chat/sessions/{sessionId} για να διαβάσετε ένα session που δημιουργήθηκε από API και τα δεσμευμένα μηνύματά του.
curl https://rivya.ai/api/v1/chat/sessions/session_id \
-H "Authorization: Bearer rvya_sk_..."Η απάντηση περιλαμβάνει δεσμευμένα μηνύματα χρήστη και assistant. Δεν εκθέτει εσωτερικά πεδία provider.
Idempotency
Χρησιμοποιήστε Idempotency-Key για κάθε production αίτημα POST /api/v1/chat/completions και POST /api/v1/chat/completions/stream.
Αν μια επανάληψη χρησιμοποιεί το ίδιο κλειδί και το ίδιο σώμα, το Rivya μπορεί να επιστρέψει την αποθηκευμένη απάντηση χωρίς να δημιουργήσει άλλο μήνυμα ή να καταναλώσει ξανά credits. Αν το ίδιο κλειδί επαναχρησιμοποιηθεί με διαφορετικό input, το API επιστρέφει idempotency_conflict.
Για streaming επαναλήψεις, το Rivya δεν αναπαράγει ιστορικά token deltas. Μια ολοκληρωμένη αναπαραγωγή επιστρέφει ελάχιστη SSE ακολουθία με session.created, message.completed, usage.completed και done.
Συνηθισμένα σφάλματα
| Code | Σημασία |
|---|---|
chat_model_not_supported | Το επιλεγμένο μοντέλο δεν είναι διαθέσιμο για Chat API. |
chat_session_conflict | Το session δεν μπορεί να χρησιμοποιηθεί για αυτό το αίτημα. |
chat_attachment_not_supported | Το συνημμένο λείπει, δεν ανήκει στον λογαριασμό, δεν είναι εικόνα ή δεν υποστηρίζεται από το μοντέλο. |
insufficient_credits | Ο λογαριασμός δεν έχει αρκετά credits για το turn. |
idempotency_conflict | Το idempotency key επαναχρησιμοποιήθηκε με διαφορετικό input. |
Σχετικές σελίδες
Αρχείο αλλαγών API
Παρακολουθήστε ενημερώσεις τεκμηρίωσης, endpoint, αναφοράς μοντέλων, schema και μελλοντικών επιφανειών του Rivya API v1.
Πιστώσεις API
Κατανοήστε πώς οι κλήσεις Rivya API χρησιμοποιούν credits λογαριασμού, ελέγχους υπολοίπου, δεσμευμένα credits, επιστροφές αποτυχημένων εργασιών και αντιμετώπιση προβλημάτων credits.