বিষয়বস্তু এড়িয়ে যান
ফিরে আসুন Nymbot

জ্ঞানের ভিত্তি বিকাশকারী

ছবি, অডিও এবং এম্বেডিং

অ্যাপ্লিকেশন থেকে জেনারেটর এবং অনুসন্ধানের জন্য বিল্ডিং ব্লকগুলি: ছবি, ভিডিও, বক্তৃতা, ট্রান্সক্রিপশন এবং 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অন্তর্ভুক্তনা১ থেকে ৪।
size
aspect_ratio
quality
negative_prompt
output_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" সবচেয়ে নিকটবর্তী রূপান্তর।
resolution
quality
স্ট্রিংনাজেনারেটরের একটি 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.
inputstring অথবা arrayহ্যাঁপাসওয়ার্ডের অন্তর্ভুক্ত পাসওয়ার্ডের অন্তর্ভুক্ত পাসওয়ার্ডের অন্তর্ভুক্ত পাসওয়ার্ড (token_input_unsupported) প্রতিটি ইনপুট মডেলের সাথে মিলিত হওয়া উচিত context_lengthযার ফলে চারটি বাটন এক টোকেনের মতো।
encoding_formatস্ট্রিংনাfloat (ডিফল্ট) অথবা base64 (লিটল-এন্ডিয়ান 32-বিট ভাসমান)।
dimensionsঅন্তর্ভুক্তনামডেলের নিজস্ব আকার, অথবা একটি মডেলের জন্য supported_dimensions এর মধ্যে একটি; ভেক্টর তারপর সংক্ষিপ্ত এবং স্বাভাবিক করা হয়। অন্য কিছু প্রত্যাখ্যান করা হয়।
মডেলমাত্রাপ্রসঙ্গ
@cf/baai/bge-m31024 বিভিন্ন ভাষায়8, 192 টোকেন
@cf/qwen/qwen3-embedding-0.6b1024 বিভিন্ন ভাষায়8, 192 টোকেন
@cf/baai/bge-large-en-v1.51024 ইংরেজি512 টোকেন
@cf/baai/bge-base-en-v1.5768, ইংরেজি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);