জ্ঞানের ভিত্তি বিকাশকারী
ছবি, অডিও এবং এম্বেডিং
অ্যাপ্লিকেশন থেকে জেনারেটর এবং অনুসন্ধানের জন্য বিল্ডিং ব্লকগুলি: ছবি, ভিডিও, বক্তৃতা, ট্রান্সক্রিপশন এবং embeddings, প্রতিটি আপনার ভারসাম্য থেকে ব্যবহারের জন্য চার্জ করা হয়।
এই পৃষ্ঠাটি সুবিধার জন্য মেশিন-অনুবাদিত। ইংরেজি মূল সংস্করণ প্রযোজ্য.
ছবি তৈরি করা হচ্ছে
একটি প্রম্পট থেকে এক থেকে চারটি ছবি তৈরি করে এবং কাজ শেষ হলে সেগুলি ফেরত দেয়। এটি জেনারেটরের একই সেট। ?image অ্যাপে।
POST https://nymbot.ai/api/v1/images/generations - একটি API কী প্রয়োজন, অথবা প্রতি অনুরোধে একটি বিদ্যুতের অর্থ প্রদান.
আইসিসি আসে 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. ডিফল্ট 1. এছাড়াও হিসাবে গ্রহণ num_images. |
size | স্ট্রিং | না | যেমন একটি তুলনামূলক দিক "16:9"অথবা যেমন একটি উন্মুক্ত আকারের "1792x1024", যা ১:১, ১৬:৯, ৯:১৬, ৪:৩, ৩:৪, ৩:২, ২:৩, ২১:৯, ৫:৪ এবং ৪:৫ এর কাছাকাছি। "auto" জেনারেটরের কাছে রাখুন। |
aspect_ratio | স্ট্রিং | না | একই রকম। sizeউভয়কেই জিতলে জিতবে। |
quality | স্ট্রিং | না | জেনারেটর-নির্দিষ্ট, যেমন "low", "medium" অথবা "high". |
negative_prompt | স্ট্রিং | না | কি বাদ দিতে হবে। |
output_format | স্ট্রিং | না | "png", "jpeg" অথবা "webp". |
response_format | স্ট্রিং | না | "url" (ডিফল্ট) অথবা "b64_json". |
image_url | স্ট্রিং | না | শুরু করার জন্য একটি ছবিঃ একটি https:// সর্বোচ্চ 4,096 চরিত্রের লিঙ্ক, যেখানে কোনও ব্যবহারকারীর নাম বা পাসওয়ার্ড নেই, অথবা data:image/…;base64 URL (PNG, JPEG, WebP বা GIF; SVG নয়)। editযাদের প্রয়োজন requires_image_url. |
resolution ব্যবহার করা হয় না: প্রতিটি জেনারেটর তার নিজস্ব আকার তৈরি করে। urlপ্রতিটি ছবি একটি সর্বজনীন ব্লসম হোস্টে আপলোড করা হয় এবং আপনি তার লিঙ্ক পাবেন (কয়েকটি জেনারেটর কেবল তাদের নিজস্ব একটি লিঙ্ক ফিরিয়ে দেয়, যা পাস করা হয়)। লিঙ্ক সহ যে কেউ এটি খুলতে পারে এবং এটি আবার নামানো যাবে না; দেখুন এপিআই কি দেখতে পারেসঙ্গে।
b64_json ছবিটি প্রতিক্রিয়ায় ফিরে আসে এবং কখনই আপলোড করা হয় না। একটি ছবি হিসাবে পাঠানো হয় data: ইউ. আর. এল. image_url একটি হিসাবে একই ভাবে চেক করা হয়
Edit এবং প্রথমে ব্লসমে আপলোড করা হয় যাতে জেনারেটর এটি আনতে পারে; অনুরোধটি বিল না দিলে এটি আবার মুছে ফেলা হয়।
যদি কিছু 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);
ছবি সম্পাদনা
আপলোড করা একটি ইমেজ পরিবর্তন করে, একটি অনুরোধ অনুসরণ করে. এটি OpenAI এর সম্পাদনা চূড়ান্ত পয়েন্ট, তাই OpenAI SDKs ' images.edit শুধুমাত্র প্রো জেনারেটরগুলির সাথে edit মডেল তালিকায় এটি গ্রহণ করুন।
POST https://nymbot.ai/api/v1/images/edits - একটি API কী প্রয়োজন, অথবা প্রতি অনুরোধে একটি বিদ্যুতের অর্থ প্রদানশরীরটি হচ্ছে multipart/form-data৩২ এমবি পর্যন্ত
| মাঠ | প্রকার | প্রয়োজন। | বর্ণনা |
|---|---|---|---|
image | ফাইল | হ্যাঁ | সম্পাদনা করা ইমেজ: PNG, JPEG, WebP বা GIF, 20 এমবি পর্যন্ত। image[]প্রথমটি ব্যবহার করা হয়েছে। |
prompt | স্ট্রিং | হ্যাঁ | কি পরিবর্তন করতে হবে। |
model | স্ট্রিং | হ্যাঁ | সঙ্গে একটি জেনারেটর edit. |
n | অন্তর্ভুক্ত | না | ১ থেকে ৪। |
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 এমবি এর বেশি। |
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 - একটি API কী প্রয়োজন, অথবা প্রতি অনুরোধে একটি বিদ্যুতের অর্থ প্রদানফেরত 202.
| মাঠ | প্রকার | প্রয়োজন। | বর্ণনা |
|---|---|---|---|
model | স্ট্রিং | হ্যাঁ | একটি ভিডিও জেনারেটর ID থেকে GET /api/v1/models?type=videoযেমন veo. |
prompt | স্ট্রিং | হ্যাঁ | কী হওয়া উচিত |
duration | সংখ্যা বা স্ট্রিং | না | দৈর্ঘ্য সেকেন্ডে, 0 এর চেয়ে বেশি এবং 60 পর্যন্ত। শুধুমাত্র জেনারেটরগুলি ব্যবহার করে যা আপনাকে দৈর্ঘ্য নির্বাচন করতে দেয়; অন্যরা তাদের স্বাভাবিক দৈর্ঘ্য তৈরি করে, যা seconds প্রতিক্রিয়া এবং মূল্য অনুসরণ করে। |
aspect_ratio | স্ট্রিং | না | যেমন - "16:9" অথবা "9:16"যেমন একটি আকারের "1280x720" সবচেয়ে নিকটবর্তী রূপান্তর। |
resolutionquality | স্ট্রিং | না | জেনারেটরের একটি resolutions মডেল তালিকায়, যেমন "720p" অথবা "1080p"এটি দাম নির্ধারণ করে। অন্য যে কোনও কিছুর সাথে প্রত্যাখ্যান করা হয় unsupported_resolution. |
image_url | স্ট্রিং | না | শুরু করার জন্য একটি ছবিঃ একটি https:// লিঙ্ক অথবা একটি data:image/… URL, যা প্রথমে একটি পাবলিক Blossom হোস্ট আপলোড করা হয়। 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 সেকেন্ডে জিজ্ঞাসা করুন. প্রতিটি চেক প্রদানকারীর কাছে একবার জিজ্ঞাসা করে এবং একই সময়ে উত্তর দেয়; এটি ভিডিওটির জন্য কখনো অপেক্ষা করে না।
GET /api/v1/videos চাবির শেষ ৫০টি চাকরির তালিকা
{"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 | দৈর্ঘ্য 0 থেকে 60 (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 OpenAI SDKs কাজ করে।
POST https://nymbot.ai/api/v1/audio/speech - একটি API কী প্রয়োজন, অথবা প্রতি অনুরোধে একটি বিদ্যুতের অর্থ প্রদান.
| মাঠ | প্রকার | প্রয়োজন। | বর্ণনা |
|---|---|---|---|
model | স্ট্রিং | না | থেকে একটি বক্তৃতা মডেল অডিও মডেলের তালিকাডিফল্ট: স্ট্যান্ডার্ড ভয়েস @cf/myshell-ai/melotts. aura-2 দীপগ্রাম আউরা 2। |
input | স্ট্রিং | হ্যাঁ | টেক্সট পড়তে হবে: স্ট্যান্ডার্ড ভয়েসের জন্য 800 অক্ষর, Aura 2 এর জন্য 2,000। |
voice | স্ট্রিং | না | ভয়েস আইডি থেকে কণ্ঠস্বরের তালিকা: যেমন একটি aura speaker luna (অথবা aura-2-luna-en), অথবা একটি মেলোটিটিএস ভাষা (en, es, fr, zh). ওপেনএআই কণ্ঠস্বরের নাম যেমন alloy গৃহীত হয় এবং মডেলের ডিফল্ট ভয়েস দেয়। |
language | স্ট্রিং | না | একটি ভাষা কোড যেমন esএকটি কণ্ঠ ছাড়া, এটি সেই ভাষার জন্য একটি বেছে নেয়. একটি কণ্ঠ যা অন্য ভাষায় কথা বলে 422 voice_language_mismatch, এবং একটি ভাষা যাতে মডেলের কোনও কণ্ঠ নেই 422 unsupported_language. |
response_format | স্ট্রিং | না | স্বাভাবিক শব্দ ফিরে আসে mp3 Aura 2 ফিরে আসে mp3 (পরের সংবাদ) দুর্বলতা opus, aac, flac, wav অথবা pcm. |
speed | সংখ্যা | না | গ্রহণ করা ও অবহেলা করা। |
স্ট্যান্ডার্ড ভয়েস একটি ফ্ল্যাট 3 স্ট্যান্ডার্ড ক্রেডিট (30 sats) একটি অনুরোধ খরচ করে, অ্যাপ্লিকেশন হিসাবে।
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);
টেক্সটের বক্তব্য
একটি রেকর্ডকে শব্দে রূপান্তরিত করে। এটি OpenAI এর ট্রান্সকিপশন এন্ডপয়েন্ট।
audio.transcriptions.create কাজ করে।
POST https://nymbot.ai/api/v1/audio/transcriptions - একটি API কী প্রয়োজন, অথবা প্রতি অনুরোধে একটি বিদ্যুতের অর্থ প্রদানশরীরটি হচ্ছে multipart/form-data.
| মাঠ | প্রকার | প্রয়োজন। | বর্ণনা |
|---|---|---|---|
file | ফাইল | হ্যাঁ | রেকর্ডিং, 256 বাইট থেকে 25 মেগাবাইট এবং 30 মিনিট পর্যন্ত: WAV, WebM, MP4 বা M4A, Ogg বা Opus, MP3 এবং অন্যান্য ফরম্যাটগুলি Whisper পড়তে পারে। |
model | স্ট্রিং | না | ত্রুটি whisperএছাড়াও এটি একটি Whisper Large v3 Turbo। whisper-1, whisper-large-v3-turbo এবং @cf/openai/whisper-large-v3-turbo মানে একই। |
language | স্ট্রিং | না | যেমন ভাষা, যেমন enচিহ্নিত হলে বেরিয়ে যান। |
prompt | স্ট্রিং | না | শব্দ বা কথোপকথন, যেমন নাম. শুধুমাত্র প্রথম 1000 চরিত্র ব্যবহার করা হয়. |
response_format | স্ট্রিং | না | json (পরের সংবাদ) দুর্বলতা text, srt, vtt অথবা verbose_json. |
WAV, WebM, MP4 এবং Ogg ফাইলের জন্য, দৈর্ঘ্যটি ফাইলটি চালানোর আগে পড়া হয়, তাই 30 মিনিটেরও বেশি রেকর্ডিং সামনে থেকে অস্বীকার করা হয় (৩ সেকেন্ডের সাহায্যে)। একটি WAV ফাইলের দৈর্ঘ্য তার নমুনা হার, চ্যানেল এবং নমুনা আকার থেকে আসে। MP3 এর মতো অন্যান্য ফরম্যাটের দৈর্ঘ্য সামনে পড়া যাবে না, তাই তারা আকার দ্বারা সীমাবদ্ধ: সর্বনিম্ন বিটিআরটিতে Nymbot অনুমান করে, 8 kbps, 30 মিনিট 1.8 এমবি এবং এই ধরনের ফরম্যাটের একটি বৃহত্তর ফাইলটি অস্বীকার করা হয় 413
audio_too_long কোনও কিছু চালানোর আগে. WAV, WebM, MP4 বা Ogg হিসাবে দীর্ঘ রেকর্ড পাঠান. যদি Whisper তারপর 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 MB এর বেশি (file_too_large) অথবা 30 মিনিটের বেশি রেকর্ডিং বা, যার দৈর্ঘ্য সামনে পড়া যাবে না, 1.8 মেগাবাইট (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 - একটি API কী প্রয়োজন, অথবা প্রতি অনুরোধে একটি বিদ্যুতের অর্থ প্রদানশরীরটি হচ্ছে 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 - একটি API কী প্রয়োজন, অথবা প্রতি অনুরোধে একটি বিদ্যুতের অর্থ প্রদান.
| মাঠ | প্রকার | প্রয়োজন। | বর্ণনা |
|---|---|---|---|
model | স্ট্রিং | হ্যাঁ | একটি অন্তর্নির্মিত মডেল থেকে GET /api/v1/models?type=embedding. |
input | string অথবা array | হ্যাঁ | পাসওয়ার্ডের অন্তর্ভুক্ত পাসওয়ার্ডের অন্তর্ভুক্ত পাসওয়ার্ডের অন্তর্ভুক্ত পাসওয়ার্ড (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 টোকেন |
মডেল তালিকাটি সত্যের উৎস যেগুলি উপলব্ধ এবং তারা কত খরচ করে; গুগলের EmbeddingGemma, অনুরোধের উপর সংক্ষিপ্ত ভেক্টরগুলির সাথে, সেখানেও প্রদর্শিত হয় যখন ক্যাটালগে এর জন্য একটি মূল্য রয়েছে।
প্রতিক্রিয়া
{
"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 | স্ট্যান্ডার্ড ভারসাম্য খুবই কম. Embeddings কখনো প্রো ভারসাম্য ব্যবহার করে না। |
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);