Sohbet
Görsel, PDF, ses ve video girdisi
Destekleyen modeller için mesaja görsel, PDF, ses ve video ekleyin. Dosyanın kendisini (base64) veya bir bağlantı gönderin: bağlantıları biz alırız; bu nedenle 20 MB boyutuna kadar bir dosyaya yönlendiren, herkese açık herhangi bir https bağlantısı çalışır.
Bir bakışta
Her bölüm, herkese açık bir https bağlantısı veya data:application/pdf;base64,JVBERi0... gibi base64 veri URL'si biçiminde dosyanın kendisini kabul eder. Modelin okuyabildiği türleri dilediğiniz gibi bir arada kullanarak tek mesajda birden fazla dosya gönderebilirsiniz.
Hangi model neyi okur
Tüm sohbet modelleri metin okur. Bu tablo günceldir: her modelin bugün neleri okuyabildiğini gösterir. Bir modele okuyamadığı bir içerik verildiğinde istek hemen unsupported_content ile reddedilir; böylece model görmediği bir dosya hakkında asla yanıt vermez.
Görseller
Bir bağlantı veya veri URL'si içeren bir image_url bölümü ekleyin. PNG, JPEG, WebP ve GIF. Görsel okuyabilen tüm modeller, tek mesajda birden fazla görseli destekler.
import osfrom openai import OpenAIclient = OpenAI( base_url="https://api.zurelay.com/v1", api_key=os.environ["ZURELAY_API_KEY"],)response = client.chat.completions.create( model="gemini-3.7-flash", messages=[ { "role": "user", "content": [ { "type": "text", "text": "What's in this picture? One sentence." }, { "type": "image_url", "image_url": { "url": "https://zurelay.com/examples/gpt-image-2.5-flare/watch-800.webp" } } ] } ],)print(response.choices[0].message.content)Diskten bir dosya göndermek için dosyayı base64 ile kodlayıp bir veri URL'sine dönüştürün:
import base64, osfrom openai import OpenAIclient = OpenAI(base_url="https://api.zurelay.com/v1", api_key=os.environ["ZURELAY_API_KEY"])with open("receipt.jpg", "rb") as f: data_url = "data:image/jpeg;base64," + base64.b64encode(f.read()).decode()response = client.chat.completions.create( model="claude-sonnet-5-5", messages=[{ "role": "user", "content": [ {"type": "text", "text": "What's the total on this receipt?"}, {"type": "image_url", "image_url": {"url": data_url}}, ], }],)print(response.choices[0].message.content)detail (low, high, auto), bunu kullanan modellere aynen iletilir.
PDF'ler
file_data içinde veri URL'si biçimindeki PDF'yi ve dosya adını içeren bir file bölümü ekleyin. Modeller metni ve destekledikleri durumlarda sayfaları görsel olarak (grafikler, taramalar, tablolar) okur. file_data içinde herkese açık bir bağlantı da kullanabilirsiniz.
import base64, osfrom openai import OpenAIclient = OpenAI(base_url="https://api.zurelay.com/v1", api_key=os.environ["ZURELAY_API_KEY"])with open("contract.pdf", "rb") as f: pdf = "data:application/pdf;base64," + base64.b64encode(f.read()).decode()response = client.chat.completions.create( model="gemini-3.7-flash", messages=[{ "role": "user", "content": [ {"type": "text", "text": "Who are the parties, and how can the contract be ended?"}, {"type": "file", "file": {"filename": "contract.pdf", "file_data": pdf}}, ], }],)print(response.choices[0].message.content)Uzun PDF'ler sayfa başına girdi tokenı tüketir (aşağıdaki ücretlendirme bölümüne bakın), bu yüzden yalnızca ihtiyacınız olan sayfaları gönderin. Birden fazla belge hakkında aynı anda soru sormak için her belgeye ayrı bir file bölümü ekleyin ve belgeleri birbirinden ayıran adlar kullanın.
Word, Excel, metin ve kod
Modeller PDF'leri okur; Word, Excel veya PowerPoint dosyalarını değil. Metin, CSV, JSON, Markdown veya kodu doğrudan mesaja metin olarak ekleyin: normal girdi tokenları olarak ücretlendirilir ve modelin en iyi okuduğu biçimdir. Sayfa düzeni önemliyse (tablolar, grafikler, taramalar) dosyayı PDF olarak dışa aktarıp gönderin. text/plain gibi başka türde bir veri URL'si, nedenini belirten bir hatayla reddedilir.
import osfrom pathlib import Pathfrom openai import OpenAIclient = OpenAI(base_url="https://api.zurelay.com/v1", api_key=os.environ["ZURELAY_API_KEY"])notes = Path("meeting-notes.md").read_text()sales = Path("sales.csv").read_text()response = client.chat.completions.create( model="deepseek-v4.1-flash", messages=[{ "role": "user", "content": f"Summarize the notes, then total the sales by region.\n\n" f"<notes>\n{notes}\n</notes>\n\n<sales>\n{sales}\n</sales>", }],)print(response.choices[0].message.content)Ses
Ses işleyebilen modeller için (tabloya bakın): base64 ses verisini ve wav veya mp3 biçimini içeren bir input_audio bölümü kullanın. input_audio ses verisinin kendisini alır; bağlantı göndermek için bağlantıyı file_data içine koyarak bir file bölümü kullanın. Tarayıcıda yapılan kayıtlar genellikle WebM biçimindedir ve video olarak okunur: yalnızca ses işleyebilen modeller için bunları MP3 veya WAV biçimine dönüştürün.
import base64, osfrom openai import OpenAIclient = OpenAI(base_url="https://api.zurelay.com/v1", api_key=os.environ["ZURELAY_API_KEY"])with open("call.mp3", "rb") as f: audio = base64.b64encode(f.read()).decode()response = client.chat.completions.create( model="gemini-3.7-flash", messages=[{ "role": "user", "content": [ {"type": "text", "text": "Transcribe this call, then list the action items."}, {"type": "input_audio", "input_audio": {"data": audio, "format": "mp3"}}, ], }],)print(response.choices[0].message.content)Video
Video izleyebilen modeller için: bağlantı veya veri URL'si içeren bir video_url bölümü kullanın (bir file bölümü de olur). MP4, MOV ve WebM. Ses destekleyen modeller videonun sesini de işler; dolayısıyla ne söylendiğini sorabilirsiniz.
import osfrom openai import OpenAIclient = OpenAI( base_url="https://api.zurelay.com/v1", api_key=os.environ["ZURELAY_API_KEY"],)response = client.chat.completions.create( model="gemini-3.7-flash", messages=[ { "role": "user", "content": [ { "type": "text", "text": "Describe what happens, and transcribe anything that's said." }, { "type": "video_url", "video_url": { "url": "https://example.com/clip.mp4" } } ] } ],)print(response.choices[0].message.content)Diskteki bir klip de aynı şekilde, veri URL'si olarak gönderilir:
with open("clip.mp4", "rb") as f: video = "data:video/mp4;base64," + base64.b64encode(f.read()).decode()content = [ {"type": "text", "text": "What happens in this clip?"}, {"type": "video_url", "video_url": {"url": video}},]Tek biçimde gönderin, doğru biçimde iletelim
video_url, image_url veya file bölümü olabilir). Bunlardan herhangi birini gönderin: her modele medyayı okuyabildiği biçimde iletiriz.Tek mesajda birden fazla dosya
Her dosya için, okunmasını istediğiniz sırayla bir bölüm ekleyin ve metninizde dosyalara sırasıyla veya adıyla atıfta bulunun (“ikinci görsel”, “contract.pdf”). Model her bir türü okuyabildiği sürece görselleri, PDF'leri, sesleri ve videoları bir arada kullanabilirsiniz. Dosyaları etiketlemek için aralarına metin bölümleri ekleyebilirsiniz.
Bağlantılar
- Bağlantılar, herkese açık
httpsURL'leri olmalıdır. En fazla üç yönlendirmeyi takip eder ve en fazla 20 saniye bekleriz. - İndirilemeyen bir bağlantı, herhangi bir model çağrılmadan önce
invalid_urlve döndürdüğü durum koduyla hemen reddedilir. - İmzalı bağlantılar (S3, Cloud Storage, kendi görsel bağlantılarımız) geçerli oldukları sürece çalışır.
Anthropic biçimi
/v1/messages üzerinde Claude modelleri, base64 veya url kaynağıyla Anthropic'in image ve document bloklarını kabul eder. Bazı Claude modelleri PDF'leri yalnızca /v1/chat/completions üzerinden okur; /v1/messages adresine bir PDF gönderirseniz hata mesajı, bunun yerine nereye göndermeniz gerektiğini belirtir.
[ { "type": "image", "source": { "type": "base64", "media_type": "image/png", "data": "iVBORw0KGgo..." } }, { "type": "document", "source": { "type": "url", "url": "https://example.com/report.pdf" } }, { "type": "document", "source": { "type": "base64", "media_type": "application/pdf", "data": "JVBERi0..." } }, { "type": "text", "text": "Compare the chart with the report's conclusion." }]Sınırlar
Daha büyük dosyalar için bağlantı gönderin: istek gövdesi boyutuna dahil edilmez. Bir sağlayıcının kendi Files API'sine (file_id) yüklenen dosyalar kullanılamaz; bunun yerine dosyayı veya bağlantısını gönderin.
Hatalar
İlk ikisi hatanın code alanıdır; diğerleri ise type alanıdır ve neyi değiştirmeniz gerektiğini belirten bir mesaj içerir. Hepsi herhangi bir model çağrılmadan önce döner, bu yüzden ücretlendirilmez. Diğer hatalar için Hatalar bölümüne bakın.
Medya nasıl ücretlendirilir
Modeller medyayı girdi tokenlarına dönüştürür; bunlar modelin girdi fiyatıyla ücretlendirilir. Her sağlayıcının hesaplama yöntemi farklıdır; ölçümlerimizde elde ettiğimiz tipik değerler şöyle:
İstek günlüğünüz, her istekte tam olarak neyin hesaba katıldığını gösterir. Tasarruf etmenin en kolay yolu görselleri ihtiyacınız olan boyuta küçültmektir: çoğu model 1024 px boyutundaki bir görseli 4000 px boyutundaki kadar iyi okur.
Sorunuz mu var, yoksa bir şey mi eksik? Destek ekibimize sorun, genellikle bir dakika içinde e-postayla yanıtlayalım.