ज्ञानाचा आधार विकासक
चित्र, ऑडिओ आणि embeddings
अॅपच्या जनरेटर आणि शोधण्यासाठी बिल्डिंग ब्लॉक: चित्रे, व्हिडिओ, भाषण, ट्रान्सक्रिप्शन आणि इनबेडमेंट्स, प्रत्येकाने आपल्या खात्यातून वापर दरम्यान चाचणी केली आहे.
हे पृष्ठ सोयीसाठी मशीन-अनुवादित आहे. मूळ इंग्रजी ही आवृत्ती लागू होते.
चित्र निर्माण
प्रॉम्प्टवरून एक ते चार छायाचित्रे बनवते आणि ते पूर्ण झाल्यावर ती परत करते. जनित्रांचा तो समान संच असतो ?image एपमध्ये.
POST https://nymbot.ai/api/v1/images/generations - ए. पी. आय. किल्लीची गरज आहे, किंवा प्रत्येक विनंतीसाठी वीज भरणे.
आयडी येतात GET /api/v1/models?type=imageसामान्य जनरेटर,
@cf/black-forest-labs/flux-1-schnell, एक फ्लॅट 5 मानक क्रेडिट (50 sats) एक चित्र लागते. प्रत्येक इतर जनरेटर आपल्या स्वतःच्या किंमतीत प्रो क्रेडिट खर्च करतो, सामान्य शुल्क आणि मार्जिनसह, म्हणून एप. n फोटो खर्च
n जे जनरेटर वापरत नाही, ते अस्वीकार केले जातात; मानक जनरेटर फक्त प्रिंट वापरतो.
| मैदान. | प्रकार | आवश्यक | वर्णन. |
|---|---|---|---|
model | स्ट्रिंग | होय | जेनरेटर आयडी, अशा प्रकारे nano-banana. |
prompt | स्ट्रिंग | होय | फक्त पहिली 2000 वर्ण वापरले जातात. |
n | अस्तित्वात | नाही | 1 ते 4.असेच मानले जाते. num_images. |
size | स्ट्रिंग | नाही | आस्पेक्ट रेशो जसे की "16:9", किंवा ओपनएआय आकार जसे की "1792x1024", जे 1:1,16:9,9:16,4:3,3:4,3:2,2:3,21:9,5:4 आणि 4:5 च्या सर्वात जवळचे होते. "auto" ते जनरेटरवर सोडून द्या. |
aspect_ratio | स्ट्रिंग | नाही | वेगवेगळ्या sizeदोघेही जिंकले तर दोघेही जिंकले. |
quality | स्ट्रिंग | नाही | जनरेटर-विशिष्ट, जसे की "low", "medium" या "high". |
negative_prompt | स्ट्रिंग | नाही | काय सोडून द्यावं. |
output_format | स्ट्रिंग | नाही | "png", "jpeg" या "webp". |
response_format | स्ट्रिंग | नाही | "url" (उपयोगी वस्तू) या "b64_json". |
image_url | स्ट्रिंग | नाही | प्रारंभ करण्यासाठी एक फोटो : एक https:// ४,०९६ वर्ण असणाऱ्या लिंकमध्ये वापरकर्ताचे नाव किंवा पासवर्ड नाही किंवा data:image/…;base64 यू. आर. एल. (पी. एन. जी., जे. पी. ई. जी., वेब. पी. किंवा जी. आय. एफ.; एस. व्ही. जी. नाही). फक्त जनरेटरसाठी editत्यांची मागणी करणाऱ्यांना requires_image_url. |
resolution प्रत्येक जण स्वतःचा वापर करतो; प्रत्येक जण स्वतःचा वापर करतो. urlप्रत्येक चित्र सार्वजनिक ब्लॉसम होस्टवर अपलोड केले जाते आणि तुम्हाला त्याची लिंक मिळते (काही जनरेटर केवळ त्यांची स्वतःची लिंक परत देतात, जी पुढे पाठवली जाते). लिंक असलेली कोणीही ती उघडू शकते आणि ती पुन्हा खाली काढली जाऊ शकत नाही; पहा अग्निशमन देखील काय करतातसाथ
b64_json चित्र प्रतिक्रिया मध्ये परत येते आणि कधीच अपलोड केले जात नाही. data: URL मध्ये image_url तशाच प्रकारे तपासले जाते
एडिट आणि पहिल्यांदा Blossom वर अपलोड केले जाते, जेणेकरून जनरेटर त्याला घेऊन जाऊ शकते; ही मागणी अटक न करता पुन्हा काढली जाते.
जर काही जणांना n चित्र विफल होतात, आपण जे काम केले आहेत ते मिळतात, फक्त त्यासाठी शुल्क (अधिक कोणत्याही पुरवठादार विफल झाल्याशिवाय शुल्क) आणि nymbot.failed हे सगळं विफल झालं असतं, तर सगळं विफल झालं असतं, असं म्हणतात. 502.
प्रतिक्रिया
{
"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 }
}
| स्थिती. | कधी |
|---|---|
400 | प्रॉम्प्ट नाही; n 1 ते 4 (invalid_value); खराब आकार (invalid_size) किंवा चित्र (invalid_image, invalid_image_url); एक मॉडेल आहे पण एक चित्रा जनरेटर नाही (invalid_model); एक चित्र जनरेटर जे संपादित करू शकत नाही (edit_unsupported); कोणताही फोटो त्याची गरज नाही (image_required). |
402 | शिल्लक मागितलेले प्रत्येक चित्र समाविष्ट करू शकत नाही. |
404 | त्या नावाने कोणतेही मॉडेल नाही (model_not_found). |
502 | जनित्र अयशस्वी झाले (upstream_error). जोपर्यंत पुरवठादाराने प्रयत्नासाठी बिल दिले नाही तोपर्यंत काहीही शुल्क आकारले जात नाही; मग त्रुटी आहे charged_sats. |
503 | चित्र आजवर होस्ट करू शकत नाही (media_hosting_unavailable). b64_json अजूनही काम करतात. |
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);
प्रतिमांचे संपादन
प्रॉम्प्टच्या पाठोपाठ तुम्ही अपलोड केलेले चित्र बदलते. हा ओपनएआयचा संपादन अंतिम बिंदू आहे, त्यामुळे ओपनएआय एसडीके ' images.edit जसे आहे तसे काम करते. फक्त प्रो जनरेटरसह edit मॉडेल लिस्टमध्ये ते स्वीकारले जातात.
POST https://nymbot.ai/api/v1/images/edits - ए. पी. आय. किल्लीची गरज आहे, किंवा प्रत्येक विनंतीसाठी वीज भरणेशरीर म्हणजे multipart/form-data32 MB पर्यंत.
| मैदान. | प्रकार | आवश्यक | वर्णन. |
|---|---|---|---|
image | फाइल | होय | संपादन करण्यासाठी चित्र: PNG, JPEG, WebP किंवा GIF, 20 MB पर्यंत. image[]; पहिला वापरला जातो. |
prompt | स्ट्रिंग | होय | काय बदल करावे. |
model | स्ट्रिंग | होय | जनित्रासह edit. |
n | अस्तित्वात | नाही | 1 ते 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | स्ट्रिंग | नाही | जनतेच्या बाबतीत |
response_format | स्ट्रिंग | नाही | "b64_json" (येथे पूर्वनिर्धारित) किंवा "url". |
आपण अपलोड केलेली चित्रे चांगले स्वरूपित PNG, JPEG, WebP किंवा GIF असल्याची तपासणी केली जाते, त्याचे वास्तविक प्रकार म्हणून पाठविले जाते, आणि एक सार्वजनिक Blossom होस्टवर ठेवले जाते, कारण जनरेटर संदर्भानुसार त्यांच्या प्रवेशाचा वापर करतात. तो सार्वजनिक म्हणून व्यवहार करा. जर संपादन विफल होत नाही आणि काहीही चार्ज केलेला नाही तर होस्ट केलेला कॉपी पुन्हा काढला जातो.
प्रतिक्रिया
{
"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 }
}
| स्थिती. | कधी |
|---|---|
400 | कोणताही चित्र किंवा प्रिंट नाही, एक फाइल आहे जे चित्र नाही (invalid_image), किंवा जनरेटर जे संपादित करू शकत नाही (edit_unsupported). |
413 | या चित्रपटाची किंमत 20 एमबी (file_too_large) किंवा संपूर्ण मागणी 32 MB पेक्षा जास्त आहे. |
503 | चित्र सध्या होस्ट केले जाऊ शकत नाही (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"));
व्हिडिओ
व्हिडिओला काही मिनिटे लागतात, त्यामुळे तो पार्श्वभूमीत चालतो. तुम्ही तो सादर करा, लगेच आयडी मिळवा आणि तो पूर्ण होईपर्यंत आयडीबद्दल विचारा. प्रत्येक व्हिडिओ जनरेटर प्रो शिल्लक खर्च करतो.
POST https://nymbot.ai/api/v1/videos - ए. पी. आय. किल्लीची गरज आहे, किंवा प्रत्येक विनंतीसाठी वीज भरणेपरत 202.
| मैदान. | प्रकार | आवश्यक | वर्णन. |
|---|---|---|---|
model | स्ट्रिंग | होय | व्हिडिओ जनरेटर ID GET /api/v1/models?type=videoअशा प्रकारे veo. |
prompt | स्ट्रिंग | होय | काय होणार आहे. |
duration | संख्या किंवा string | नाही | सेकंदात लांबी, 0 पेक्षा जास्त आणि 60 पर्यंत. फक्त जे जनरेटर वापरतात जे आपल्याला लांबी निवडू शकतात; इतर आपल्या सामान्य लांबी, जे काय करतात seconds प्रतिक्रिया आणि किंमत पुढे येते. |
aspect_ratio | स्ट्रिंग | नाही | म्हणूनच "16:9" या "9:16"यासारख्या आकाराची "1280x720" सर्वात जवळच्या संदर्भात. |
resolutionquality | स्ट्रिंग | नाही | जनरेटरचा एक resolutions उदाहरणार्थ, उदाहरणार्थ, उदाहरणार्थ "720p" या "1080p"त्याने ही किंमत निर्धारित केली.असे काहीही नकार दिला जातो. unsupported_resolution. |
image_url | स्ट्रिंग | नाही | प्रारंभ करण्यासाठी एक फोटो : एक https:// लिंक किंवा A data:image/… यू. आर. एल., जी प्रथम सार्वजनिक ब्लॉसम यजमानावर अपलोड केली जाते. जनरेटरद्वारे आवश्यक requires_image_url. |
किंमत निर्धारित आहे जेव्हा आपण पाठवतो, जेनरेटर, संकल्प आणि लांबी, म्हणून तो आपला प्रो संतुलन लवकरच पुरवठादार नोकरी स्वीकारते आणि दिसून येते
cost, estimated_cost आणि nymbotजर प्रदाता नोकरी नकार देत असेल तर, काहीही चार्ज केले जात नाही. नंतर रेंंडिंग असफल असेल तर, किंवा समाप्त झालेला क्लिप संग्रहीत होऊ शकत नाही आणि प्रदाताने त्यासाठी चार्ज केले नाही, तो शुल्क एकदा, स्वयंचलितपणे वापरावा लागतो. एक रेंंडिंग जो अजूनही एक तासानंतर चालत आहे तो सोडतो, आणि त्याची चार्ज ठेवते, कारण प्रदाता तो स्वीकारल्यानंतर एक रेंंडिंग चार्ज करतो.
याचे उत्तर (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 सुरुवात करताना in_progressया completed आधीपासूनच असलेल्या व्हिडिओसह data जेनरेटर लवकरच परतले.
व्हिडिओ तपासत आहे
GET https://nymbot.ai/api/v1/videos/{id} - सादर केलेल्या एन. आय. एम. शी संबंधित किल्लीची आवश्यकता आहे. एक किल्ली जी त्याच्या कॅपपर्यंत पोहोचली आहे ती अजूनही तपासू शकते.
त्याने उत्तर दिले 202 जेव्हा व्हिडिओ बनवला जात आहे आणि 200 एकदा ते पूर्ण झाले किंवा अयशस्वी झाले. दर 5 ते 10 सेकंदांनी विचारा. प्रत्येक धनादेश पुरवठादाराला एकदा विचारतो आणि एकाच वेळी उत्तर देतो; तो कधीही व्हिडिओची वाट पाहत नाही. सादर केल्यानंतर 24 तास नोकरी ठेवली जाते.
GET /api/v1/videos किल्लीच्या शेवटच्या 50 कामांची यादी अशी करा
{"object": "list", "data": […]}.
प्रतिसाद (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 आहे in_progress, completed या failedनोकरी नोकरी नोकरी नोकरी नोकरी error ({"code": "generation_failed", "message": …}); जर ते परत केले गेले, cost 0 आणि nymbot जोडा
refunded_credits आणि refunded_satsपूर्ण व्हिडिओ एक सार्वजनिक Blossom होस्टवर आहे, जे उत्पन्न झालेले फोटोसारखे आहे.
| स्थिती. | कधी |
|---|---|
400 | अ ॅडमॅट (अ ॅडमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटमॅटinvalid_value); जनरेटर देऊ करत नसलेले रिझोल्यूशन (unsupported_resolution); कोणत्याही जनरेटरसाठी चित्र नाही जे एक आवश्यक आहे (image_required); एक मॉडेल जो व्हिडिओ जनरेटर नाही (invalid_model). |
402 | प्रो बॅलन्स व्हिडिओला कव्हर करू शकत नाही. |
404 | (आणि काहीही नसेल तर)model_not_found), किंवा तुमच्या एन. आय. एम. साठी त्या ओळखपत्राद्वारे नोकरी नाही, किंवा ती 24 तासांपेक्षा जुनी आहे (video_not_found). |
429 | 10 टक्के व्हॉट्सअॅप (video_jobs_limit) त्यांची तपासणी करा आणि एक शेवटी पुढे पाठवा. |
502 | जेनरेटरने नोकरी नकार दिला. प्रदाताने नोकरी मागितल्याशिवाय काहीही चार्ज केले जात नाही. |
503 | व्हिडिओ सध्या वितरित किंवा संग्रहित केले जाऊ शकत नाहीत (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);
भाषण लिहायला
पाठ वाचतो आणि ऑडिओ फाइल स्वतःला परततो, एक लिंक नाही. audio.speech.create ओपनएआय एस. डी. के. मध्ये काम करते.
POST https://nymbot.ai/api/v1/audio/speech - ए. पी. आय. किल्लीची गरज आहे, किंवा प्रत्येक विनंतीसाठी वीज भरणे.
| मैदान. | प्रकार | आवश्यक | वर्णन. |
|---|---|---|---|
model | स्ट्रिंग | नाही | भाषणातील एक उदाहरण ऑडिओ मॉडेल्सची यादीडिफॉल्ट : मानक आवाज @cf/myshell-ai/melotts. aura-2 Deepgram Aura 2 च्या माध्यमातून. |
input | स्ट्रिंग | होय | पाठ वाचण्यासाठी: मानक आवाजसाठी 800 वर्ण, Aura 2साठी 2000 वर्ण. |
voice | स्ट्रिंग | नाही | वॉयस आईडी मतदारांची सूची: एक ऑरा स्पीकर जसे की luna या aura-2-luna-en) या भाषेचा वापर करताना (en, es, fr, zh). ओपनएआय आवाजाची नावे जसे की alloy ते स्वीकारले जातात आणि मॉडेलचा पूर्वनिर्धारित आवाज देतात. |
language | स्ट्रिंग | नाही | भाषा कोड जसे की es. आवाज नसल्यास, तो त्या भाषेसाठी एक निवडतो. दुसरी भाषा बोलणारा आवाज परत येतो. 422 voice_language_mismatch, आणि एक भाषा ज्यासाठी मॉडेलला आवाज नाही 422 unsupported_language. |
response_format | स्ट्रिंग | नाही | मानक आवाज परत येतो mp3 फक्त. ऑरा 2 परत येतो mp3 (उपयोगी वारंवार) opus, aac, flac, wav या pcm. |
speed | संख्या | नाही | स्वीकारले आणि दुर्लक्षित केले. |
मानक आवाजाची किंमत अॅपप्रमाणे एका विनंतीसाठी सपाट 3 मानक क्रेडिट्स (30 सॅट्स) आहे. ऑरा 2 प्रो आहे, ज्याची किंमत तुम्ही पाठवलेल्या वर्णांनुसार आहे. प्रतिसाद मुख्य म्हणजे ऑडिओ आहे, जो जुळणारा आहे.
Content-Typeयाची किंमत म्हणजे X-Nymbot-Cost-Sats जर भाषण मॉडेल असफल असेल तर काहीच चार्ज होत नाही.
प्रतिक्रिया
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| स्थिती. | कधी |
|---|---|
400 | अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडम्युअल अ ॅडमinput_too_long); एक स्वरूप जे मॉडेल तयार करू शकत नाही (unsupported_response_format); अज्ञात आवाज (invalid_voice); एक मॉडेल जे भाषण मॉडेल नाही (invalid_model). |
422 | आवाज दिलेली भाषा बोलत नाही किंवा मॉडेलला त्यासाठी आवाज नाही. |
502 | भाषणाचे मॉडेल विफल झाले. काहीही चूक नाही. |
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()));
ऑडिओ मॉडेल आणि आवाज
भाषणाचे प्रतिरूप आणि आवाज किंवा प्रतिलेखन प्रतिरूप निवडण्यासाठी दोन सार्वजनिक याद्या. 41 ऑरा 2 इंग्रजी बोलणारे आणि चार मेलोटीटीएस भाषा आहेत.
GET https://nymbot.ai/api/v1/audio/models - चावीची गरज नाही.
GET https://nymbot.ai/api/v1/audio/voices?language=en - चावीची गरज नाही.
| मैदान. | प्रकार | आवश्यक | वर्णन. |
|---|---|---|---|
language | तेंडुलकर (आणि कवी) | नाही | केवळ या भाषेसाठी आवाज. |
model | तेंडुलकर (आणि कवी) | नाही | फक्त हा मॉडेल वापरला जातो. |
प्रतिसाद (आवाज)
{
"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 }
]
}
मॉडेलच्या प्रश्नांची माहिती {"object": "list", "data": {"tts": […], "stt": […]}}प्रत्येक भाषण मॉडेल आपल्या संतुलन, किंमत, max_input_chars,
response_formats, languages आणि default_voice; प्रतिलेखन मॉडेल त्याचे उपनामे देते, max_file_bytes, max_seconds, स्वरूप आणि प्रति मिनिट किंमत.
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);
शब्दाचा भाषण
ध्वनिमुद्रणाचे व्हिस्परसह मजकुरात रूपांतर करते. हा ओपनएआयचा प्रतिलेखन अंतिम बिंदू आहे, म्हणून
audio.transcriptions.create कामे करतात.
POST https://nymbot.ai/api/v1/audio/transcriptions - ए. पी. आय. किल्लीची गरज आहे, किंवा प्रत्येक विनंतीसाठी वीज भरणेशरीर म्हणजे multipart/form-data.
| मैदान. | प्रकार | आवश्यक | वर्णन. |
|---|---|---|---|
file | फाइल | होय | रिकॉर्डिंग, 256 बैट्स ते 25 MB आणि 30 मिनिटेपर्यंत: WAV, WebM, MP4 किंवा M4A, Ogg किंवा Opus, MP3 आणि इतर स्वरूपात Whisper वाचते. |
model | स्ट्रिंग | नाही | पूर्वनिर्धारीत whisper, जे व्हिस्पर लार्ज व्ही3 टर्बो आहे. whisper-1, whisper-large-v3-turbo आणि @cf/openai/whisper-large-v3-turbo याचा अर्थ एकच आहे. |
language | स्ट्रिंग | नाही | भाषेचा वापर, उदा. en. बाहेर ठेवल्यास आढळले. |
prompt | स्ट्रिंग | नाही | नावांसारखे अपेक्षित शब्द किंवा शब्दलेखन. फक्त पहिल्या 1,000 वर्णांचा वापर केला जातो. |
response_format | स्ट्रिंग | नाही | json (उपयोगी वारंवार) text, srt, vtt या verbose_json. |
WAV, WebM, MP4 आणि Ogg फ़ाइल्ससाठी लांबी काहीही चालत नसल्यास फाइलमधून वाचली जाते, म्हणून 30 मिनिटांपेक्षा जास्त रिकॉर्डिंग अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्या 413
audio_too_long काहीही चालू होण्यापूर्वी. दीर्घ ध्वनिमुद्रणे डब्ल्यू. ए. व्ही., वेब. एम., एम. पी. 4 किंवा ओ. जी. जी. म्हणून पाठवा. जर व्हिस्पर 30 मिनिटांपेक्षा जास्त वेळ अहवाल देत असेल, तर विनंती नाकारली जाते.
413 audio_too_long, आणि व्हिस्पर धावत असल्याने, 30 मिनिटे शुल्क आकारले जाते.
तुम्ही ध्वनिफितीच्या लांबीसाठी पैसे देता, जी दुसऱ्यापर्यंत पूर्ण केली जातेः फाईलमधून वाचलेल्या लांबीच्या सर्वात लांब लांबीसाठी, व्हिस्पर अहवालांची लांबी आणि किमान फाईलचा आकार, व्हिस्परच्या प्रति मिनिट किंमतीवर नेहमीच्या शुल्कासह आणि मार्जिनसह आणि किमान 0.05 क्रेडिट विनंतीसाठी. जेव्हा ती धरून ठेवू शकते तेव्हा ती प्रमाणित शिल्लक रकमेतून दिली जाते आणि अन्यथा प्रो कडून; अ 402 प्रत्येक संतुलन आवश्यक काय देतो. अॅपमध्ये, आवाज संदेश ट्रान्सक्रिप्शन मुक्त होऊ शकते; एपीआयवर तो नेहमी चार्ज केला जातो.
प्रतिक्रिया
{
"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 स्पष्ट लेख परत देतो. srt आणि vtt पुनरुत्थान करणारे, आणि
verbose_json भाषा, तापमान आणि टाइमिटेड सेगमेंट्स जोडते. जे तीन जे JSON नाहीत, याची किंमत शीर्षकांमध्ये आहे.
| स्थिती. | कधी |
|---|---|
400 | अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप अद्याप (invalid_audio, एक अज्ञात स्वरूप, किंवा एक मॉडेल आहे जे ट्रान्सक्रिप्शन मॉडेल नाही (invalid_model). |
402 | दोन्हीपैकी कोणताही समतोल त्याला आवर घालू शकत नाही. |
413 | 25 मेगांपेक्षा जास्त कागदपत्रे (file_too_large) किंवा 30 मिनिटांपेक्षा जास्त रिकॉर्डिंग किंवा, कोणत्याही स्वरूपात ज्या लांबीला सामने वाचता येत नाही, 1,8 MB पेक्षा जास्त (audio_too_long). |
502 | एसी लोकलच्या प्रवाशांना मिळणार डब्यातच सुविधा |
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);
इंग्रजी भाषण अनुवाद
POST https://nymbot.ai/api/v1/audio/translations - ए. पी. आय. किल्लीची गरज आहे, किंवा प्रत्येक विनंतीसाठी वीज भरणेशरीर म्हणजे multipart/form-data.
ट्रान्सक्रिप्शनसारखेच, याशिवाय समान क्षेत्रांसह language, मर्यादा आणि किंमत, परंतु मजकूर इंग्रजीत परत येतो, जी भाषा बोलली जात असे. ओपनएआय एसडीके त्याला असे म्हणतात 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);
इम्बेड
शोध, क्लस्टरिंग आणि डिडुप्लिकेशनसाठी मजकुराचे वेक्टरमध्ये रूपांतर करते. मॉडेल्स क्लाउडफ्लेअरवर चालतात आणि मानक शिल्लक खर्च करतात.
POST https://nymbot.ai/api/v1/embeddings - ए. पी. आय. किल्लीची गरज आहे, किंवा प्रत्येक विनंतीसाठी वीज भरणे.
| मैदान. | प्रकार | आवश्यक | वर्णन. |
|---|---|---|---|
model | स्ट्रिंग | होय | यातील एक मॉडेल GET /api/v1/models?type=embedding. |
input | तेंडुलकर किंवा तेंडुलकर | होय | एम्बेड करण्यासाठीचा मजकूर, 100 पर्यंत रिक्त नसलेल्या तारांपर्यंत. टोकन अॅरे नाकारले जातात (token_input_unsupported(प्रत्येक प्रकरणाला मॅडमचा वापर करावा लागतो. context_lengthत्यानुसार चार बायट एक टोकन म्हणून गणले जातात. |
encoding_format | स्ट्रिंग | नाही | float (उपयोगी वस्तू) या base64 (बहुतांश 32-बिट फ्लोट्स आहेत. |
dimensions | अस्तित्वात | नाही | मॉडेलच्या स्वतःच्या आकार, किंवा एक मॉडेलच्या supported_dimensions मात्र, त्याचबरोबरच त्यांचे व्हॅक्टर्स कमी आणि सामान्य केले जातात. |
| मॉडेल | आकार | संदर्भ |
|---|---|---|
@cf/baai/bge-m3 | 1024, अनेक भाषा | 8,192 टोकन |
@cf/qwen/qwen3-embedding-0.6b | 1024, अनेक भाषा | 8,192 टोकन |
@cf/baai/bge-large-en-v1.5 | 1024, इंग्रजी | 512 टक्के |
@cf/baai/bge-base-en-v1.5 | 768, इंग्रजी | 512 टक्के |
@cf/baai/bge-small-en-v1.5 | इंग्रजी ३८४ | 512 टक्के |
मॉडेल्सची यादी हा सत्याचा स्रोत आहे ज्यासाठी ते उपलब्ध आहेत आणि त्यांची किंमत किती आहे; गुगलचा एम्बेडिंगगेमा, विनंतीनुसार लहान वेक्टरसह, जेव्हा कॅटलॉगची किंमत असते तेव्हा तिथे देखील दिसतो. एम्बेडिंग्स प्रति इनपुट टोकन मीटर केले जातात आणि 0.05-credit किमान प्रत्येक विनंतीला लागू होते, प्रत्येक इनपुटला नाही, म्हणून एका विनंतीमध्ये अनेक मजकूर बॅच करणे ते एका वेळी एक पाठवण्यापेक्षा खूपच स्वस्त आहे.
प्रतिक्रिया
{
"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 }
}
| स्थिती. | कधी |
|---|---|
400 | कोणतेही इनपुट किंवा रिकामे नाही; टोकन अॅरे (token_input_unsupported); 100 पेक्षा अधिक प्रवेश (too_many_inputs); मॉडेल घेण्यापेक्षा जास्त वेळ लागणारे इनपुट (input_too_long); एक आकार मॉडेल देऊ शकत नाही (unsupported_dimensions). |
402 | मानक शिल्लक खूप कमी आहे. एम्बेडिंग कधीही प्रो शिल्लक वापरत नाही. |
404 | त्या नावाने मॅडम नको. |
502 | मॉडेल अयशस्वी झाले. काहीही शुल्क आकारले जात नाही. |
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);