Základní informace
| Vlastnost | Hodnota |
|---|---|
| Base URL | /api/v3/conversation |
| Autentizace | API Key s scope ayeto.conversation |
| Rate Limit | Default limits |
🔐 Autentizace
API Key
Všechny endpointy vyžadují API klíč s oprávněním (scope) ayeto.conversation.
Hlavička pro autentizaci
uni-api-key: <YOUR_API_KEY>
Formát API klíče
API klíč má následující formát:
ayeto-{64_random_hex_characters}
Příklad:
ayeto-a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2
Scopes
Pro použití conversation endpointů musí mít API klíč scope:
- ayeto.conversation - specifický scope pro konverzace
- * - wildcard scope (přístup ke všem endpointům)
Chybové odpovědi autentizace
| Chyba | Popis |
|---|---|
API key not provided |
Hlavička uni-api-key chybí nebo je prázdná. |
API key is invalid |
API klíč neexistuje, je deaktivován, nebo nemá požadovaný scope. |
📋 Dostupné Endpointy
| Endpoint | Metoda | Popis |
|---|---|---|
/api/v3/conversation/find |
POST | Vyhledání konverzací |
/api/v3/conversation/get |
POST | Získání jedné konverzace |
/api/v3/conversation/delete |
POST | Smazání konverzace |
📤 Response Model - PublicConversationView
Všechny endpointy vracejí konverzace v tomto formátu:
| Pole | Typ | Popis |
|---|---|---|
id |
UUID |
Unikátní identifikátor konverzace. |
name |
string |
Název konverzace. |
model |
string |
ID použitého LLM modelu. |
img_gen_model |
string |
ID modelu pro generování obrázků. |
summary |
string |
Shrnutí konverzace (pokud bylo vygenerováno). |
organization_id |
UUID \| null |
ID organizace (pokud je konverzace v kontextu organizace). |
assistant_id |
UUID \| null |
ID asistenta (pokud byl použit). |
messages |
BasicLLMMessageView[] |
Seznam zpráv v konverzaci. |
created |
ModelMeta |
Metadata o vytvoření. |
updated |
ModelMeta |
Metadata o poslední aktualizaci. |
accessed |
ModelMeta |
Metadata o posledním přístupu. |
Message Model - BasicLLMMessageView
| Pole | Typ | Popis |
|---|---|---|
id |
UUID |
Unikátní identifikátor zprávy. |
timestamp |
integer |
Unix timestamp vytvoření zprávy (v milisekundách). |
role |
string |
Role zprávy: system, user, assistant, tool, internal. |
content |
string \| null |
Textový obsah zprávy. |
reasoning_content |
string \| null |
Reasoning obsah (pokud model podporuje). |
model |
string \| null |
ID použitého modelu pro tuto zprávu. |
img_gen |
ImgGenMessage \| null |
Data vygenerovaného obrázku. |
ModelMeta
| Pole | Typ | Popis |
|---|---|---|
user_id |
UUID \| null |
ID uživatele, který provedl akci. |
timestamp |
integer |
Unix timestamp akce (v milisekundách). |
🔍 POST /api/v3/conversation/find
Vyhledání konverzací s možností filtrování, řazení a stránkování.
Request Body - DbParams
Parametry se předávají jako JSON v těle požadavku:
| Parametr | Typ | Povinné | Popis |
|---|---|---|---|
sort_key |
string |
Ne | Pole pro řazení (např. updated.timestamp, name). |
sort_order |
integer |
Ne | Směr řazení: 0 = ASC, 1 = DESC. |
limit_from |
integer |
Ne | Počáteční index pro stránkování. |
limit_to |
integer |
Ne | Koncový index pro stránkování. |
filters |
array |
Ne | Pole filtrů. |
Filtry
Filtry se předávají jako pole s podmínkami:
["field", "operator", "value"]
Podporované operátory
| Operátor | Popis |
|---|---|
== |
Rovná se |
!= |
Nerovná se |
< |
Menší než |
> |
Větší než |
<= |
Menší nebo rovno |
>= |
Větší nebo rovno |
regex |
Regulární výraz |
Příklady filtrů
["name", "regex", ".*test.*"]
["model", "==", "gpt-4o"]
["updated.timestamp", ">", 1735815581000]
["assistant_id", "==", "123e4567-e89b-12d3-a456-426614174000"]
Response
[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Moje konverzace",
"model": "gpt-4o",
"img_gen_model": "dall-e-3",
"summary": "Diskuze o programování v Pythonu...",
"organization_id": null,
"assistant_id": null,
"messages": [
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"timestamp": 1735815581000,
"role": "user",
"content": "Ahoj, jak napíšu funkci v Pythonu?",
"reasoning_content": null,
"model": null,
"img_gen": null
},
{
"id": "770e8400-e29b-41d4-a716-446655440002",
"timestamp": 1735815582000,
"role": "assistant",
"content": "Funkci v Pythonu definujete pomocí klíčového slova `def`...",
"reasoning_content": null,
"model": "gpt-4o",
"img_gen": null
}
],
"created": {
"user_id": "880e8400-e29b-41d4-a716-446655440003",
"timestamp": 1735815580000
},
"updated": {
"user_id": "880e8400-e29b-41d4-a716-446655440003",
"timestamp": 1735815582000
},
"accessed": {
"user_id": null,
"timestamp": 0
}
}
]
📖 POST /api/v3/conversation/get
Získání jedné konverzace podle ID.
Query Parameters
| Parametr | Typ | Povinné | Popis |
|---|---|---|---|
entity_id |
UUID |
Ano | ID konverzace. |
Response
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Moje konverzace",
"model": "gpt-4o",
"img_gen_model": "dall-e-3",
"summary": "",
"organization_id": null,
"assistant_id": null,
"messages": [...],
"created": {...},
"updated": {...},
"accessed": {...}
}
🗑️ POST /api/v3/conversation/delete
Smazání konverzace podle ID.
Query Parameters
| Parametr | Typ | Povinné | Popis |
|---|---|---|---|
entity_id |
UUID |
Ano | ID konverzace ke smazání. |
Response
Vrací UUID smazané konverzace:
"550e8400-e29b-41d4-a716-446655440000"
🔧 cURL Příklady
1. Získání všech konverzací
curl -X POST "https://beta.ayeto.ai/api/v3/conversation/find" \
-H "uni-api-key: ayeto-a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2" \
-H "Content-Type: application/json" \
-d '{}'
2. Získání konverzací s řazením (nejnovější první)
curl -X POST "https://beta.ayeto.ai/api/v3/conversation/find" \
-H "uni-api-key: ayeto-a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2" \
-H "Content-Type: application/json" \
-d '{
"sort_key": "updated.timestamp",
"sort_order": 1
}'
3. Získání konverzací se stránkováním (prvních 10)
curl -X POST "https://beta.ayeto.ai/api/v3/conversation/find" \
-H "uni-api-key: ayeto-a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2" \
-H "Content-Type: application/json" \
-d '{
"sort_key": "updated.timestamp",
"sort_order": 1,
"limit_from": 0,
"limit_to": 10
}'
4. Získání konverzací s filtrem (podle modelu)
curl -X POST "https://beta.ayeto.ai/api/v3/conversation/find" \
-H "uni-api-key: ayeto-a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2" \
-H "Content-Type: application/json" \
-d '{
"filters": [["model", "==", "gpt-4o"]]
}'
5. Získání konverzací s filtrem (podle názvu - regex)
curl -X POST "https://beta.ayeto.ai/api/v3/conversation/find" \
-H "uni-api-key: ayeto-a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2" \
-H "Content-Type: application/json" \
-d '{
"filters": [["name", "regex", ".*Python.*"]]
}'
6. Získání konverzací pro konkrétního asistenta
curl -X POST "https://beta.ayeto.ai/api/v3/conversation/find" \
-H "uni-api-key: ayeto-a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2" \
-H "Content-Type: application/json" \
-d '{
"filters": [["assistant_id", "==", "123e4567-e89b-12d3-a456-426614174000"]]
}'
7. Získání konverzací novějších než určité datum
curl -X POST "https://beta.ayeto.ai/api/v3/conversation/find" \
-H "uni-api-key: ayeto-a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2" \
-H "Content-Type: application/json" \
-d '{
"filters": [["created.timestamp", ">", 1735689600000]]
}'
8. Kombinace více filtrů
curl -X POST "https://beta.ayeto.ai/api/v3/conversation/find" \
-H "uni-api-key: ayeto-a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2" \
-H "Content-Type: application/json" \
-d '{
"sort_key": "updated.timestamp",
"sort_order": 1,
"limit_from": 0,
"limit_to": 20,
"filters": [
["model", "==", "gpt-4o"],
["created.timestamp", ">", 1735689600000]
]
}'
9. Získání jedné konverzace podle ID
curl -X POST "https://beta.ayeto.ai/api/v3/conversation/get?entity_id=550e8400-e29b-41d4-a716-446655440000" \
-H "uni-api-key: ayeto-a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2" \
-H "Content-Type: application/json"
10. Smazání konverzace
curl -X POST "https://beta.ayeto.ai/api/v3/conversation/delete?entity_id=550e8400-e29b-41d4-a716-446655440000" \
-H "uni-api-key: ayeto-a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2" \
-H "Content-Type: application/json"
11. Verbose curl pro debugging
curl -v -X POST "https://beta.ayeto.ai/api/v3/conversation/find" \
-H "uni-api-key: ayeto-a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2" \
-H "Content-Type: application/json" \
-d '{
"limit_from": 0,
"limit_to": 5
}'
⚠️ Chybové stavy
| HTTP Status | Popis |
|---|---|
400 |
Chybný request (nevalidní parametry, špatný formát filtru). |
401 |
Neplatný nebo chybějící API klíč (uni-api-key hlavička). |
403 |
Nedostatečná oprávnění (uživatel nemá přístup ke konverzaci). |
404 |
Konverzace nenalezena. |
500 |
Interní chyba serveru. |
Příklad chybové odpovědi
{
"detail": "not found, id: 550e8400-e29b-41d4-a716-446655440000"
}
🔄 Poznámky
- Oprávnění: Uživatel vidí pouze své vlastní konverzace (konverzace, které vytvořil).
- Filtry: Více filtrů v poli se aplikuje jako AND podmínka.
- Stránkování: Pro velké množství konverzací doporučujeme používat
limit_fromalimit_to. - Řazení: Výchozí řazení není definováno, doporučujeme explicitně specifikovat
sort_keyasort_order. - Timestamp: Všechny timestampy jsou v milisekundách (Unix epoch * 1000).