Məzmuna keçin
Yenə Nymbot

Bilik bazası Developerlər

Görüntülər, audio və embeddings

Uygulamanın generatorları və arama üçün inşaat blokları: görüntülər, video, danışıq, transkripsiya və embeddings, hər biri balansınızdan istifadə üçün hesabatlandırılır.

Görüntüləri yaratmaq

Bir neçə ildir ki, bu, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir. ?image İndi də app.

POST https://nymbot.ai/api/v1/images/generations - bir API şifresi lazımdır, və ya İstehsal üçün Lightning xəritəsi.

İddia gəldi GET /api/v1/models?type=imageStandart generatorlar @cf/black-forest-labs/flux-1-schnellHər bir fotoşəkil üçün 5 standart kredit (50 sats) maliyyələşdirir. hər bir digər generator öz qiymətində Pro kreditlərini, normal xərclər və marjina ilə xərcləyir. Əsas app. n Fotoların qiyməti n Xeneratorun qəbul etmədiyi bir sahə reddən deyil, atılır; standart generator yalnız promptini istifadə edir.

FieldəTipiİhtiyaçAçıqlama
modelStringlərBəliBir generator id kimi nano-banana.
promptStringlərBəliSadəcə ilk 2000 karakter istifadə edilir.
nİnterYəqin1 - 4.Default 1. ayrıca qəbul edilmiş num_images.
sizeStringlərYəqinTəsadüfi olaraq belə bir aspekt "16:9"Və yaxud bir dəfədən ibarətdir. "1792x1024"Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə "auto" Bunu generatorun üstünə qoyun.
aspect_ratioStringlərYəqinNə qədər də sizeHər ikisi ilə birlikdə qalır.
qualityStringlərYəqinGeneratorlar kimi "low", "medium" və ya "high".
negative_promptStringlərYəqinNeyi tərk etmək lazımdır.
output_formatStringlərYəqin"png", "jpeg" və ya "webp".
response_formatStringlərYəqin"url" (Müsəlmanlar və ya "b64_json".
image_urlStringlərYəqinBaşlamaq üçün bir foto: A https:// 4 096 işarə olan linkdə istifadəçi adı və ya şifrəsi yoxdur və ya data:image/…;base64 URL (PNG, JPEG, WebP və ya GIF; SVG deyil). editİstehsal edənlər üçün requires_image_url.

resolution Hər kəs özü ilə birlikdədir, özü ilə birlikdədir. urlHər bir görüntü public bir Blossom hostə yüklənir və siz onun linkini alırsınız (bir neçə xenerator yalnız özlərinin linkini qaytarır, bu linkə göndərilir). Atəşkəs nə görürilə b64_json Fotoşəkil: Fotoşəkil: Fotoşəkil: Fotoşəkil: Fotoşəkil: Fotoşəkil: Fotoşəkil: Fotoşəkil data: URL ilə image_url Görünür ki, eyni zamanda bir Əməkdar Xatırladaq ki, “Blossom”da ilk dəfə “Blossom”da “Blossom”, “Blossom”da “Blossom”da “Blossom”, “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”da “Blossom”

Əgər bir neçə n Fotolar yenə işləyir, işləyir, yalnız onlar üçün cəzalandırılır (pluss hər hansı bir xidmətçi yenə işləyir), və nymbot.failed Bir neçə ildir ki, bu problemlər həll olunmayıb, bir neçə ildir ki, bu problemlər həll olunacaq. 502.

Reaksiya

{
  "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 }
}
StatistikaNə vaxt
400Qızıl olmayıb n 1 və 4 (invalid_valueƏsas səhifə / Əsas səhifə (invalid_sizeGörüntülər (invalid_image, invalid_image_url“Qəbələ”nin “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni “Qəbələ”ni” [...]invalid_model“Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”n”in “Qəbələ”nin “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in”in “Qəbələ”in”in “Qəbələ”inedit_unsupportedİstehsal etməyən şəxs üçün fotoqraf (image_required).
402Bildirilib ki, hər bir fotoya ehtiyac yoxdur.
404Bu adın adı yoxdur (model_not_found).
502Əsas səhifə (upstream_error“Qazaxıstanda heç bir problem yoxdur” – “Qazaxıstanda heç bir problem yoxdur” charged_sats.
503Fotoşəkilləri bu saatda təqdim edə bilmərik (media_hosting_unavailable). b64_json Hala işləyir

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üləri editing

Bu, “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDK”in “OpenAI SDKs”in “OpenAI SDKs”in “OpenAI SDK”in “OpenAI SDK”in “OpenAI SDK”in “O images.edit Sadəcə olaraq, bu generatorların edit Model listində bunu qəbul etmək lazımdır.

POST https://nymbot.ai/api/v1/images/edits - bir API şifresi lazımdır, və ya İstehsal üçün Lightning xəritəsiBəlkə də vücud multipart/form-data32 MB təşkil edir.

FieldəTipiİhtiyaçAçıqlama
imageFiltrəBəliEdit etmək üçün görüntü: PNG, JPEG, WebP və ya GIF, 20 MB-a qədər. image[]Birincisi də istifadə olunur.
promptStringlərBəliNiyə dəyişmək lazımdır.
modelStringlərBəliGenerator ilə bağlı edit.
nİnterYəqin1 ilə 4
size
aspect_ratio
quality
negative_prompt
output_format
StringlərYəqinÜmumilikdə də generasiya.
response_formatStringlərYəqin"b64_json" (Hər şey burada və ya "url".

Yüklədiklərinizin PNG, JPEG, WebP və ya GIF formatlı olduğunu, öz həqiqi tipinə göndərildiyini və xeneratorların bağlantı ilə inputlarını ala bildikləri üçün public bir Blossom hostdə yerləşdirildiyini kontrol edin. Düzdürmə başarısız olsaydı və heç bir şey yüklənməsə, ev sahibinin kopyası yenidən silinir. Cəza xeneratorun qiymətidir.

Reaksiya

{
  "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 }
}
StatistikaNə vaxt
400Fotoşəkil, fotoşəkil, fotoşəkil, fotoşəkil, fotoşəkil, fotoşəkil, fotoşəkil, fotoşəkilinvalid_imageVVD - Hollandiyada futbolçu bu adla tanımır.edit_unsupported).
41320 MB-dan çox görüntü (file_too_largevə ya 32 MB-dan çox olan bütün istəklər.
503Fotoqraflar bu günə qədər təqdim edilə bilməz (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 dəqiqə alır, bu yüzden arxasınca çalışır. Siz onu göndərirsiniz, bir id dərhal alır və bitən qədər id haqqında soruşursunuz.

POST https://nymbot.ai/api/v1/videos - bir API şifresi lazımdır, və ya İstehsal üçün Lightning xəritəsiDönüşlər 202.

FieldəTipiİhtiyaçAçıqlama
modelStringlərBəliBir video generator id GET /api/v1/models?type=videoTəkcə belə veo.
promptStringlərBəliBəs nə olmalıdır.
durationNumaralar və stringlərYəqinUzunluğu saniyədə, daha çox 0 və 60 qədər. yalnız uzunluğunu seçmenizi sağlayan jeneratorlar tərəfindən istifadə edilir; digərləri normal uzunluğunu edir, bu nədir seconds Cəza və reaksiya ilə bağlıdır.
aspect_ratioStringlərYəqinTəkcə "16:9" və ya "9:16"Bəzən belə bir ölçü "1280x720" Bu, ən yaxındır.
resolution
quality
StringlərYəqinGeneratorlardan biri resolutions Model listəsində belə "720p" və ya "1080p"Başqa bir şeyin qiymətini verə bilər, başqa hər şeyin unsupported_resolution.
image_urlStringlərYəqinBaşlamaq üçün bir foto: A https:// Link və ya data:image/… Ana səhifə » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm requires_image_url.

Fiyatı göndərdiyiniz zaman, generatordan, çözünürlükdən və uzunluğundan sabitdir, bu nedenle, provider işini qəbul etdikdən sonra Pro balansınızdan cəzalandırılır və cost, estimated_cost və nymbotBir neçə saatdan sonra işləyə bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilmədiyinizi bilirsiniz.

Tədbirlər (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şlamaq üçün in_progressvə ya completed Videoya baxdıqdan sonra data Xeneratorun geri qaytarılmasından sonra

Videoya baxmaq

GET https://nymbot.ai/api/v1/videos/{id} Bir neçə ildir ki, bu problemlər həll olunacaq, bir neçə ildir ki, bu problemlər həll olunacaq.

Cəmi cavab 202 Videonun hazırlanması və 200 Hər 5 ilə 10 saniyədə soruşun. hər bir baxış bir dəfə soruşur və bir dəfə cavab verir; videoya heç vaxt gözləmir. GET /api/v1/videos Son 50 ildir ki, bu işlər {"object": "list", "data": […]}.

Əməkdaşlıq (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 İŞİD in_progress, completed və ya failedBaşqaları işdən qaçdılar error ({"code": "generation_failed", "message": …}Əgər qaytarılsa, cost 0 və nymbot Təkliflər refunded_credits və refunded_satsSonuncu video, bənzər görüntülər kimi Public Blossom hostindədir.

StatistikaNə vaxt
400Xatırladaq ki, bir neçə ildir ki, bu, 60 ildir.invalid_value“Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”n”in “Qəbələ”nin “Qəbələ”n”in “Qəbələ”nin “Qəbələ”n”in “Qəbələ”nin “Qəbələ”n”in “Qəbələ”nin “Qəbələ”n”in “Qəbələ”nin “Qəbələ”n”in “Qəbələ”n”in “Qəbələ”n”in “Qəbələ”n”in...unsupported_resolution“Qəbələ”nin “Qəbələ”nin “Qəbələ”nə ehtiyacı yoxdurimage_requiredVideoya çəkilən videoya baxmayıb.invalid_model).
402Pro balansı videoya daxil oluna bilməz.
404Əsas səhifə (model_not_found“Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”n”in “Qəbələ”in “Qəbələvideo_not_found).
429Xatırladaq ki, 10 ildir ki, bu videoya baxmaq lazımdır.video_jobs_limitOnlara baxın və bir dəfə daha göndərin.
502“Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”n”in “Qəbələ”in “Qəbələ
503Videoya daxil olmaq və istifadə etmək mümkün deyil (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);

Konkret danışıq

Xüsusilə, bir neçə ildir ki, bu problemlər həll olunmasa, bir neçə ildir ki, bu problemlər həll olunmur. audio.speech.create OpenAI SDK-lər işləyir

POST https://nymbot.ai/api/v1/audio/speech - bir API şifresi lazımdır, və ya İstehsal üçün Lightning xəritəsi.

FieldəTipiİhtiyaçAçıqlama
modelStringlərYəqinBir danışıq modelinin Audio modelləriStandart: Standart quraşdırma @cf/myshell-ai/melotts. aura-2 Deepgram Aura 2 ilə bağlı
inputStringlərBəliTexti oxumaq üçün: standart söz üçün 800 işarə, Aura 2 üçün 2000 işarə.
voiceStringlərYəqinHəkimlərin ID-si Sessiyaların listası“Aura” sözçüsü luna və ya aura-2-luna-enAzərbaycan dilində (en, es, fr, zh“OpenAI” adları alloy İstehsal ediləcək və modelin standart qərarını verəcək.
languageStringlərYəqinDil kodları kimi esBir dilə danışan şəxs, bir dilə danışan şəxs, bir dilə danışan şəxs qaytarılır. 422 voice_language_mismatch“Bir dili var ki, modelin heç bir sözü yoxdur. 422 unsupported_language.
response_formatStringlərYəqinStandart sessiya qayıdır mp3 Aura 2 qayıtdı mp3 (Mənim fikrim də bu idi) opus, aac, flac, wav və ya pcm.
speedNumaralarıYəqinTəsadüfi və ignorantdır.

“Aura 2” “Pro”, göndərdiyiniz karakterlərə görə qiymətləndirilir. Content-TypeMüəllimlərin qiyməti X-Nymbot-Cost-Sats Konkret.az-a istinadən xəbər verir ki, bu barədə məlumat verilməyib.

Reaksiya

HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6

(audio bytes)
StatistikaNə vaxt
400Əsas səhifə / Mədəniyyət / Mədəniyyət (input_too_long“Qəbələ”nin yaradıcılığının nəticəsi açıqlanmayıbunsupported_response_formatƏsas səhifə (invalid_voice“Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”n”in “Qəbələ”nin “Qəbələ”n”in “Qəbələ”nin “Qəbələ”n”in “Qəbələ”in “Qəbələ”n”in “Qəbələ”nin “Qəbələ”n”in “Qəbələ”nin “Qəbələ”n”in “Qəbələ”n”in “Qəbələ”n”in “Qəbələ”n”in “Qəbələ”ininvalid_model).
422Votlar bu dili danışmır, ya da modelin onun üçün heç bir sözü yoxdur.
502Təsadüfi qərar qəbul olunmayıb. - Təsadüfi qərar

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()));

Audio modellər və seslər

Bir söz modeli və bir sözü seçmək üçün iki public listlər və ya bir transcription model.There are 41 Aura 2 English speakers and four MeloTTS languages.

GET https://nymbot.ai/api/v1/audio/models Anahtar lazım deyil.

GET https://nymbot.ai/api/v1/audio/voices?language=en Anahtar lazım deyil.

FieldəTipiİhtiyaçAçıqlama
languageQəbələ (Qəbələ)YəqinYalnız bu dilə danışıqlar aparılır.
modelQəbələ (Qəbələ)YəqinSadəcə bu model üçün.

İstirahət (Voice)

{
  "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 }
  ]
}

Modelin cavabları {"object": "list", "data": {"tts": […], "stt": […]}}Hər bir model öz balansını, qiymətini verir. max_input_chars, response_formats, languages və default_voice“Transk” şirkəti bu barədə məlumat yayıb. max_file_bytes, max_secondsSürücülər və dəqiqə qiyməti

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);

Teksti ilə danışmaq

Xatırladaq ki, bu, “OpenAI” şirkəti ilə işləyir. audio.transcriptions.create işləyirlər

POST https://nymbot.ai/api/v1/audio/transcriptions - bir API şifresi lazımdır, və ya İstehsal üçün Lightning xəritəsiBəlkə də vücud multipart/form-data.

FieldəTipiİhtiyaçAçıqlama
fileFiltrəBəli256 baytdan 25 MB-a və 30 dəqiqəyə qədər: WAV, WebM, MP4 və ya M4A, Ogg və ya Opus, MP3 və digər formatlar.
modelStringlərYəqinDefektlər whisperBu barədə “Whisper Large v3 Turbo” məlumat yayıb. whisper-1, whisper-large-v3-turbo və @cf/openai/whisper-large-v3-turbo Aynı şeyi deməkdir.
languageStringlərYəqinTəsadüfi dil, belə enDüşünürəm ki, çıxdıqdan sonra.
promptStringlərYəqinİlk 1000 işarə yalnız istifadə olunur.
response_formatStringlərYəqinjson (Mənim fikrim də bu idi) text, srt, vtt və ya verbose_json.

WAV, WebM, MP4 və Ogg dosyaları üçün uzunluğu hər hansı bir şeydən əvvəl dosyadan oxunur, belə ki, 30 dəqiqədən çox olan bir çəkiliş öncə (üç saniyəyə qədər) qəbul olunmaz). Bir WAV dosyasının uzunluğu onun nümunə həcmi, kanalları və nümunə boyundan gəlir. MP3 kimi digər formatların uzunluğu öncə oxunmaq mümkün deyil, belə ki, onlar boyla sınırlıdır: ən düşük bit həcmi ilə Nymbot varsayar, 8 kbps, 30 dəqiqə 1.8 MB və bu formatda daha böyük bir dosya qəbul olunmaz. 413 audio_too_long VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. 413 audio_too_long“Snickers” isə 30 dəqiqə davam edir.

Siz audio uzunluğuna görə ödənirsiniz, ikinci qədər yuvarlanır: dosyadan oxunan uzunluğunun ən uzunluğu, uzunluğu Whisper bildirir, və ən azı dosya boyuna izin verir, Whisper'in per-minute qiyməti ilə normal xərclər və marj, və ən azı 0.05 kredit bir istefa. 402 VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu.

Reaksiya

{
  "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 Təsadüfi texta qaytarılır. srt və vtt subyektləri qaytarmaq və verbose_json Ümumiyyətlə, bu, bir neçə ildir ki, bir neçə ildir ki, bu problemlər həll olunmasa da, bir neçə ildir ki, bu problemlər həll olunmur.

StatistikaNə vaxt
400Xatırladaq ki, bu filmdə heç bir film çəkilməyib.invalid_audioƏsas səhifə / Mədəniyyət / Mədəniyyət / Mədəniyyət / Mədəniyyət (invalid_model).
402Bunu da balansla başa vurmaq mümkün deyil.
413Əsas səhifə 25 MB (file_too_largeƏsas səhifə » Xəbərlər » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifəaudio_too_long).
502“Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in”in “Qəbələ”in “Qəbələ”in”ə...

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);

İngilis dilində danışıqlar

POST https://nymbot.ai/api/v1/audio/translations - bir API şifresi lazımdır, və ya İstehsal üçün Lightning xəritəsiBəlkə də vücud multipart/form-data.

Təsadüfi olaraq, bu sahələr başqa language“OpenAI” şirkəti “OpenAI” şirkəti “OpenAI” şirkəti “OpenAI” şirkəti “OpenAI” şirkəti “OpenAI” şirkəti “OpenAI” şirkəti “OpenAI” şirkəti “OpenAI” şirkəti “OpenAI” şirkəti “OpenAI” şirkəti “OpenAI” şirkəti “OpenAI” şirkəti “OpenAI” şirkəti “OpenAI” şirkəti 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);

Embeddedlər

Xüsusilə, bir neçə ildir ki, bu problemlər həll olunacaq, bir neçə il sonra bu problemlər həll olunacaq.

POST https://nymbot.ai/api/v1/embeddings - bir API şifresi lazımdır, və ya İstehsal üçün Lightning xəritəsi.

FieldəTipiİhtiyaçAçıqlama
modelStringlərBəliBir neçə modeldən GET /api/v1/models?type=embedding.
inputString və ya arrayBəliXatırladaq ki, bu, bir neçə ildir ki, ABŞ-ın ABŞ-a getməyəcəyini göstərə bilmədi.token_input_unsupportedHər bir model modelin özünə uyğun olmalıdır. context_lengthDörd ildir ki, bu barədə məlumat yayılıb.
encoding_formatStringlərYəqinfloat (Müsəlmanlar və ya base64 (Mənim 32-ci dəqiqəlik mövsümümüm var)
dimensionsİnterYəqinModelin özü, ya da modelin supported_dimensions Vektorun qiyməti azaldılır və normallaşdırılır.
ModeliDimensiyanınKontekst
@cf/baai/bge-m31024 saylı dil8 192 ədəd
@cf/qwen/qwen3-embedding-0.6b1024 saylı dil8 192 ədəd
@cf/baai/bge-large-en-v1.51024 - İngilis dilində512 nəfər
@cf/baai/bge-base-en-v1.5768, İngilis dilində512 nəfər
@cf/baai/bge-small-en-v1.5İngilis dilində 384512 nəfər

“Google”un “EmbeddingGemma”, istənilənə görə daha az vektorlar olan “EmbeddingGemma”, katalogda bunun üçün bir qiymət olduğu zaman da orada görünür.

Reaksiya

{
  "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 }
}
StatistikaNə vaxt
400Əsas səhifə / İqtisadi / İqtisadi / İqtisadi / İqtisadi / İqtisadi / İqtisadi / İqtisaditoken_input_unsupportedƏsas səhifə (too_many_inputsƏsas səhifə » Xəbərlər » Dərslər (input_too_longBir neçə ildir ki, bu problemlər həll olunmayıb.unsupported_dimensions).
402Standard balansı çox azdır.Inbeddings heç vaxt Pro balansını istifadə etmir.
404Bu adın altında model olmayıb.
502Modeli qəbul etməmişəm, heç bir problem yoxdur.

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);