Bilgi tabanı Geliştirici
Görüntüler, Audio ve Embeddings
Uygulamanın jeneratörleri ve arama için inşaat blokları: resimler, video, konuşma, transkripsiyon ve eklentiler, her biri bilançonuzdan kullanım başına faturalandırılır.
Bu sayfa kolaylık sağlamak amacıyla makine tarafından çevrilmiştir. İngilizce orijinali geçerli olan versiyondur.
Görüntüleri oluşturmak
Dört dört resim yapar ve tamamlandıklarında geri verir. ?image App içinde
POST https://nymbot.ai/api/v1/images/generations - bir API anahtarı gerektirir, veya Talep üzerine Lightning ödeme.
ids geliyor GET /api/v1/models?type=imageStandart bir jeneratör,
@cf/black-forest-labs/flux-1-schnell, maliyeti bir düz 5 standart krediler (50 sats) bir resim. Her diğer jeneratör kendi fiyatında Pro kredileri harcıyor, normal ücret ve marj, gibi Uygulama. n Fotoğraf maliyeti
n Bir jeneratör tarafından alınmayan bir alan, reddedilen yerine düşer; standart jeneratör sadece prompt kullanır.
| alanı | türü | İhtiyaç | Açıklama |
|---|---|---|---|
model | String için | Evet | Örneğin, bir jeneratör ID, nano-banana. |
prompt | String için | Evet | Sadece ilk 2000 karakter kullanılır. |
n | İnternete | Hayır | 1 - 4 Default 1. Aynı zamanda kabul edilir num_images. |
size | String için | Hayır | Örneğin, böyle bir oran "16:9"ya da böyle bir açılım gibi "1792x1024", en yakın olanı ise 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 ve 4:5. "auto" Bunu jeneratora bırakın. |
aspect_ratio | String için | Hayır | Aynı şekilde sizeİkisi de gönderilirse kazanır. |
quality | String için | Hayır | Örneğin özel jeneratörler, "low", "medium" veya "high". |
negative_prompt | String için | Hayır | Neyi terk etmek lazım. |
output_format | String için | Hayır | "png", "jpeg" veya "webp". |
response_format | String için | Hayır | "url" (Devamını Oku) veya "b64_json". |
image_url | String için | Hayır | Başlamak için bir resim: A https:// Kullanıcı adı veya şifre olmadan en fazla 4.096 karakter içeren bir bağlantı veya data:image/…;base64 URL (PNG, JPEG, WebP veya GIF; SVG değil). editİhtiyaç olanlar için; requires_image_url. |
resolution kullanılmaz: her jeneratör kendi boyutunu yapar. url, her resim kamuya açık bir Blossom sunucusuna yüklenir ve bağlantıyı alırsınız (birkaç jeneratör sadece kendi bağlantısını geri verir, bu bağlantıyı iletir). Ateş ne görebilirile
b64_json Resim cevap olarak geri gelir ve hiçbir zaman yüklenmez. data: URL içeriği image_url Aynı şekilde kontrol ediliyor
Edit için İlk önce Blossom'a yüklenir, böylece jeneratör onu alabilir; isteğin faturalandırılmadığı takdirde tekrar silinir.
Eğer bir kısmı n görüntüler başarısız olur, işe yarayanları alırsınız, sadece onlar için ücretlendirilir (destek sağlayıcısı başarısız olmasına rağmen faturalandı), ve nymbot.failed kaç tane eksik olduğunu gösterir. eğer hepsi başarısız olursa, isteği geri 502.
Cevap
{
"created": 1790726400,
"model": "nano-banana",
"cost": 0.2126,
"data": [
{
"url": "https://blossom.example/5c0e4b7d3a91f2e8...c4.png",
"content_type": "image/png"
}
],
"nymbot": { "balance": "pro", "charged_credits": 1.817, "charged_sats": 181.7, "balance_credits": 410.608, "balance_sats": 41060.8 }
}
| statüsü | Ne zaman |
|---|---|
400 | Hızlı değil; n 1 ile 4 arasında (invalid_valueKötü bir boyut (invalid_size) veya resim (invalid_image, invalid_image_url); var olan bir model ama bir görüntü jeneratörü değil (invalid_model); düzenleme yapamayan bir jeneratör için bir resim (edit_unsupportedİhtiyacı olan kimse için bir resim yok (image_required). |
402 | İhtiyaç duyulan her fotoğrafı karşılayamaz. |
404 | Hiçbir model bu isimle (model_not_found). |
502 | (Generatörün işe yaramadığı)upstream_errorHiçbir şey ücretli değildir, ancak sağlayıcı deneme için faturalandırılmıştır; o zaman hata charged_sats. |
503 | Fotoğraflar şu anda barındırılamaz (media_hosting_unavailable). b64_json Hala çalışıyor |
cURL
curl https://nymbot.ai/api/v1/images/generations \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana",
"prompt": "A lighthouse at dusk, oil painting",
"size": "16:9"
}'
Python
import os
import requests
res = requests.post(
"https://nymbot.ai/api/v1/images/generations",
headers={"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]},
json={"model": "nano-banana", "prompt": "A lighthouse at dusk, oil painting", "size": "16:9"},
)
res.raise_for_status()
print(res.json()["data"][0]["url"])
JavaScript
const res = await fetch("https://nymbot.ai/api/v1/images/generations", {
method: "POST",
headers: {
"Authorization": "Bearer " + process.env.NYMBOT_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ model: "nano-banana", prompt: "A lighthouse at dusk, oil painting", size: "16:9" }),
});
const body = await res.json();
console.log(body.data[0].url);
Görüntüleri Edit
Bu, OpenAI'nin düzenleme son noktasıdır, bu nedenle OpenAI SDK'ları images.edit çalışıyor. sadece Pro jeneratörler ile edit Model listesinde bunu kabul edin.
POST https://nymbot.ai/api/v1/images/edits - bir API anahtarı gerektirir, veya Talep üzerine Lightning ödemeVücut ise multipart/form-data32 MB’a kadar
| alanı | türü | İhtiyaç | Açıklama |
|---|---|---|---|
image | Dosya | Evet | Düzenlenecek resim: PNG, JPEG, WebP veya GIF, 20 MB'a kadar. image[]Birincisi de kullanılıyor. |
prompt | String için | Evet | Neyi değiştirmek lazım. |
model | String için | Evet | Bir jeneratör ile edit. |
n | İnternete | Hayır | 1 ile 4 |
sizeaspect_ratioqualitynegative_promptoutput_format | String için | Hayır | Bir nesil için. |
response_format | String için | Hayır | "b64_json" (Devamını buradan okuyabilirsiniz) veya "url". |
Gönderdiğiniz resim, iyi biçimlendirilmiş bir PNG, JPEG, WebP veya GIF olup olmadığını kontrol eder, gerçek türü olarak gönderilir ve toplu bir Blossom sunucusuna yerleştirilir, çünkü jeneratörler girişlerini bağlantı yoluyla alırlar. düzenleme başarısız olursa ve hiçbir şey yüklenmezse, barındırılan kopya tekrar silinir. Yanıt, jeneratörün fiyatıdır, bazı jeneratörler için giriş resim ücreti dahildir.
Cevap
{
"created": 1790726460,
"model": "nano-banana",
"cost": 0.2126,
"data": [{ "b64_json": "iVBORw0KGgoAAAANSUhEUgAA..." }],
"nymbot": { "balance": "pro", "charged_credits": 1.817, "charged_sats": 181.7, "balance_credits": 408.791, "balance_sats": 40879.1 }
}
| statüsü | Ne zaman |
|---|---|
400 | Hiçbir resim veya prompt, resim olmayan bir dosya (invalid_image) veya edit edilemeyen bir jeneratör (edit_unsupported). |
413 | Resim 20 MB’den fazla (file_too_large) veya 32 MB'den fazla tüm isteği. |
503 | Fotoğraf şu anda barındırılamaz (media_hosting_unavailable). |
cURL
curl https://nymbot.ai/api/v1/images/edits \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-F model=nano-banana \
-F [email protected] \
-F prompt="Make it a snowy evening"
Python
import base64, os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
with open("photo.png", "rb") as f:
result = client.images.edit(model="nano-banana", image=f, prompt="Make it a snowy evening")
with open("edited.png", "wb") as out:
out.write(base64.b64decode(result.data[0].b64_json))
JavaScript
import fs from "node:fs";
import { writeFile } from "node:fs/promises";
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const result = await client.images.edit({
model: "nano-banana",
image: fs.createReadStream("photo.png"),
prompt: "Make it a snowy evening",
});
await writeFile("edited.png", Buffer.from(result.data[0].b64_json, "base64"));
Videoları
Bir video dakika alır, bu yüzden arka planda çalışır. onu gönderir, hemen bir id alır ve bitene kadar id hakkında sorar. Her video jeneratörü Pro dengesini harcıyor.
POST https://nymbot.ai/api/v1/videos - bir API anahtarı gerektirir, veya Talep üzerine Lightning ödemeGeri Dönüş 202.
| alanı | türü | İhtiyaç | Açıklama |
|---|---|---|---|
model | String için | Evet | Bir video jeneratörü id GET /api/v1/models?type=videoTıpkı veo. |
prompt | String için | Evet | Ne olmalı ki. |
duration | Numara veya String | Hayır | Saniyelerde uzunluk, 0'dan fazla ve 60'a kadar. sadece uzunluk seçmenize izin veren jeneratörler tarafından kullanılır; diğerleri normal uzunluğunu yapar, bu ne seconds Cevaplar ve fiyatlar aşağıda. |
aspect_ratio | String için | Hayır | gibi "16:9" veya "9:16"Tıpkı bir büyüklükte "1280x720" en yakın ilişki haline gelmiştir. |
resolutionquality | String için | Hayır | Bir de jeneratörün resolutions Örneğin, model listesinde, "720p" veya "1080p"Fiyatı belirler.Diğer her şey reddedilir unsupported_resolution. |
image_url | String için | Hayır | Başlamak için bir resim: A https:// Link veya A data:image/… URL, ilk olarak halka açık bir Blossom barındırıcısına yüklenir. requires_image_url. |
Fiyat, gönderdiğinizde, jeneratörden, çözünürlükten ve uzunluğundan sabittir, bu nedenle tedarikçi işi kabul ettikten sonra Pro bilançosundan ücretlendirilir ve gösterilir.
cost, estimated_cost Ve nymbotTedarikçi işten vazgeçerse, hiçbir şey ücretlendirilmez. Daha sonra renderin başarısız olması veya bitmiş klibi saklanamıyorsa ve tedarikçi bunun için fatura vermediği takdirde, ücret otomatik olarak bir kez iade edilir. Bir saat sonra hala devam eden bir render iptal edilir ve ücretini tutar, çünkü tedarikçi kabul edildikten sonra bir render iade eder. Bir iade kredileri iade eder ancak anahtarın harcamaları sayısını düşürmez.
Yanıtla (202)
{
"id": "vid_3e9a51c07b2f4d86e0a1c4f2",
"object": "video",
"model": "veo",
"status": "in_progress",
"created": 1790726400,
"seconds": 8,
"resolution": "1080p",
"estimated_cost": 3.18,
"expires_at": 1790812800,
"cost": 3.18,
"nymbot": { "balance": "pro", "charged_credits": 31.8, "charged_sats": 3180, "balance_credits": 378.808, "balance_sats": 37880.8 }
}
status Başlangıç As in_progressya da completed Bu videoda zaten içeride data Generatör hemen geri getirdi.
Bir videoda kontrol etmek
GET https://nymbot.ai/api/v1/videos/{id} Bir anahtar, anahtarın kapısına ulaşmış olan anahtarı kontrol edebilir. — needs a key belonging to the nym that submitted it.
cevap veriyor 202 Videonun hazırlanması ve 200 Tamamlandıktan sonra veya başarısız oldu. Her 5 ila 10 saniyede bir sor. Her kontrol sağlayıcısına bir kez sorar ve hemen cevap verir; videoyu beklemez. Bir iş gönderildikten sonra 24 saat boyunca tutulur.
GET /api/v1/videos Anahtarın son 50 işini listeleyin
{"object": "list", "data": […]}.
Çözümler (200)
{
"id": "vid_3e9a51c07b2f4d86e0a1c4f2",
"object": "video",
"model": "veo",
"status": "completed",
"created": 1790726400,
"seconds": 8,
"resolution": "1080p",
"estimated_cost": 3.18,
"expires_at": 1790812800,
"completed_at": 1790726590,
"data": { "url": "https://blossom.example/9b41d0c2e7a3f658...1e.mp4", "content_type": "video/mp4" },
"cost": 3.18,
"nymbot": { "balance": "pro", "charged_credits": 31.8, "charged_sats": 3180 }
}
status bence in_progress, completed veya failedBaşarısız Bir İş Yapar error ({"code": "generation_failed", "message": …}Eğer geri ödenmişse, cost 0 ve nymbot ekleme
refunded_credits Ve refunded_satsTamamlanan video, oluşturulan resimler gibi kamuya açık bir Blossom sunucusudur.
| statüsü | Ne zaman |
|---|---|
400 | 0 0 0 0 0 0 0 0 0 0 0 0 (invalid_value); jeneratörün sunmadığı bir çözünürlük (unsupported_resolution); ihtiyacı olan bir jeneratör için bir resim yok (image_required); bir video jeneratörü olmayan bir model (invalid_model). |
402 | Pro dengesi videoyu kapamaz. |
404 | Böyle bir sistem yok (model_not_foundbu ilanı beğen Tem 24 (or no job by that id for your nym, or it is more than 24 hours old) (video_not_found). |
429 | 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0video_jobs_limitOnları kontrol edin ve bir bittikten sonra daha fazla gönderin. |
502 | Jeneratör işi reddetti.Satış sağlayıcısı bunun için fatura etmediği sürece hiçbir şey ücretli değildir. |
503 | Videolar şu anda teslim edilemez veya saklanamaz (media_hosting_unavailable, service_unavailable). |
cURL
curl https://nymbot.ai/api/v1/videos \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "veo", "prompt": "Waves rolling onto a beach at sunrise", "duration": 8, "aspect_ratio": "16:9"}'
curl https://nymbot.ai/api/v1/videos/vid_3e9a51c07b2f4d86 \
-H "Authorization: Bearer $NYMBOT_API_KEY"
Python
import os, time
import requests
headers = {"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]}
job = requests.post(
"https://nymbot.ai/api/v1/videos",
headers=headers,
json={"model": "veo", "prompt": "Waves rolling onto a beach at sunrise", "duration": 8, "aspect_ratio": "16:9"},
).json()
while True:
time.sleep(8)
status = requests.get("https://nymbot.ai/api/v1/videos/" + job["id"], headers=headers).json()
if status["status"] in ("completed", "failed"):
break
print(status["data"]["url"] if status["status"] == "completed" else status["error"])
JavaScript
const headers = {
"Authorization": "Bearer " + process.env.NYMBOT_API_KEY,
"Content-Type": "application/json",
};
const job = await (await fetch("https://nymbot.ai/api/v1/videos", {
method: "POST",
headers,
body: JSON.stringify({ model: "veo", prompt: "Waves rolling onto a beach at sunrise", duration: 8, aspect_ratio: "16:9" }),
})).json();
let status;
do {
await new Promise((r) => setTimeout(r, 8000));
status = await (await fetch("https://nymbot.ai/api/v1/videos/" + job.id, { headers })).json();
} while (status.status !== "completed" && status.status !== "failed");
console.log(status.status === "completed" ? status.data.url : status.error);
Konuşma için yazı
Yazıyı yüksek sesle okuyor ve bir bağlantı değil, ses dosyasını kendisi geri verir. audio.speech.create OpenAI SDK’lar çalışıyor.
POST https://nymbot.ai/api/v1/audio/speech - bir API anahtarı gerektirir, veya Talep üzerine Lightning ödeme.
| alanı | türü | İhtiyaç | Açıklama |
|---|---|---|---|
model | String için | Hayır | Bir konuşma modelinden Audio Modelleri ListesiStandart ses: Standart ses, @cf/myshell-ai/melotts. aura-2 Deepgram Aura 2 Hakkında |
input | String için | Evet | Okunacak metin: Standart ses için 800 karakter, Aura 2 için 2000 karakter. |
voice | String için | Hayır | Bir Ses Kimliği Sesler listesi: Aura konuşmacı gibi luna (veya aura-2-luna-enMeloTTS dilini kullanarak (en, es, fr, zhOpenAI ses isimleri gibi alloy kabul edilir ve modelin varsayılan sesini verir. |
language | String için | Hayır | gibi bir dil kodu esBir ses yoksa, o dili seçer. başka bir dil konuşan bir ses geri döner. 422 voice_language_mismatchve modelin konuşmadığı bir dil 422 unsupported_language. |
response_format | String için | Hayır | Standart Ses Geri Dönüyor mp3 Aura 2 Geri Dönüyor mp3 (Düzenleme için tıklayın) opus, aac, flac, wav veya pcm. |
speed | Numarası | Hayır | Kabul edilmiş ve göz ardı edilmiştir. |
Standart ses, uygulamada olduğu gibi bir talep için 3 standart kredi (30 sats) tutarına mal olur. Aura 2 Pro, gönderdiğiniz karakterlere göre fiyatlandırılır. Cevap vücudu, eşleşen bir
Content-TypeFiyatı ise içinde X-Nymbot-Cost-Sats Konuşma modeli başarısız olursa, hiçbir şey yüklenmez.
Cevap
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| statüsü | Ne zaman |
|---|---|
400 | Çevresel Çevresel Çevresel Çevre (input_too_long); modelin üretemeyeceği bir format (unsupported_response_formatBilinmeyen bir ses (invalid_voice); bir konuşma modeli olmayan bir model (invalid_model). |
422 | Ses verilen dili konuşmaz, ya da modelin onun için bir sesi yoktur. |
502 | Konuşma modeli başarısız oldu.Hiçbir şey yüklenmedi. |
cURL
curl https://nymbot.ai/api/v1/audio/speech \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "aura-2", "voice": "luna", "input": "Your invoice has been paid."}' \
--output speech.mp3
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
audio = client.audio.speech.create(
model="aura-2",
voice="luna",
input="Your invoice has been paid.",
)
audio.write_to_file("speech.mp3")
JavaScript
import { writeFile } from "node:fs/promises";
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const audio = await client.audio.speech.create({
model: "aura-2",
voice: "luna",
input: "Your invoice has been paid.",
});
await writeFile("speech.mp3", Buffer.from(await audio.arrayBuffer()));
Ses Modelleri ve Sesler
Bir konuşma modeli ve ses seçmek için iki kamu listesi, ya da bir transkripsiyon modeli. 41 Aura 2 İngilizce konuşanlar ve dört MeloTTS diller vardır.
GET https://nymbot.ai/api/v1/audio/models Hiçbir anahtar gerekmez.
GET https://nymbot.ai/api/v1/audio/voices?language=en Hiçbir anahtar gerekmez.
| alanı | türü | İhtiyaç | Açıklama |
|---|---|---|---|
language | String Hakkında (Query) | Hayır | Bu dil için sadece sesler. |
model | String Hakkında (Query) | Hayır | Bu model için sadece sesler. |
Cevaplar ( Sesler )
{
"object": "list",
"data": [
{ "id": "luna", "name": "Luna", "provider": "deepgram", "model_id": "aura-2", "models": ["aura-2"], "language": "en", "description": "Aura 2 English voice", "gender": "female", "preview_url": null },
{ "id": "en", "name": "MeloTTS English", "provider": "myshell", "model_id": "@cf/myshell-ai/melotts", "models": ["@cf/myshell-ai/melotts", "melotts"], "language": "en", "description": "English (MeloTTS)", "gender": null, "preview_url": null }
]
}
Model Listesi Cevapları {"object": "list", "data": {"tts": […], "stt": […]}}Her konuşma modeli dengesini, fiyatını, max_input_chars,
response_formats, languages Ve default_voiceÇevirilerde ise şifreleme şekli, max_file_bytes, max_secondsFiyatlar ve dakikalık fiyatlar.
cURL
curl https://nymbot.ai/api/v1/audio/models
curl "https://nymbot.ai/api/v1/audio/voices?language=en"
Python
import requests
print(requests.get("https://nymbot.ai/api/v1/audio/models").json())
for voice in requests.get("https://nymbot.ai/api/v1/audio/voices", params={"language": "en"}).json()["data"]:
print(voice["id"], voice["model_id"])
JavaScript
console.log(await (await fetch("https://nymbot.ai/api/v1/audio/models")).json());
const voices = await (await fetch("https://nymbot.ai/api/v1/audio/voices?language=en")).json();
for (const v of voices.data) console.log(v.id, v.model_id);
Konuşma Teksti
Bir kaydı Whisper ile metne dönüştürür. bu OpenAI'nin transkripsiyon son noktasıdır, bu yüzden
audio.transcriptions.create iş yapıyor
POST https://nymbot.ai/api/v1/audio/transcriptions - bir API anahtarı gerektirir, veya Talep üzerine Lightning ödemeVücut ise multipart/form-data.
| alanı | türü | İhtiyaç | Açıklama |
|---|---|---|---|
file | Dosya | Evet | Kayıt, 256 byte'den 25 MB'a kadar ve 30 dakika'a kadar: WAV, WebM, MP4 veya M4A, Ogg veya Opus, MP3 ve diğer formatlar Whisper okur. |
model | String için | Hayır | eksiklik whisperBu da Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo Ve @cf/openai/whisper-large-v3-turbo Aynı anlama geliyor. |
language | String için | Hayır | Konuşulan dil, yani enDışarı çıktığında tespit edilmiştir. |
prompt | String için | Hayır | İsimler gibi beklenebilecek kelimeler veya yazımlar. Sadece ilk 1000 karakter kullanılır. |
response_format | String için | Hayır | json (Düzenleme için tıklayın) text, srt, vtt veya verbose_json. |
WAV, WebM, MP4 ve Ogg dosyaları için uzunluk, herhangi bir şey çalışmadan önce dosyadan okunur, bu nedenle 30 dakikadan fazla bir kaydetme önde reddedilir (3 saniye yardımıyla). Bir WAV dosyasının uzunluğu örnek oranı, kanalları ve örnek boyutuna göre gelir. MP3 gibi diğer formatların uzunluğu önde okunamaz, bu yüzden boyutla sınırlıdır: en düşük bit oranı Nymbot 8 kbps, 30 dakika 1.8 MB ve böyle bir biçimde daha büyük bir dosya ile reddedilir. 413
audio_too_long herhangi bir şey çalışmadan önce. daha uzun kayıtları WAV, WebM, MP4 veya Ogg olarak gönderin. Eğer Whisper daha sonra 30 dakikadan fazla rapor verirse, isteği reddedilir
413 audio_too_long, ve Şişman çalıştıktan sonra, 30 dakika şarj edilir.
Sesin uzunluğuna, saniyeye kadar yuvarlandıktan sonra ödersiniz: dosyadan okunan uzunluğun en uzunluğu, uzunluk Whisper raporları ve en az dosya boyutu izin verir, normal ücret ve marj ile Whisper'ın dakikalık fiyatına ve en az 0.05 kredi talep ile. 402 Uygulamada, bir ses mesajının transkripsiyonu ücretsiz olabilir; API'de her zaman yüklenir. Şişman başarısız olursa hiçbir şey yüklenmez.
Cevap
{
"text": "Your invoice has been paid.",
"usage": { "type": "duration", "seconds": 3 },
"nymbot": { "balance": "standard", "charged_credits": 0.05, "charged_sats": 0.5, "balance_credits": 120.35, "balance_sats": 1203.5 }
}
text Açık metni geri verir, srt Ve vtt Geri dönüşümler ve
verbose_json Dili, süresi ve zamanlandırılmış segmentleri ekler. JSON olmayan üç segment için maliyet başlıklarda bulunur.
| statüsü | Ne zaman |
|---|---|
400 | Hiçbir dosya, kullanışlı olmayan bir ses dosyası (invalid_audioBilinmeyen bir format, veya bir transcription model olmayan bir model (invalid_model). |
402 | Hatta bu dengeleri de karşılayamaz. |
413 | 25 MB’den fazla dosya (file_too_large(Daha fazla bilgi için tıklayınız: 1 GB veya daha uzun bir sürümde)audio_too_long). |
502 | Şişman ses işlemeyi başaramadı. hiçbir şey yüklenmedi. |
cURL
curl https://nymbot.ai/api/v1/audio/transcriptions \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-F [email protected] \
-F model=whisper \
-F response_format=json
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
with open("memo.m4a", "rb") as f:
transcript = client.audio.transcriptions.create(model="whisper", file=f)
print(transcript.text)
JavaScript
import fs from "node:fs";
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const transcript = await client.audio.transcriptions.create({
model: "whisper",
file: fs.createReadStream("memo.m4a"),
});
console.log(transcript.text);
İngilizce Konuşma Çeviri
POST https://nymbot.ai/api/v1/audio/translations - bir API anahtarı gerektirir, veya Talep üzerine Lightning ödemeVücut ise multipart/form-data.
Aynı transcription, aynı alanlar hariç language, limitler ve fiyatlar, ancak metin konuşulan dili ne olursa olsun İngilizce'de geri geliyor. audio.translations.create.
cURL
curl https://nymbot.ai/api/v1/audio/translations \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-F [email protected] \
-F model=whisper
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
with open("nota.m4a", "rb") as f:
translation = client.audio.translations.create(model="whisper", file=f)
print(translation.text)
JavaScript
import fs from "node:fs";
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const translation = await client.audio.translations.create({
model: "whisper",
file: fs.createReadStream("nota.m4a"),
});
console.log(translation.text);
Embeddedler
Arama, gruplandırma ve deduplikasyon için metni vektörlere dönüştürür.Modeller Cloudflare'da çalıştırılır ve standart dengeyi harcıyor.
POST https://nymbot.ai/api/v1/embeddings - bir API anahtarı gerektirir, veya Talep üzerine Lightning ödeme.
| alanı | türü | İhtiyaç | Açıklama |
|---|---|---|---|
model | String için | Evet | İçerdiği bir modelden GET /api/v1/models?type=embedding. |
input | String veya Array | Evet | Sıfırdan Sıfırdan Sıfırdan Sıfırdan Sıfırdan Sıfırdan Sıfırdan Sıfırdan Sıfırdan Sıfır (token_input_unsupportedHer giriş modeline uygun olmalıdır. context_lengthÜzerine yaklaşık dört dörtlük yapılmıştır. |
encoding_format | String için | Hayır | float (Devamını Oku) veya base64 (Little-endian 32 bit uçuşları) |
dimensions | İnternete | Hayır | modelin kendi boyutu, ya da bir model için supported_dimensions Bunlardan biri; vektor daha sonra kısaltılır ve normalleştirilir. |
| Modeli | boyutları | Konteyner |
|---|---|---|
@cf/baai/bge-m3 | 1024 - Birçok dil | 8192 Çanakkale |
@cf/qwen/qwen3-embedding-0.6b | 1024 - Birçok dil | 8192 Çanakkale |
@cf/baai/bge-large-en-v1.5 | 1024 İngilizce | 512 Yorumlar |
@cf/baai/bge-base-en-v1.5 | 768, İngilizce | 512 Yorumlar |
@cf/baai/bge-small-en-v1.5 | 384 İngilizce | 512 Yorumlar |
Model listesi, ne için mevcut oldukları ve maliyetlerinin gerçeğinin kaynağıdır; Google'ın EmbeddingGemma, talep üzerine daha kısa vektörlerle, katalogta bunun için bir fiyat olduğu zaman da orada görünür.
Cevap
{
"object": "list",
"data": [
{ "object": "embedding", "index": 0, "embedding": [0.0213, -0.0487, 0.0112] }
],
"model": "@cf/baai/bge-m3",
"usage": { "prompt_tokens": 9, "total_tokens": 9 },
"nymbot": { "balance": "standard", "charged_credits": 0.05, "charged_sats": 0.5, "balance_credits": 1204.35, "balance_sats": 12043.5 }
}
| statüsü | Ne zaman |
|---|---|
400 | Çevre ve Sosyal İlişkiler (Devamla)token_input_unsupported); 100'den fazla giriş (too_many_inputs); modelin almasından daha uzun bir giriş (input_too_long); modelin veremeyeceği bir boyut (unsupported_dimensions). |
402 | Standart dengesi çok düşüktür.Girişler asla Pro dengesini kullanmaz. |
404 | Bu ismi taşıyan bir model yok. |
502 | Fatura ödenmiyor, ücret ödenmiyor |
cURL
curl https://nymbot.ai/api/v1/embeddings \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "@cf/baai/bge-m3", "input": ["Lightning invoices expire.", "Invoices on Lightning have a time limit."]}'
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
result = client.embeddings.create(
model="@cf/baai/bge-m3",
input=["Lightning invoices expire.", "Invoices on Lightning have a time limit."],
)
print(len(result.data), len(result.data[0].embedding))
JavaScript
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const result = await client.embeddings.create({
model: "@cf/baai/bge-m3",
input: ["Lightning invoices expire.", "Invoices on Lightning have a time limit."],
});
console.log(result.data.length, result.data[0].embedding.length);