सामग्री पर जाएं
निम्बॉट पर वापस जाएँ

ज्ञानधार डेवलपर्स

छवियां, ऑडियो और embeddings

ऐप से जनरेटर, और खोज के लिए निर्माण खंडः चित्र, वीडियो, भाषण, प्रतिलेखन और एम्बेडिंग, प्रत्येक आपके शेष राशि से प्रति उपयोग बिल।

छवियों का निर्माण

एक प्रिंट से एक से चार चित्र बनाता है और जब वे पूरा हो जाते हैं तो उन्हें वापस देता है। ?image ऐप में।

POST https://nymbot.ai/api/v1/images/generations - एक API कुंजी की आवश्यकता होती है, या अनुरोध पर एक Lightning भुगतान.

आईएस से आते हैं GET /api/v1/models?type=imageएक सामान्य जनरेटर, @cf/black-forest-labs/flux-1-schnell, एक तस्वीर के लिए एक सपाट 5 मानक क्रेडिट (50 सैट्स) खर्च करता है। प्रत्येक अन्य जनरेटर अपने स्वयं के मूल्य पर प्रो क्रेडिट खर्च करता है, सामान्य शुल्क और मार्जिन के साथ, जैसा कि नीचे दिया गया है। ऐप. n चित्रों की लागत n एक क्षेत्र जो एक जनरेटर नहीं लेता है, उसे अस्वीकार करने के बजाय गिरा दिया जाता है; मानक जनरेटर केवल संकेत का उपयोग करता है।

मैदानप्रकारजरूरी है।वर्णन
modelस्ट्रिंगहाँएक जनरेटर आईडी, जैसे कि nano-banana.
promptस्ट्रिंगहाँक्या खींचना है। केवल पहले 2,000 वर्णों का उपयोग किया जाता है।
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 यू. आर. एल. (पी. एन. जी., जे. पी. ई. जी., वेब. पी. या जी. आई. एफ.; एस. वी. जी. नहीं)। edit; जिनके साथ आवश्यक है requires_image_url.

resolution उपयोग नहीं किया जाता है: प्रत्येक जनरेटर अपना आकार बनाता है। url, प्रत्येक छवि को एक सार्वजनिक Blossom होस्ट पर अपलोड किया जाता है और आपको इसकी लिंक मिलती है (कुछ जनरेटर केवल अपने स्वयं के लिंक को वापस देते हैं, जो जारी किया जाता है). लिंक के साथ कोई भी इसे खोल सकता है और इसे फिर से डाउनलोड नहीं किया जा सकता; देखें आग क्या देखती हैके साथ। b64_json चित्र प्रतिक्रिया में वापस आता है और कभी अपलोड नहीं किया जाता है। data: यू. आर. एल. 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);

तस्वीरें संपादित करें

एक निर्देश के बाद आप अपलोड की गई एक छवि को बदलता है. यह OpenAI का संपादित अंत बिंदु है, इसलिए OpenAI SDKs images.edit जैसा है वैसा ही काम करता है। केवल प्रो जनरेटर के साथ edit मॉडल सूची में इसे स्वीकार करें।

POST https://nymbot.ai/api/v1/images/edits - एक API कुंजी की आवश्यकता होती है, या अनुरोध पर एक Lightning भुगतान. शरीर है multipart/form-data32 एमबी तक।

मैदानप्रकारजरूरी है।वर्णन
imageफाइलहाँसंपादित करने के लिए छवि: PNG, JPEG, WebP या GIF, 20 MB तक। image[]; पहला उपयोग किया जाता है।
promptस्ट्रिंगहाँक्या बदलना है।
modelस्ट्रिंगहाँएक जनरेटर के साथ edit.
nपूर्णांकनहीं।1 से 4 तक।
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 कुंजी की आवश्यकता होती है, या अनुरोध पर एक Lightning भुगतान. वापसी। 202.

मैदानप्रकारजरूरी है।वर्णन
modelस्ट्रिंगहाँसे एक वीडियो जनरेटर आईडी 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 सेकंड में पूछें। प्रत्येक चेक प्रदाता से एक बार पूछता है और तुरंत जवाब देता है; यह कभी भी वीडियो की प्रतीक्षा नहीं करता है। एक नौकरी जमा करने के बाद 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तैयार वीडियो एक सार्वजनिक ब्लॉसम होस्ट पर है, जैसे उत्पन्न चित्र।

स्थितिजब
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 ओपनएआई एसडीके में काम करता है।

POST https://nymbot.ai/api/v1/audio/speech - एक API कुंजी की आवश्यकता होती है, या अनुरोध पर एक Lightning भुगतान.

मैदानप्रकारजरूरी है।वर्णन
modelस्ट्रिंगनहीं।से एक भाषण मॉडल ऑडियो मॉडल सूचीपूर्वनिर्धारित रूप सेः मानक आवाज, @cf/myshell-ai/melotts. aura-2 दीपग्राम औरा 2 है।
inputस्ट्रिंगहाँपढ़ने के लिए पाठ्यः मानक आवाज के लिए 800 वर्ण तक, ऑरा 2 के लिए 2,000।
voiceस्ट्रिंगनहीं।एक Voice ID से वोटों की सूची: एक ऑरा स्पीकर जैसे 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 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 Aura 2 अंग्रेजी बोलने वालों और चार MeloTTS भाषाओं.

GET https://nymbot.ai/api/v1/audio/models - किसी चाबी की जरूरत नहीं है।

GET https://nymbot.ai/api/v1/audio/voices?language=en - किसी चाबी की जरूरत नहीं है।

मैदानप्रकारजरूरी है।वर्णन
languageसॉफ्टवेयर (query)नहीं।इस भाषा के लिए केवल आवाजें हैं।
modelसॉफ्टवेयर (query)नहीं।केवल इस मॉडल के लिए आवाजें।

प्रतिक्रियाएं (Voices)

{
  "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 कुंजी की आवश्यकता होती है, या अनुरोध पर एक Lightning भुगतान. शरीर है 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स्ट्रिंगनहीं।उम्मीद करने के लिए शब्द या वर्णन, जैसे नाम। केवल पहले 1,000 वर्णों का उपयोग किया जाता है।
response_formatस्ट्रिंगनहीं।json (डिफ़ॉल्ट), text, srt, vtt या verbose_json.

डब्ल्यू. ए. वी., वेब. एम., एम. पी. 4 और ओ. जी. जी. फाइलों के लिए कुछ भी चलने से पहले फाइल से लंबाई पढ़ी जाती है, इसलिए 30 मिनट से अधिक की रिकॉर्डिंग को सामने से अस्वीकार कर दिया जाता है (3 सेकंड के अनुग्रह के साथ)। एक डब्ल्यू. ए. वी. फाइल की लंबाई इसकी नमूना दर, चैनलों और नमूना आकार से आती है। अन्य प्रारूपों की लंबाई, जैसे कि एम. पी. 3, को सामने से नहीं पढ़ा जा सकता है, इसलिए वे आकार द्वारा सीमित हैंः सबसे कम बिट दर पर निम्बॉट मानता है, 8 के. बी. पी. एस., 30 मिनट 1.8 एमबी है, और इस तरह के प्रारूप में एक बड़ी फाइल को इसके साथ अस्वीकार कर दिया जाता है। 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 एमबी से अधिक (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 कुंजी की आवश्यकता होती है, या अनुरोध पर एक Lightning भुगतान. शरीर है 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 कुंजी की आवश्यकता होती है, या अनुरोध पर एक Lightning भुगतान.

मैदानप्रकारजरूरी है।वर्णन
modelस्ट्रिंगहाँसे एक एम्बेडिंग मॉडल GET /api/v1/models?type=embedding.
inputस्ट्रिंग या स्ट्रिंग की सरणीहाँअनुच्छेद के अनुच्छेद के अनुच्छेद के अनुच्छेद के अनुच्छेद के अनुच्छेद के अनुच्छेद के अनुच्छेद (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.5384, अंग्रेजी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);