דלג לתוכן
בחזרה לNymbot

בסיס ידע מפתחים

תמונות, אודיו ו- Embeddings

הגנרטורים מהאפליקציה, והבניינים לחיפוש: תמונות, וידאו, דיבור, transkriptions ו- 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כל גנרטור אחר מוציא פרו קרדיטים במחיר משלו, עם התשלום הרגיל ומגבלה, כמו האפ. n תמונה עלות n שדה שאינו נלקח על ידי גנרטור נופל במקום נדחה; הגנרטור הסטנדרטי משתמש רק במדריך.

שדהסוגדרושהתיאור
modelStringכֵּןגנרטור מזהה, כגון nano-banana.
promptStringכֵּןמה לצייר: רק 2000 הדמויות הראשונות משמשות.
nאינטגרלא1 עד 4.Default 1 גם מקובל כ num_images.
sizeStringלאהיחס בין היבטים כמו "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_ratioStringלאאותו דבר כמו sizeזוכה אם שניהם נשלחים.
qualityStringלאגנרטורים ספציפיים, כגון "low", "medium" או "high".
negative_promptStringלאמה להשאיר בחוץ.
output_formatStringלא"png", "jpeg" או "webp".
response_formatStringלא"url" (הפסקת התשלום) או "b64_json".
image_urlStringלאתמונה אחת להתחיל מ: A https:// קישור של עד 4,096 תווים ללא שם משתמש או סיסמה בו, או data:image/…;base64 URL (PNG, JPEG, WebP או GIF; לא SVG). editהנדרש על ידי אלה עם requires_image_url.

resolution אין להשתמש: כל גנרטור עושה את הגודל שלו. url, כל תמונה מועברת למארח ציבורי Blossom ואתה מקבל את הקישור שלה (כמה גנרטורים רק להחזיר קישור משלהם, אשר מועבר). מה האש יכולה לראותעם b64_json התמונה חוזרת בתגובה ומעולם לא מעלה אותה. data: URL ב image_url הוא נבדק באותו אופן כמו EDIT והועלה לראשונה ל-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 עובד כמו שהוא. רק גנרטורים Pro עם edit ברשימת הדוגמאות מקבל את זה.

POST https://nymbot.ai/api/v1/images/edits זקוק למפתח API, או תשלום Lightning על פי בקשההגוף הוא multipart/form-dataעד 32 MB

שדהסוגדרושהתיאור
imageקובץכֵּןהתמונה שצריך לערוך: PNG, JPEG, WebP או GIF, עד 20 MB. image[]הראשון הוא בשימוש.
promptStringכֵּןמה לשנות
modelStringכֵּןגנרטור עם edit.
nאינטגרלא1 עד 4.
size
aspect_ratio
quality
negative_prompt
output_format
Stringלאלגבי הדור
response_formatStringלא"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 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"));

וידאו

וידאו לוקח כמה דקות, אז זה פועל ברקע. אתה שולח אותו, לקבל מזהה מיד, ושואל על זה עד שזה נגמר.

POST https://nymbot.ai/api/v1/videos זקוק למפתח API, או תשלום Lightning על פי בקשה• חזרה 202.

שדהסוגדרושהתיאור
modelStringכֵּןגנרטור וידאו ID GET /api/v1/models?type=video, כגון veo.
promptStringכֵּןמה צריך לקרות.
durationמספר או stringלאאורך בשניות, יותר מ 0 ועד 60. משמש רק על ידי גנרטורים המאפשרים לך לבחור את האורך; האחרים לעשות את האורך הרגיל שלהם, וזה מה seconds התשובה והמחיר עוקבים אחריה.
aspect_ratioStringלאכמו "16:9" או "9:16"גודל כזה כמו "1280x720" זה הופך להיות היחס הקרוב ביותר.
resolution
quality
Stringלאאחד מהגנרטורים resolutions ברשימה המלאה, כמו "720p" או "1080p"זה קובע את המחיר.כל דבר אחר מסרב עם unsupported_resolution.
image_urlStringלאתמונה אחת להתחיל מ: A https:// קישור או A data:image/… URL, אשר מעלה לראשונה למארח ציבורי Blossom, נדרש על ידי גנרטורים עם requires_image_url.

המחיר קבוע כאשר אתה שולח, מן הגנרטור, את הרזולוציה ואת האורך, אז זה מחויב מהסכום Pro שלך ברגע הספק מקבל את העבודה, ומוצג כ 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} - זקוק למפתח שייך ל-nym ששלח אותו. - מפתח שהגיע לקו יכול עדיין לבדוק.

הוא עונה 202 בזמן שהסרטון נעשה ו 200 כאשר זה נגמר או כישלון. לשאול כל 5 עד 10 שניות. כל בדיקה שואלת את הספק פעם אחת ותשובות בבת אחת; זה אף פעם לא מחכה לווידאו. GET /api/v1/videos רשימת 50 המשרות האחרונות של המפתח כ- {"object": "list", "data": […]}.

תשובות (200)

{
  "id": "vid_3e9a51c07b2f4d86e0a1c4f2",
  "object": "video",
  "model": "veo",
  "status": "completed",
  "created": 1790726400,
  "seconds": 8,
  "resolution": "1080p",
  "estimated_cost": 3.18,
  "expires_at": 1790812800,
  "completed_at": 1790726590,
  "data": { "url": "https://blossom.example/9b41d0c2e7a3f658...1e.mp4", "content_type": "video/mp4" },
  "cost": 3.18,
  "nymbot": { "balance": "pro", "charged_credits": 31.8, "charged_sats": 3180 }
}

status זה in_progress, completed או failedעבודה לא מוצלחת מובילה error ({"code": "generation_failed", "message": …}אם זה היה חוזר, cost 0 ו nymbot תוספת refunded_credits ו refunded_satsהווידאו המושלם נמצא במארח Blossom ציבורי, כמו תמונות שנוצרו.

סטטוסמתי
400תוצאות חיפוש: 0 עד 60 ש"ח (invalid_value); רזולוציה שהגנרטור אינו מציע (unsupported_resolution); אין תמונה עבור גנרטור הדורש אחד (image_required); מודל שאינו גנרטור וידאו (invalid_model).
402האיזון Pro אינו יכול לכסות את הווידאו.
404אין גנרטור כזה (model_not_found, או אין עבודה על ידי זה id עבור nym שלך, או שזה יותר מ 24 שעות (video_not_found).
429תגיות קשורות תגיות קשורות תגיות קשורות תגיות קשורות (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, או תשלום Lightning על פי בקשה.

שדהסוגדרושהתיאור
modelStringלאדוגמא לדבריו של רשימת דגמי האודיותגית: הקול הסטנדרטי @cf/myshell-ai/melotts. aura-2 תגית: Deepgram Aura 2
inputStringכֵּןטקסט לקרוא: עד 800 תווים עבור הקול הרגיל, 2,000 עבור Aura 2.
voiceStringלאה- Voice ID של רשימת הקולות• דובר אוור כמו: luna (או aura-2-luna-enתרגום שפה (MeloTTS)en, es, fr, zhOpenAI שמות קולות כגון alloy הם מתקבלים ומספקים את הקול הסטנדרטי של המודל.
languageStringלאקוד שפה כמו: esללא קול, הוא בוחר אחד לשפה זו. קול שמדבר בשפה אחרת חוזר 422 voice_language_mismatchשפה שאין לה קול 422 unsupported_language.
response_formatStringלאהקול הסטנדרטי חוזר mp3 Aura 2 חוזר mp3 (ההתנצלות היא opus, aac, flac, wav או pcm.
speedמספרלאנתפס ונעלם

הקול הסטנדרטי עולה 3 אשראי סטנדרטי (30 sats) בקשה, כמו באפליקציה. Aura 2 הוא Pro, מוערך על פי הדמויות שאתה שולח. הגוף התגובה הוא האודיו, עם תואם 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לארק קולות עבור המודל הזה.

תשובות (צלילים )

{
  "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);

נאום לטקסט

הפך הקלטה לטקסט באמצעות Whisper.This is OpenAI's transcription endpoint, so audio.transcriptions.create עובדים

POST https://nymbot.ai/api/v1/audio/transcriptions זקוק למפתח API, או תשלום Lightning על פי בקשההגוף הוא multipart/form-data.

שדהסוגדרושהתיאור
fileקובץכֵּןההקלטה, מ 256 בייט ל 25 MB ועד 30 דקות: WAV, WebM, MP4 או M4A, Ogg או Opus, MP3 ופורמטים אחרים שועה קורא.
modelStringלאחוסר whisperתגית: Whisper Large v3 Turbo whisper-1, whisper-large-v3-turbo ו @cf/openai/whisper-large-v3-turbo פירושו אותו דבר.
languageStringלאהשפה המדוברת, כמו enהתגלה אם נעלם.
promptStringלאמילים או כתיבה לצפות, כגון שמות, רק 1000 התווים הראשונים משמשים.
response_formatStringלאjson (ההתנצלות היא text, srt, vtt או verbose_json.

עבור קבצים WAV, WebM, MP4 ו- Ogg, האורך נקרא מהקובץ לפני כל דבר פועל, כך שההקלטה מעל 30 דקות נדחתה קדימה (עם 3 שניות של חסד). אורך קובץ WAV מגיע מתוך קצב הדגימה, ערוצים וגודל הדגימה. האורך של פורמטים אחרים, כגון MP3, לא ניתן לקרוא קדימה, ולכן הם מוגבלים לפי גודל: בקצב הביט הנמוך ביותר Nymbot מניח, 8 kbps, 30 דקות הוא 1.8 MB, וקובץ גדול יותר בפורמט כזה נדחתה עם 413 audio_too_long שלח הקלטות ארוכות יותר כגון WAV, WebM, MP4 או Ogg. אם Whisper אז דווח יותר מ 30 דקות בכל מקרה, הבקשה נדחתה עם 413 audio_too_long, ומכיוון ששיחה פעל, 30 דקות הם מחויבים.

אתה משלם עבור האורך של האודיו, מסודר עד שניה: האורך הארוך ביותר שקראו מהקובץ, האורך שומע דיווחים, ואת המינימום הגודל של הקובץ מאפשר, במחיר לדקה של שומע עם התשלום הרגיל ומגבלה, ולפחות 0.05 אשראי בקשה. 402 זה נותן את מה שכל איזון היה צריך.באפליקציה, העברת הודעה קולית עשויה להיות בחינם; על ה- API הוא תמיד מטען.

תשובות

{
  "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(למשל, לא ניתן להדפיס את הקובץ בפורמט של יותר מ-180 מ"ג או בפורמט של פחות מ-180 מ"ג).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);

Embeddings

הפך טקסט לחומרים עבור חיפוש, קבוצה ו deduplication.The מודלים פועלים על Cloudflare ולבלות את האיזון הסטנדרטי.

POST https://nymbot.ai/api/v1/embeddings זקוק למפתח API, או תשלום Lightning על פי בקשה.

שדהסוגדרושהתיאור
modelStringכֵּןמודל משולב מ GET /api/v1/models?type=embedding.
inputString או Array של Stringsכֵּןתגיות קשורות תגיות קשורות תגיות קשורות תגיות קשורות תגיות קשורות תגיות קשורות תגיות קשורות תגיות קשורות תגיות קשורות תגיות קשורות תגיות קשורות תגיות קשורותtoken_input_unsupportedכל כניסה חייבת להתאים למודל context_length, נחשב כארבעה בייטים של טוקן.
encoding_formatStringלא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 ש"ח

רשימת המודלים היא מקור האמת עבור מי הם זמינים ומה הם עולה; EmbeddingGemma של Google, עם וקטורים קצרים יותר על פי בקשה, מופיע שם גם כאשר הקטלוג יש מחיר עבור זה.

תשובות

{
  "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);