বিষয়বস্তুলৈ যাওক
নিম্বটলৈ ঘূৰি যাওক

জ্ঞানৰ ভিত্তি ডেভেলপাৰ্ছবৃন্দ

ছবি, অডিঅ' আৰু এমবেডিংছ

এপটোৰ পৰা জেনেৰেটৰসমূহ, আৰু সন্ধানৰ বাবে প্ৰয়োজনীয় উপাদানসমূহ: ছবি, ভিডিঅ', ভাষণ, লিপ্যন্তৰ আৰু এমবেডিংছ (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 চেট) খৰচ হয়। আন প্ৰতিটো জেনেৰেটৰে নিজৰ মূল্যত প্ৰ'ক্ৰেডিট খৰচ কৰে, সাধাৰণ মাচুল আৰু মাৰ্জিনৰ সৈতে, যেনেকৈ এপটো. n ছবিৰ দাম n গুণ বেছি। এটা জেনেৰেটৰে ল'ব নোৱাৰা এটা ক্ষেত্ৰক নাকচ কৰাৰ পৰিৱৰ্তে বাদ দিয়া হয়; মানক জেনেৰেটৰে কেৱল প্ৰমপ্ট ব্যৱহাৰ কৰে।

ক্ষেত্ৰখনধৰণপ্ৰয়োজনীয়বৰ্ণনা
modelশাৰীহয়এটা জেনৰেটৰ আইডি, যেনে nano-banana.
promptশাৰীহয়কি অংকন কৰিব লাগে। কেৱল প্ৰথম ২,০০০টা চৰিত্ৰ ব্যৱহাৰ কৰা হয়।
nপূৰ্ণসংখ্যানাই।1ৰ পৰা 4. অবিকল্পিত 1। লগতে এই হিচাপেও গ্ৰহণ কৰা হয় 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:// কোনো ব্যৱহাৰকাৰীৰ নাম বা পাছৱৰ্ড নথকা সৰ্বাধিক 4,096টা আখৰৰ লিংক, বা data:image/…;base64 URL (PNG, JPEG, WebP বা GIF; SVG নহয়)। কেৱল generator ৰ বাবে যিবোৰৰ আছে edit; যাৰ বাবে প্ৰয়োজন requires_image_url.

resolution ব্যৱহাৰ কৰা হোৱা নাই: প্ৰতিটো জেনেৰেটৰে নিজৰ আকাৰ নিজে তৈয়াৰ কৰে।ৰ সৈতে url, প্ৰতিখন ছবি এটা ৰাজহুৱা Blossom হোস্টত আপলোড কৰা হয় আৰু আপুনি ইয়াৰ লিংক লাভ কৰে (অকল কেইটামান জেনেৰেটৰেহে নিজৰ লিংক দিয়ে, যিটো আগবঢ়োৱা হয়)। লিংকটো থকা যিকোনো ব্যক্তিয়ে ইয়াৰ ওপৰত খোল খাব পাৰে আৰু ইয়াক পুনৰ আঁতৰাব নোৱাৰি; চাওক এপিআইয়ে কি চাব পাৰেৰ সৈতে b64_json প্ৰতিটো উত্তৰত ছবিখন ঘূৰি আহে আৰু কেতিয়াও আপলোড নহয়। এজনৰ দ্বাৰা পঠোৱা ছবিখন data: ভিতৰৰ ইউ. আৰ. এল. image_url এটাৰ দৰেই পৰীক্ষা কৰা হয় এটাৰ দৰে সমন্বয় কৰক আৰু প্ৰথমে Blossom-লৈ আপলোড কৰা হয় যাতে generator-এ ইয়াক সংগ্ৰহ কৰিব পাৰে; যদি request-টো বিলবিহীনভাৱে বিফল হয়, তেন্তে ইয়াক পুনৰ মচি পেলাওা হয়।

যদি কিছুমানৰ 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 বাহিৰত ১ ৰ পৰা ৪ (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 SDK's images.edit যিদৰে আছে তেনেকৈয়ে কাম কৰে। কেৱল Pro জেনেৰেটৰবোৰৰ সৈতে edit মডেল তালিকাত ইয়াক গ্ৰহণ কৰক।

POST https://nymbot.ai/api/v1/images/edits - এটা এ. পি. আই. চাবিৰ প্ৰয়োজন, বা প্ৰতি অনুৰোধতে এটা লাইটনিং পেমেন্ট. শৰীৰটো হ'ল multipart/form-data, ৩২ MB পৰ্যন্ত।

ক্ষেত্ৰখনধৰণপ্ৰয়োজনীয়বৰ্ণনা
imageফাইলহয়সম্পাদনা কৰিব লগা ছবিঃ পি. এন. জি., জে. পি. ই. জি., ৱেব. পি. বা জি. আই. এফ., 20 এম. বি. লৈকে। image[]; প্ৰথমটো ব্যৱহাৰ কৰা হয়।
promptশাৰীহয়কি পৰিৱৰ্তন কৰিব লাগে।
modelশাৰীহয়এটা জেনেৰেটৰৰ সৈতে edit.
nপূৰ্ণসংখ্যানাই।1ৰ পৰা 4।
size
aspect_ratio
quality
negative_prompt
output_format
শাৰীনাই।প্ৰজন্মৰ ক্ষেত্ৰত।
response_formatশাৰীনাই।"b64_json" (ইয়াত ডিফল্ট) অথবা "url".

আপুনি আপলোড কৰা ছবিখন ভালদৰে গঠন কৰা পি. এন. জি., জে. পি. ই. জি., ৱেব. পি. বা জি. আই. এফ. বুলি পৰীক্ষা কৰা হয়, যাক ইয়াৰ প্ৰকৃত প্ৰকাৰ হিচাপে প্ৰেৰণ কৰা হয়, আৰু এটা ৰাজহুৱা ব্লছম হোষ্টত ৰখা হয়, কাৰণ জেনেৰেটৰসমূহে লিংকৰ জৰিয়তে তেওঁলোকৰ ইনপুট প্ৰাপ্ত কৰে। ইয়াক ৰাজহুৱা বুলি গণ্য কৰক। যদি সম্পাদনা বিফল হয় আৰু একো মাচুল লোৱা নহয়, তেন্তে হোষ্ট কৰা কপিটো পুনৰ মচি পেলোৱা হয়। প্ৰতিক্ৰিয়াটো প্ৰজন্মৰ বাবে একে আকৃতিৰ হয়। মূল্য হৈছে জেনেৰেটৰৰ মূল্য, য'ত কিছুমান জেনেৰেটৰৰ বাবে ইনপুট ছবিৰ বাবে মাচুল অন্তৰ্ভুক্ত থাকে।

প্ৰতিক্ৰিয়া

{
  "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ছবিখন ২০ MB তকৈও বেছি (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"));

ভিডিঅ "

এটা ভিডিঅ' বনাবলৈ মিনিটমান সময় লাগে, গতিকে ই পটভূমিত (background) চলি থাকে। আপুনি ইয়াৰ বাবে আবেদন কৰিলে তৎক্ষণাৎ এটা আইডি (id) পোৱা যায়, আৰু কামটো সম্পূৰ্ণ নোহোৱালৈকে সেই আইডিটোৰ বিষয়ে সুধি থাকিব পাৰি। প্ৰতিটো ভিডিঅ' জেনেৰেটৰে Pro বেলেঞ্চ (balance) খৰচ কৰে।

POST https://nymbot.ai/api/v1/videos - এটা এ. পি. আই. চাবিৰ প্ৰয়োজন, বা প্ৰতি অনুৰোধতে এটা লাইটনিং পেমেন্ট. প্ৰত্যাৱৰ্তন কৰে 202.

ক্ষেত্ৰখনধৰণপ্ৰয়োজনীয়বৰ্ণনা
modelশাৰীহয়এজন ভিডিঅ' জেনৰেটৰৰ পৰা আইডি (ID) GET /api/v1/models?type=video, যেনে veo.
promptশাৰীহয়কি হোৱা উচিত।
durationসংখ্যা নে ষ্ট্ৰিংনাই।ছেকেণ্ডত দৈর্ঘ্য, ০ भन्दा অধিক আৰু ৬০ লৈকে। কেৱল সেইবোৰ জেনেৰেটৰৰ দ্বাৰা ব্যৱহৃত যিবোৰত আপুনি দৈর্ঘ্য বাছনি কৰিব পাৰে; আনবোৰে তেওঁলোকৰ সাধাৰণ দৈর্ঘ্য তৈয়াৰ কৰে, যিটো হ'ল কি seconds প্ৰতিক্ৰিয়া আৰু মূল্য অনুসৰণ কৰক।
aspect_ratioশাৰীনাই।যেনে - "16:9" বা "9:16"এটা আকাৰ যেনে "1280x720" নিকটতম অনুপাত হৈ পৰে।
resolution
quality
শাৰীনাই।জেনাৰেটৰটোৰ এটা resolutions মডেলৰ তালিকাখনত, যেনে যে "720p" বা "1080p"ই ইয়াৰ মূল্য নিৰ্ধাৰণ কৰে। ইয়াৰ বাহিৰে আন যিকোনো কথাতে অস্বীকাৰ জনোৱা হয়। unsupported_resolution.
image_urlশাৰীনাই।এটা ছবিৰে পৰা আৰম্ভ কৰিবলৈ: এখন https:// লিংক বা এ data:image/… ইউ. আৰ. এল., যিটো প্ৰথমে ৰাজহুৱা ব্লছম হোষ্টত আপলোড কৰা হয়। জেনেৰেটৰৰ দ্বাৰা প্ৰয়োজনীয় requires_image_url.

জেনেৰেটৰ, ৰিজলিউচন আৰু দৈৰ্ঘ্যৰ ভিত্তিত আপুনি জমা দিয়াৰ সময়তে মূল্য নিৰ্ধাৰণ কৰা হয়, গতিকে প্ৰদানকাৰীয়ে কামটো গ্ৰহণ কৰাৰ লগে লগে আপোনাৰ Pro বেলেঞ্চৰ পৰা ইয়াৰ মূল্য কাটি লোৱা হয় আৰু এনেদৰে দেখুওৱা হয়। cost, estimated_cost আৰু nymbotযদি প্ৰদানকাৰাই কামটোতে অস্বীকাৰ কৰে, তেন্তে কোনো মাচুল লগোৱা নহয়। যদি পাছত ৰেণ্ডাৰ (render) বিফল হয়, বা সম্পূৰ্ণ ক্লিপটো সঞ্চয় কৰিব নোৱাৰা হয় আৰু প্ৰদানকাৰীয়ে ইয়াৰ বাবে বিল নিদিয়ে, তেন্তে মাচুলটো এবাৰ স্বয়ংক্ৰিয়ভাৱে প্ৰত্যাৱৰ্তন (refund) কৰা হয়। এঘণ্টাৰ পিছতো যি ৰেণ্ডাৰ চলি থাকে তাক বাদ দিয়া হয় আৰু ইয়াৰ মাচুল ধৰি ৰখা হয়, কাৰণ প্ৰদানকাৰীয়ে ৰেণ্ডাৰটো গ্ৰহণ কৰাৰ লগে লগে বিল낸 কৰে। প্ৰত্যাৱৰ্তনে (refund) ক্ৰেডিটসমূহ ঘূৰাই দিয়ে কিন্তু চাবিৰ (key) খৰচৰ সংখ্যা হ্ৰাস নকৰে।

প্ৰতিক্ৰিয়া (২০২)

{
  "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} — ই সেই nym ৰ এটা চাবিৰ প্ৰয়োজন যিয়ে ইয়াক জমা দিছিল। যিটো চাবিৰ নিজৰ সীমা অতিক্ৰম কৰিছে, সেয়াও পৰীক্ষা কৰিব পাৰে।

ই উত্তৰ দিয়ে 202 ভিডিঅ'টো তৈয়াৰ কৰা হৈ থকাৰ সময়ত আৰু 200 যেতিয়া ই সম্পূৰ্ণ হয় বা বিফল হয়। প্ৰতি ৫ ৰ পৰা ১০ ছেকেণ্ডৰ মূৰে মূৰে সুধক। প্ৰতিটো পৰীক্ষাই প্ৰদানকাৰকক এবাৰ সুধিব আৰু একেবাৰে উত্তৰ দিব; ই কেতিয়াও ভিডিঅ'ৰ বাবে অপেক্ষা নকৰে। এটা কাম জমা দিয়াৰ পাছত ২৪ ঘণ্টাৰ বাবে ৰখা হয়। 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": …}); যদি ই ৰিফাণ্ড (refunded) কৰা হৈছিল, cost ০ আৰু nymbot যোগ কৰা হয় refunded_credits আৰু refunded_satsসম্পূৰ্ণ ভিডিঅ'টো এটা ৰাজহুৱা Blossom host-ত আছে, যেনেকৈ তৈয়াৰ কৰা ছবিবোৰ থাকে।

স্থিতিকেতিয়া
400কোনো প্ৰমপ্ট নাই; 0ৰ পৰা 60ৰ বাহিৰৰ সময়কাল (invalid_value); এটা ৰিজলিউচন যিটো জেনাৰেটৰে আগবঢ়া নাই (unsupported_resolution); এটা জেনেৰেটৰৰ বাবে ছবি নাই যাৰ এটাৰ প্ৰয়োজন আছে (image_required); এটা মডেল যিটো ভিডিঅ'জেনেৰেটৰ নহয় (invalid_model).
402Pro balance-এ ভিডিঅ'টো সামৰি লব নোৱাৰিব।
404এনে কোনো জেনেৰেটৰ নাই (model_not_found), অথবা আপোনাৰ nym ৰ বাবে সেই ID টোৰে কোনো কাম নাই, অথবা ই ২৪ ঘণ্টাৰতকৈ পুৰণি (video_not_found).
429আপোনাৰ nym এ alumin ১০ টা ভিডিঅ' ৰেণ্ডাৰিং কৰি আছে (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);

বাক্যত লিখনি

টেক্সট উচ্চাৰণ কৰি পঢ়ি দিয়ে আৰু অডিঅ’ ফাইলটো নিজেই প্ৰদান কৰে, কোনো লিংক নহয়। ই OpenAI ৰ স্পীচ এণ্ডপইণ্ট, গতিকে audio.speech.create OpenAI SDK-সমূৰ ভিতৰত কাম কৰে।

POST https://nymbot.ai/api/v1/audio/speech - এটা এ. পি. আই. চাবিৰ প্ৰয়োজন, বা প্ৰতি অনুৰোধতে এটা লাইটনিং পেমেন্ট.

ক্ষেত্ৰখনধৰণপ্ৰয়োজনীয়বৰ্ণনা
modelশাৰীনাই।এটা স্পীচ মডেল ... পৰা অডিঅ'মডেলসমূহৰ তালিকা. ডিফল্ট: মানক কণ্ঠস্বৰ, @cf/myshell-ai/melotts. aura-2 Deepgram Aura 2 কি।
inputশাৰীহয়পঢ়িব লগা লিখনীঃ মানক কণ্ঠস্বৰৰ বাবে 800 আখৰলৈকে, ঔৰা 2-ৰ বাবে 2,000।
voiceশাৰীনাই।এজনৰ কণ্ঠ চিনাক্তকৰণ (voice id) আৱাজৰ তালিকাখন: যেনে এটা Aura স্পীকাৰ luna (অৰু aura-2-luna-en), বা এটা MeloTTS ভাষা (en, es, fr, zh). OpenAI কণ্ঠস্বৰৰ নামসমূহ যেনে alloy গ্ৰহণ কৰা হয় আৰু মডেলটোৰ ডিফল্ট কণ্ঠ দিয়ে।
languageশাৰীনাই।এজনে ভাষাৰ কোড যেনে esএটা কণ্ঠস্বৰ অবিহনে, ই সেই ভাষাৰ বাবে এটা বাছি লয়। আন এটা ভাষা কোৱা এটা কণ্ঠস্বৰ ঘূৰি আহে। 422 voice_language_mismatch, আৰু এটা ভাষাৰ বাবে মডেলৰ কোনো কণ্ঠ নাই 422 unsupported_language.
response_formatশাৰীনাই।সাধাৰণ কণ্ঠটো ঘূৰি আহে mp3 কেৱল। Aura 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()));

অডিঅ' মডেল আৰু কণ্ঠস্বৰসমূহ

এটা স্পীচ মডেল আৰু ভইচ, বা এটা ট্ৰান্সক্ৰিপচন মডেল বাছনি কৰাৰ বাবে দুটা ৰাজহুৱা তালিকা আছে। তাত ৪১ জন Aura 2 English speakers আৰু চাৰিটা MeloTTS ভাষা আছে।

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; transcription model টোৱে ইয়াৰ উপাধি বা বিকল্প নামবোৰ দিয়ে, 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);

লিখনিৰ সৈতে কথা-বতৰা

Whisper ব্যৱহাৰ কৰি এটা ৰেকৰ্ডিংক টেক্সটলৈ ৰূপান্তৰ কৰে। এইটো OpenAI ৰ ট্ৰান্সক্ৰিপচন এণ্ডপইণ্ট, গতিকে audio.transcriptions.create কাম কৰে।

POST https://nymbot.ai/api/v1/audio/transcriptions - এটা এ. পি. আই. চাবিৰ প্ৰয়োজন, বা প্ৰতি অনুৰোধতে এটা লাইটনিং পেমেন্ট. শৰীৰটো হ'ল multipart/form-data.

ক্ষেত্ৰখনধৰণপ্ৰয়োজনীয়বৰ্ণনা
fileফাইলহয়ৰেকৰ্ডিং, 256 বাইটৰ পৰা 25 এম. বি. লৈকে আৰু 30 মিনিটলৈকেঃ ডব্লিউ. এ. ভি., ৱেব. এম., এম. পি. 4 বা এম. 4. এ., অ'গ বা অ'পাছ, এম. পি. 3 আৰু অন্যান্য ফৰ্মেটৰ হুইস্পাৰ পঢ়ে। এম. পি. 3 আৰু অন্যান্য ফৰ্মেট যাৰ দৈৰ্ঘ্য আগলৈ পঢ়িব নোৱাৰি 1.8 এম. বি. লৈকে সীমাবদ্ধ।
modelশাৰীনাই।ডিফল্ট whisper, যিটো হৈছে Whisper Large v3 Turbo। 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.

ডব্লিউ. এ. ভি., ৱেব. এম., এম. পি. 4 আৰু ও. জি. জি. ফাইলসমূহৰ বাবে যিকোনো বস্তু চলি যোৱাৰ পূৰ্বে ফাইলৰ পৰা দৈৰ্ঘ্য পঢ়া হয়, সেয়েহে 30 মিনিটতকৈ অধিক সময়ৰ ৰেকৰ্ডিং আগলৈ নাকচ কৰা হয় (3 ছেকেণ্ডৰ অনুগ্ৰহৰ সৈতে)। এটা ডব্লিউ. এ. ভি. ফাইলৰ দৈৰ্ঘ্য ইয়াৰ নমুনাৰ হাৰ, চেনেল আৰু নমুনাৰ আকাৰৰ পৰা আহে। অন্যান্য ফৰ্মেটৰ দৈৰ্ঘ্য, যেনে এম. পি. 3, আগলৈ পঢ়িব নোৱাৰি, সেয়েহে সেইবোৰ আকাৰৰ দ্বাৰা সীমিতঃ নিম্নতম বিটৰেটত নিম্বটে ধাৰণা কৰে, 8 কে. বি. পি. এছ., 30 মিনিট হৈছে 1.8 এম. বি., আৰু এনে ফৰ্মেটৰ এটা ডাঙৰ ফাইল 413 audio_too_long যিকোনো বস্তু চলাৰ আগতে। WAV, WebM, MP4 বা Ogg হিচাপে দীঘলীয়া ৰেকৰ্ডিংসমূহ পঠাওক। যদি Whisper-এ তথাপিও ৩০ মিনিটতকৈ বেছি ৰিপৰ্ট কৰে, তেন্তে অনুৰোধটো এইবাবে নাকচ কৰা হয় 413 audio_too_long, আৰু যিহেতু হুইস্পাৰে দৌৰিছিল, 30 মিনিটৰ মাচুল লোৱা হয়।

আপুনি অডিঅ'টোৰ length-ৰ বাবে পেমেন্ট কৰিব লাগিব, যিটো ছেকেণ্ডলৈ ৰাউণ্ড আপ কৰা হ'ব: ফাইলৰ পৰা পঢ়া হোৱা সৰ্বাধিক length, Whisper-এ জনোৱা length, আৰু ফাইলৰ size-এ যিটো সৰ্বনিম্ন অনুমতি দিয়ে, Whisper-ৰ প্ৰতি-মিনিটৰ মূল্যত সাধাৰণ মাচুল আৰু মাৰ্জিনৰ সৈতে, আৰু প্ৰতিটো ৰিকোৱেষ্টত অন্ততঃ 0.05 ক্ৰেডিট। যদি মানি হোল্ড কৰিবলৈ পৰ্যাপ্ত হয় তেন্তে ই standard balance ৰ পৰা পৰিশোধ কৰা হয়, অন্যথা Pro ৰ পৰা; a 402 প্ৰতিটো বেলেন্সৰ কি কি প্ৰয়োজন হ’ব সেইটো উল্লেখ কৰে। এপটোত, এটা ভইচ মেছেজ ট্ৰান্স্ক্ৰাইব কৰা বিনামূলীয়া হ’ব পাৰে; কিন্তু API ত, ই সদায় চার্জ কৰা হয়। যদি Whisper বিফল হয়, তেন্তে একো চার্জ কৰা নহয়।

প্ৰতিক্ৰিয়া

{
  "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 ভাষা, সময়কাল আৰু সময় নিৰ্ধাৰিত খণ্ডসমূহ যোগ কৰা হৈছে। জেএছঅ "এন নোহোৱা তিনিটা খণ্ডৰ বাবে মূল্য শিৰোনামত আছে।

স্থিতিকেতিয়া
400কোনো ফাইল নাই, ব্যৱহাৰযোগ্য অডিঅ' নথকা এটা ফাইল (invalid_audio), এটা অজ্ঞাত বিন্যাস, বা এটা মডেল যি ট্ৰান্সক্ৰিপশ্যন মডেল নহয় (invalid_model).
402কোনো ভাৰসাম্যই ইয়াৰ মোকাবিলা কৰিব নোৱাৰে।
413ফাইলটো 25 এম. বি. তকৈ অধিক (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 - এটা এ. পি. আই. চাবিৰ প্ৰয়োজন, বা প্ৰতি অনুৰোধতে এটা লাইটনিং পেমেন্ট. শৰীৰটো হ'ল multipart/form-data.

অনুলিপনৰ দৰেই, একে ফিল্ডসমূহৰ সৈতে মাথোঁ language, সীমা আৰু মূল্য, কিন্তু যি ভাষাতেই কথা কোৱা হওক কেইতিয়াবাই টেক্সটটো ইংৰাজীত আহে। OpenAI SDK-সমূহে ইয়াক কল কৰে 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);

এম্বেডিংছ (Embeddings)

সন্ধান, ক্লাষ্টাৰিং আৰু ডিডুপ্লিকেচনৰ বাবে টেক্সটক ভেক্টৰলৈ ৰূপান্তৰিত কৰে। মডেলসমূহ ক্লাউডফ্লেৰত চলে আৰু মানক ভাৰসাম্য ব্যয় কৰে।

POST https://nymbot.ai/api/v1/embeddings - এটা এ. পি. আই. চাবিৰ প্ৰয়োজন, বা প্ৰতি অনুৰোধতে এটা লাইটনিং পেমেন্ট.

ক্ষেত্ৰখনধৰণপ্ৰয়োজনীয়বৰ্ণনা
modelশাৰীহয়ইয়াৰ পৰা এটা এম্বেডিং মডেল GET /api/v1/models?type=embedding.
inputষ্ট্ৰিং বা ষ্ট্ৰিংৰ এৰেহয়এম্বেড কৰিবলগীয়া পাঠ, ১০০ টা নন-এম্পটি ষ্ট্ৰিংিং (non-empty strings) পৰ্যন্ত। টোকেন অ্যারে (Token arrays) প্ৰত্যাখ্যান কৰা হয় (token_input_unsupported)। প্ৰতিটো ইনপুট মডেলৰ সৈতে খাপ খাব লাগিব। context_length, এটা টোকেনত প্ৰায় চাৰিটা বাইট হিচাপে গণনা কৰা হয়।
encoding_formatশাৰীনাই।float (অবিকল্পিত) বা base64 (সৰু-এণ্ডিয়ান 32-বিট ফ্লোট)।
dimensionsপূৰ্ণসংখ্যানাই।মডেলটোৰ নিজৰ আকাৰ, বা এটা মডেলৰ বাবে supported_dimensions সেইবোৰৰ ভিতৰত এটা; ভেক্টৰটো তাৰ পিছত চুটি কৰা হয় আৰু স্বাভাৱিক কৰা হয়। আন যিকোনো কথা অস্বীকাৰ কৰা হয়।
মডেলপৰিমাপসমূহপ্ৰসংগ
@cf/baai/bge-m3১০২৪, বহুতো ভাষা8, 192 টোকেন
@cf/qwen/qwen3-embedding-0.6b১০২৪, বহুতো ভাষা8, 192 টোকেন
@cf/baai/bge-large-en-v1.51024, ইংৰাজী512 টোকেন
@cf/baai/bge-base-en-v1.5768, ইংৰাজী512 টোকেন
@cf/baai/bge-small-en-v1.5384, ইংৰাজী512 টোকেন

কোনবোৰ উপলব্ধ আৰু কিমান দাম, তাৰ প্ৰকৃত উৎস হ’ল মডেলৰ তালিকা; Google's EmbeddingGemma, যাৰ অনুৰোধ কৰিলে চুটি ভেক্টৰ পোৱা যায়, কেটেলগত ইয়াৰ মূল্য থকা অৱস্থাত তাতো দেখা যায়। Embeddings সমূহ প্ৰতিটো ইনপুট টোকেনৰ ভিত্তিত জোখা হয়, আৰু প্ৰতিটো অনুৰোধৰ বাবে ০.০৫-ক্ৰেডিটৰ নিম্নতম সীমা প্ৰযোজ্য হয়, প্ৰতিটো ইনপুটৰ বাবে নহয়, গতিকে বহুতো টেক্সট এটা অনুৰোধত বেচ (batching) কৰি পঠোৱাটো এটা এটাকৈ পঠোৱাতকৈ বহু বেছি সুলভ।

প্ৰতিক্ৰিয়া

{
  "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মানক ভাৰসাম্যখিনি বহুত কম। এমবেডিংছসমূহে কেতিয়াও Pro ভাৰসাম্য ব্যৱহাৰ নকৰে।
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);