Přeskočit na hlavní obsah

BuddyPro End-user API (Client API)

OpenAI-kompatibilní API přístup pro koncové uživatele BuddyPro — kdokoli, kdo BuddyPro používá, si může vygenerovat vlastní klíč a programově přistupovat ke svému osobnímu profilu BuddyPro. Jde o API placené za použití (pay-per-use), účtované z předplacených kreditů zakoupených přes tu BuddyPro instanci, kterou používáš; cenu za jeden požadavek stanovuje daná instance. API přijímá požadavky ve stejném formátu jako OpenAI Chat Completions API a vrací odpovědi ve stejném formátu, s BuddyPro rozšířeními v poli message (např. image, audio).

Toto není Owner API. Pokud jsi vlastník BuddyPro instance nebo člen týmu a stavíš interní nástroje, automatizace nebo servisní integrace, použij místo toho Owner API (samostatná B2B dokumentace).

Přehled

VlastnostHodnota
CestaPOST /v1/chat/completions
Autentizacehlavička Authorization: Bearer bapi_B2C_...
Formátkompatibilní s OpenAI Chat Completions
Účtovánípředplacené kredity (Stripe) — kupované přes tvou BuddyPro instanci, účtované za požadavek
Streamingzatím nepodporován

Kdo může Client API používat

Client API klíč si může vygenerovat kterýkoli přihlášený uživatel BuddyPro — nejen vlastníci instance nebo členové týmu — za předpokladu, že vlastník instance Client API povolil. Client API je ve výchozím stavu vypnuté; pokud ho vlastník nezapnul, /generateClientApiKey vrátí chybu a existující klíče přestanou fungovat. Jakmile je povolené, klíč je svázaný s tvým osobním profilem BuddyPro: každý požadavek se zpracuje, jako bys poslal zprávu v Telegramu, s plným přístupem k tvé historii konverzací, dlouhodobé paměti a osobnímu nastavení.

Aby klíč skutečně fungoval, musíš nastavit účtování kreditů — a to má dva požadavky:

  • Aktivní předplatné té BuddyPro instance, kterou používáš.
  • Instance musí přijímat platby za API kredity. Účtování zajišťuje instance (její vlastník), který stanovuje cenu za požadavek; instanci, jejíž vlastník platby za API nepovolil, ti kredity prodat nemůže.

Pokud některý z požadavků není splněn, /setupApiCredits vrátí vysvětlující chybu (viz Nastavení účtování kreditů).

Trvalá paměť a historie konverzací

Stejně jako rozhraní v Telegramu BuddyPro udržuje dlouhodobou paměť a plnou historii konverzací tvého profilu. Každý API požadavek se zpracuje přesně jako zpráva poslaná v Telegramu — uloží se do tvé historie, přispívá do paměti BuddyPro o tobě a ovlivňuje budoucí odpovědi.

To znamená:

  • Konverzace se kumulují. BuddyPro si pamatuje vše, co bylo řečeno přes API, stejně jako si pamatuje konverzace z Telegramu. Historii konverzace nemusíš (a neměl bys) posílat — pošli jen aktuální zprávu.
  • Paměť se buduje v čase. BuddyPro se z API interakcí učí preference, fakta a kontext stejně jako z chatů v Telegramu.
  • K dispozici je bezstavový režim. Nastav x_buddy_saveToHistory: false pro požadavek, který nic neukládá — žádná historie chatu, žádné aktualizace paměti, žádné změny profilu. Viz Bezstavový režim.

Neposílej historii konverzace v poli messages. Pošli jen aktuální zprávu uživatele. BuddyPro ukládá a spravuje kontext konverzace na straně serveru.

Soukromí a přístup k datům

Client API poskytuje koncovým uživatelům plné vlastnictví dat. Na rozdíl od Owner API (kde vlastník instance může přepnout na kterýkoli testovací profil, který vytvořil) je Client API navržené kolem soukromí uživatele:

  • Tvůj API klíč je jen tvůj. Vlastník BuddyPro instance tvůj klíč nevidí.
  • Tvůj profil je soukromý. Vlastník instance nemůže přes bota přepnout na tvůj osobní Telegram profil — Telegram user ID jsou číselná a příkaz /test číselná ID zcela blokuje.
  • Tvé izolované profily jsou chráněné. Profily, které vytvoříš pomocí pole user, jsou přiřazené k tvému vlastnímu API klíči. Vlastník instance na ně nemůže přepnout — bot vynucuje, že můžeš přepínat jen na profily vytvořené tvými vlastními klíči.

Co to znamená v praxi:

Client API je bezpečné používat pro osobní integrace, automatizace a nástroje, kde chceš programový přístup ke svému vlastnímu profilu BuddyPro. Svá data ovládáš přes tentýž klíč, který sis vygeneroval.

Autentizace

Získání Client API klíče

Pošli tento příkaz svému BuddyPro botovi v Telegramu:

/generateClientApiKey:my-app

Název (:my-app) je volitelný — pokud ho vynecháš, vygeneruje se automaticky. Dostaneš klíč začínající na bapi_B2C_.

Ulož si tento klíč bezpečně — už se znovu nezobrazí. Zneplatnění: /invalidateApiKey:my-app (můžeš použít název klíče nebo samotný řetězec klíče)

Po vygenerování klíče musíš před prvním API požadavkem nastavit účtování kreditů.

POZNÁMKA: Ve výchozím stavu požadavky používají tvůj osobní profil BuddyPro — zprávy se ukládají do tvé historie a přispívají do tvé paměti. Pole user použij k vytvoření dalších izolovaných profilů se samostatnou historií konverzací a pamětí (např. pro různé projekty nebo kontexty). Viz Izolace uživatelů.

Nastavení účtování kreditů

Client API vyžaduje předplacené kredity přes Stripe. Po vygenerování klíče spusť:

/setupApiCredits:100:20

Otevře se Stripe checkout, kde nakoupíš svou počáteční dobíječku kreditů. Dva parametry jsou:

ParametrPopisMinimumMaximum
topUpAmountČástka v USD k vložení, když kredity dojdou$10$10 000
rechargeAtPrahová hodnota zůstatku kreditů, která spustí automatické dobití$2$10 000

Příklad: /setupApiCredits:100:20 — nakup zpočátku $100, automaticky dobíjej po $100 vždy, když zůstatek klesne pod $20.

Kredity se automaticky dobíjejí přes tvou uloženou platební metodu, když zůstatek klesne pod práh rechargeAt. Po počátečním nastavení už nemusíš ručně dobíjet.

Platba jde instanci, ne BuddyPro. Tvůj checkout kreditů a uložená platební metoda zpracovává ta BuddyPro instance, kterou používáš (její vlastník), který stanovuje cenu za požadavek. Částka odečtená ze zůstatku za jeden požadavek je cena dané instance.

Požadavky pro nastavení. /setupApiCredits vrátí chybu, pokud:

  • Nemáš aktivní předplatné instance: "An active subscription is required to set up Client API credits."
  • Instance není nastavená pro přijímání API plateb: "This instance is not set up to accept API credit payments yet. Please contact the instance owner."

Jakmile je účtování aktivní, použij /changeApiCreditsTopUp (níže) k úpravě částek — opětovné volání /setupApiCredits vrátí chybu, že účtování už je nastavené.

Změna nastavení kreditů

Ke změně částky dobití nebo prahu dobíjení bez spuštění nového Stripe checkoutu:

/changeApiCreditsTopUp:20:5

Nastaví automatické dobíjení na $20 a práh na $5. Tvůj existující vztah k účtování zůstává zachován — není potřeba nový checkout.

Správa API klíčů

PříkazPopis
/generateClientApiKey:{name}Vytvoří nový Client API klíč (name je volitelný)
/invalidateApiKey:{name or bapi_B2C_...}Zneplatní klíč podle názvu nebo řetězce klíče
/getApiStatsVypíše všechny tvé aktivní API klíče a využití
/setupApiCredits:{topUp}:{rechargeAt}Nastaví účtování (poprvé — otevře Stripe checkout)
/changeApiCreditsTopUp:{topUp}:{rechargeAt}Upraví částku automatického dobíjení a práh

Autentizace požadavků

API klíč předej v hlavičce Authorization:

Authorization: Bearer bapi_B2C_xxxxxxxxxxxx

Endpoint

POST https://api.buddypro.ai/v1/chat/completions
Authorization: Bearer bapi_B2C_xxxxxxxxxxxx
Content-Type: application/json

Požadavek

Vstupní obsah

Standardní OpenAI pole messages. BuddyPro pro zpracování extrahuje poslední zprávu uživatele.

Povolená je pouze jedna user zpráva. BuddyPro spravuje historii konverzací na straně serveru — neposílej jednotlivé tahy konverzace. system a assistant zprávy jsou ignorovány.

Pouze text (řetězcový obsah):

{
"messages": [
{ "role": "user", "content": "Hello, how are you?" }
]
}

Multimodální (obsah jako pole):

{
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "Describe this image" },
{ "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } }
]
}
]
}

Typy částí obsahu

Při použití obsahu jako pole uvnitř messages[].content:

Text

{ "type": "text", "text": "What is the weather today?" }

Max. 50 000 znaků na jednu textovou část.

Obrázek (image_url)

{ "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } }

Podporované typy URL:

  • HTTPS URL — musí být veřejně dostupná
  • Data URIdata:image/png;base64,iVBORw0KGgo...

Max. 5 obrázků na požadavek. Max. 40 MB na vzdálené stažení.

Zvukový vstup (input_audio)

{
"type": "input_audio",
"input_audio": {
"data": "<base64>",
"format": "mp3"
}
}

Pole:

PoleTypPopis
datastringZvuková data v base64 nebo URL
formatstringFormát zvuku: mp3, wav, ogg, aac, flac
type"url" | "base64"Volitelný typ dat. Výchozí: base64

Zvuk přes URL:

{
"type": "input_audio",
"input_audio": {
"data": "https://example.com/audio.mp3",
"type": "url",
"format": "mp3"
}
}

Zvukový výstup (TTS přes modalities)

Pro vyžádání TTS zvukového výstupu použij OpenAI pole modalities a audio:

{
"modalities": ["text", "audio"],
"audio": { "format": "mp3" },
"messages": [
{
"role": "user",
"content": [
{ "type": "input_audio", "input_audio": { "data": "<base64>", "format": "mp3" } }
]
}
]
}
  • Když modalities obsahuje "audio", TTS je zapnuté
  • audio.format je výchozí "mp3", pokud je vynecháno
  • TTS se uplatní jen tehdy, když je v požadavku přítomen zvukový vstup
  • audio.voice je přijímáno, ale ignorováno — hlas nastavuje vlastník bota

Reference polí požadavku

PoleTypPovinnéPopis
messagesarrayAnoZprávy ve formátu OpenAI. Musí obsahovat přesně 1 uživatelskou zprávu.
modalities["text"] | ["text", "audio"]Typy výstupu. Přidej "audio" pro zapnutí TTS
audioobjectKonfigurace zvuku: { "format": "mp3"|"wav" }
userstringVlastní identifikátor uživatele pro izolovaný profil. Viz Izolace uživatelů
x_buddy_saveToHistorybooleanKdyž false, nic se neuloží do historie, paměti ani profilu. Výchozí: true. Viz Bezstavový režim

Pole pro přepis promptu nejsou v Client API k dispozici. x_buddy_systemPrompt, x_buddy_systemPromptMode a x_buddy_rolePrompt nejsou podporovány pro Client API klíče — system a role prompty vlastníka instance nelze přepsat na úrovni požadavku. Poslání kteréhokoli z těchto polí vrátí chybu 400 unsupported_parameter.

Client Request ID

Předej přes HTTP hlavičku X-Client-Request-Id (max. 64 znaků, alfanumerické + pomlčky + podtržítka):

curl -X POST https://api.buddypro.ai/v1/chat/completions \
-H "Authorization: Bearer bapi_B2C_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-H "X-Client-Request-Id: my-app_req-42" \
-d '{ "messages": [{ "role": "user", "content": "Hello!" }] }'

Izolace uživatelů

Ve výchozím stavu API požadavky používají tvůj osobní profil BuddyPro — všechny konverzace se ukládají do tvé historie a přispívají do tvé paměti.

K vytvoření izolovaných profilů se samostatnou historií konverzací a pamětí použij pole user. Každá unikátní hodnota user vytvoří plně samostatný profil — vhodné pro různé projekty, persony nebo kontexty.

RežimJak aktivovatChování
Osobní profil (výchozí)Vynech userPoužije tvůj vlastní profil (historie, nastavení, paměť)
Izolovaný profilNastav user na vlastní identifikátorVytvoří samostatný profil na hodnotu — vlastní historie, paměť, nastavení
BezstavovýNastav x_buddy_saveToHistory: falseNic se neukládá. Lze kombinovat s oběma režimy

Příklad izolovaného profilu:

{
"user": "work-assistant",
"messages": [
{ "role": "user", "content": "Help me prepare for my 3pm meeting." }
]
}

Validační pravidla pro user:

  • Pouze alfanumerické znaky, pomlčky, podtržítka a tečky (a-z, A-Z, 0-9, -, _, .)
  • Nesmí být čistě číselná hodnota
  • Max. 128 znaků, bez mezer

Bezstavový režim

Nastav x_buddy_saveToHistory: false pro požadavek, který nic neukládá. V bezstavovém režimu:

  • Nic se neuloží do historie chatu
  • Žádné aktualizace dlouhodobé paměti
  • Žádné aktualizace profilu ani učení preferencí
  • AI přesto normálně odpovídá s využitím existujícího kontextu

Příklad — bezstavové Q&A:

{
"x_buddy_saveToHistory": false,
"messages": [
{ "role": "user", "content": "What is the best way to start a business?" }
]
}

Odpověď

Hlavičky odpovědi

HlavičkaPopis
x-request-idServerem generované unikátní ID požadavku (vždy přítomné)
x-client-request-idKlientem dodané ID požadavku vrácené zpět (pokud bylo zadáno)
Content-Typeapplication/json

Úspěch — pouze text

{
"id": "chatcmpl-req_abc123def456",
"object": "chat.completion",
"created": 1710964800,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I help you today?"
},
"finish_reason": "stop"
}
]
}

Úspěch — obrázkový výstup

Když BuddyPro vygeneruje obrázek, objeví se v message.image:

{
"id": "chatcmpl-req_def456",
"object": "chat.completion",
"created": 1710964800,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Here's the image you requested:",
"image": {
"id": "image_req_def456_generated_image.png",
"data": "iVBORw0KGgo...",
"media_type": "image/png",
"file_name": "generated_image.png",
"caption": "A sunset over the ocean"
}
},
"finish_reason": "stop"
}
]
}

Úspěch — zvukový výstup (hudba / meditace)

Zvuk z funkcí hudby nebo meditace se vrací vždy, bez ohledu na modalities:

{
"id": "chatcmpl-req_ghi789",
"object": "chat.completion",
"created": 1710964800,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": null,
"audio": {
"id": "audio_req_ghi789_response.ogg",
"data": "<base64>",
"format": "ogg",
"transcript": null,
"media_type": "audio/ogg",
"file_name": "response.ogg"
}
},
"finish_reason": "stop"
}
]
}

Úspěch — text + TTS zvuk

Když je TTS zapnuté přes modalities a byl poslán zvukový vstup:

{
"id": "chatcmpl-req_abc123",
"object": "chat.completion",
"created": 1710964800,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Why don't scientists trust atoms? Because they make up everything!",
"audio": {
"id": "audio_req_abc123_response.mp3",
"data": "<base64>",
"format": "mp3",
"transcript": "Why don't scientists trust atoms? Because they make up everything!",
"media_type": "audio/mpeg",
"file_name": "response.mp3"
}
},
"finish_reason": "stop"
}
]
}

Když je přítomen zvukový výstup, transcript obsahuje stejný text jako content (zřetězená textová odpověď).

Reference polí odpovědi

Nejvyšší úroveň

PoleTypPopis
idstringUnikátní ID completion: chatcmpl-{requestId}
objectstringVždy "chat.completion"
creatednumberUnixový timestamp (v sekundách) začátku požadavku
choicesarrayPole s jedinou volbou (index 0)

Poznámka: ID požadavku a metadata o době zpracování jsou dostupná přes hlavičky odpovědi (X-Request-Id, X-Client-Request-Id) — nejsou součástí těla odpovědi.

choices[0].message

PoleTypPopis
rolestringVždy "assistant"
contentstring | nullZřetězená textová odpověď. null, pokud jen média
audioobject | undefinedZvukový výstup (první zvuková položka). Viz níže
imageobject | undefinedObrázkový výstup (první obrázková položka). Viz níže

message.audio (OpenAiAudioOutput)

PoleTypPopis
idstringIdentifikátor zvuku: audio_{requestId}_{fileName}
datastringZvuková data v base64
formatstringFormát zvuku (např. mp3, ogg, wav)
transcriptstring | undefinedTextový přepis (stejný jako content u TTS)
media_typestringMIME typ (např. audio/mpeg, audio/ogg)
file_namestringNavržený název souboru

message.image (OpenAiImageOutput — BuddyPro rozšíření)

PoleTypPopis
idstringIdentifikátor obrázku: image_{requestId}_{fileName}
datastringObrázková data v base64
media_typestringMIME typ (např. image/png)
file_namestringNavržený název souboru
captionstringPopisek/popis obrázku

Chybové odpovědi

Formát chybové odpovědi

Všechny chyby používají strukturovaný formát s objektem error:

{
"error": {
"message": "Invalid or inactive API key",
"type": "authentication_error",
"statusCode": 401,
"code": "invalid_api_key",
"param": null
}
}

Důležité: Vždy zkontroluj v těle odpovědi pole error — nespoléhej se pouze na HTTP status kód. Za určitých okolností může být HTTP status 200, i když tělo odpovědi obsahuje chybu.

Pole chyby

PoleTypPopis
error.messagestringLidsky čitelný popis chyby
error.typestringKategorie chyby
error.statusCodenumberHTTP status kód
error.codestring | nullStrojově čitelný kód chyby
error.paramstring | nullParametr požadavku, který chybu způsobil

Typy chyb

HTTP statustypePopis
400invalid_request_errorChybně tvořený požadavek, chybějící pole, neplatný obsah
401authentication_errorChybějící nebo neplatný API klíč
402payment_requiredÚčtování není nastavené, nedostatek kreditů, nebo účtování instance nedostupné (specifické pro Client API — viz níže)
403permission_errorNedostatečná oprávnění
405method_not_allowedŠpatná HTTP metoda
410goneZastaralý endpoint už není dostupný
429rate_limit_errorPřekročen limit počtu požadavků
500server_errorInterní chyba serveru

Běžné kódy chyb

KódVýznam
invalid_jsonTělo požadavku není platný JSON
missing_required_parameterChybí povinné pole
missing_api_keyV hlavičce Authorization není API klíč
invalid_api_keyAPI klíč nenalezen nebo neaktivní
invalid_valuePole má špatný typ nebo neplatnou hodnotu
invalid_text_contentText je prázdný nebo přesahuje limit 50 000 znaků
invalid_content_typeNeznámý typ části obsahu
invalid_contentObsah nemá žádné použitelné položky
invalid_media_dataNeplatná data média, selhalo stažení, nebo přesah limitu velikosti
invalid_media_typeNepodporovaný MIME typ
invalid_audio_formatNepodporovaný formát zvuku
invalid_image_countPříliš mnoho obrázků (max. 5)
invalid_parameterNeplatná hodnota parametru (např. špatný user nebo x_buddy_saveToHistory)
unsupported_parameterByl poslán parametr, který Client API klíče nepodporují (např. x_buddy_systemPrompt, x_buddy_systemPromptMode, x_buddy_rolePrompt)
insufficient_permissionsAPI klíči chybí potřebná oprávnění, nebo vlastník instance Client API zakázal (viz Client API zakázáno)
endpoint_deprecatedVerze API byla zastarána a už není dostupná
rate_limit_exceededVíce než 30 požadavků za minutu

Chyby specifické pro Client API (HTTP 402)

Client API přidává čtyři kódy chyb spojených s účtováním. Všechny používají type: "payment_required":

HTTP statuscodePopis
402billing_not_set_upÚčtování zatím nenastaveno. Nejprve spusť v Telegramu /setupApiCredits:{topUp}:{rechargeAt}.
402insufficient_creditsZůstatek kreditů je nulový nebo záporný a automatické dobití selhalo nebo je v cooldownu — zkontroluj svou platební metodu. Dobití se automaticky zopakuje při dalším požadavku.
402insufficient_credits_rechargingZůstatek kreditů byl nulový nebo záporný, ale tento požadavek právě spustil úspěšnou platbu automatického dobití — kredity dorazí během pár sekund. Odpověď nese hlavičku Retry-After: 5; stačí za chvíli zopakovat.
402owner_billing_unavailableInstance, kterou používáš, momentálně nemůže účtovat za využití (její vlastní účetní zůstatek je vyčerpán). To je na straně vlastníka instance, ne na tvé — zkus to později.

Příklad — účtování není nastaveno:

{
"error": {
"message": "Billing not set up. Please set up billing to use the Buddy API. Call /setupApiCredits:{topUpAmount}:{rechargeAt} first.",
"type": "payment_required",
"statusCode": 402,
"code": "billing_not_set_up",
"param": null
}
}

Příklad — nedostatek kreditů:

{
"error": {
"message": "Insufficient credits. Auto-recharge failed or is in cooldown — please check your payment method and try again later.",
"type": "payment_required",
"statusCode": 402,
"code": "insufficient_credits",
"param": null
}
}

Příklad — nedostatek kreditů, dobití probíhá (odpověď obsahuje Retry-After: 5):

{
"error": {
"message": "Insufficient credits. An automatic recharge was just initiated and payment succeeded — credits will be available shortly. Please retry.",
"type": "payment_required",
"statusCode": 402,
"code": "insufficient_credits_recharging",
"param": null
}
}

Příklad — účtování instance nedostupné:

{
"error": {
"message": "Service is temporarily unavailable for billing reasons. Please try again later.",
"type": "payment_required",
"statusCode": 402,
"code": "owner_billing_unavailable",
"param": null
}
}

Client API zakázáno (HTTP 403)

Client API je opt-in na straně vlastníka a vlastník instance ho může kdykoli zakázat. Dokud je zakázané, každý požadavek — včetně dříve vydaných, platných klíčů — je odmítnut chybou 403 insufficient_permissions. Klíče se neruší; obnoví funkčnost, jakmile vlastník Client API znovu povolí.

{
"error": {
"message": "The Client API is not enabled for this instance. The instance owner must enable it first.",
"type": "permission_error",
"statusCode": 403,
"code": "insufficient_permissions",
"param": null
}
}

Limity počtu požadavků

  • 30 požadavků za minutu na jeden API klíč

Rychlý start

Krok 1 — Vygeneruj klíč

/generateClientApiKey:my-app

Krok 2 — Nastav účtování

/setupApiCredits:100:20

Dokonči Stripe checkout. Tvůj účet má nyní $100 v kreditech a bude se automaticky dobíjet, když zůstatek klesne pod $20.

Krok 3 — Odešli svůj první požadavek

curl -X POST https://api.buddypro.ai/v1/chat/completions \
-H "Authorization: Bearer bapi_B2C_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{ "role": "user", "content": "Hello! What do you know about me?" }
]
}'

curl — bezstavový režim

curl -X POST https://api.buddypro.ai/v1/chat/completions \
-H "Authorization: Bearer bapi_B2C_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"x_buddy_saveToHistory": false,
"messages": [
{ "role": "user", "content": "What is the best way to start a profitable business?" }
]
}'

curl — izolovaný profil

curl -X POST https://api.buddypro.ai/v1/chat/completions \
-H "Authorization: Bearer bapi_B2C_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"user": "work-assistant",
"messages": [
{ "role": "user", "content": "Help me write a professional email." }
]
}'

curl — multimodální (obrázek + text)

curl -X POST https://api.buddypro.ai/v1/chat/completions \
-H "Authorization: Bearer bapi_B2C_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "What is in this image?" },
{ "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } }
]
}
]
}'

curl — zvukový vstup s TTS výstupem

curl -X POST https://api.buddypro.ai/v1/chat/completions \
-H "Authorization: Bearer bapi_B2C_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"modalities": ["text", "audio"],
"audio": { "format": "mp3" },
"messages": [
{
"role": "user",
"content": [
{ "type": "input_audio", "input_audio": { "data": "<base64>", "format": "mp3" } }
]
}
]
}'

Omezení

OmezeníDetail
Žádný streamingStreaming zatím není podporován
Jediná uživatelská zprávaPouze 1 user zpráva v poli messages (BuddyPro spravuje historii)
Bez výběru modeluPole model je přijímáno, ale ignorováno — BuddyPro má vlastní implementaci modelu
Bez statistik využitíObjekt usage není součástí odpovědí
Rozhoduje první médiumNa jednu volbu se propíše jen první zvuk a první obrázek z odpovědi
Hlas nelze říditaudio.voice je přijímáno, ale ignorováno — hlas nastavuje vlastník bota

Limity médií

  • Max. 5 obrázků na požadavek
  • Max. 40 MB na jedno stažení média (média stahovaná přes URL)
  • Max. 50 000 znaků na jednu textovou část obsahu

Důležité poznámky

  • Neposílej historii konverzace — pošli jen aktuální zprávu uživatele. BuddyPro ukládá a spravuje kontext konverzace interně.
  • Účtování kreditů je vyžadováno před prvním požadavkem. Nastav ho jednou pomocí /setupApiCredits:{topUp}:{rechargeAt}. Vyžaduje aktivní předplatné instance a instance musí přijímat API platby.
  • Účtování zajišťuje tvá instance. Checkouty kreditů a cenu za požadavek stanovuje ta BuddyPro instance, kterou používáš (její vlastník), ne přímo BuddyPro.
  • Kredity se automaticky dobíjejí, když zůstatek klesne pod nastavený práh, pomocí tvé uložené Stripe platební metody.
  • Tvá data jsou tvá. Vlastník instance nemůže přes rozhraní bota číst tvou historii konverzací ani přepnout na tvůj profil či tvé izolované profily.
  • Ochrana proti SSRF: URL směřující na privátní/interní síťové adresy jsou blokovány.