Cơ sở tri thức Nhà phát triển
Hình ảnh, Audio và Embeddings
Các máy phát điện từ ứng dụng, và các khối xây dựng để tìm kiếm: hình ảnh, video, lời nói, biên dịch và nhúng, mỗi hóa đơn cho mỗi lần sử dụng từ số dư của bạn.
Trang này được dịch bằng máy để thuận tiện. Bản gốc tiếng Anh là phiên bản được áp dụng.
Tạo hình ảnh
Tạo một đến bốn hình ảnh từ một lời nhắc và trả lại chúng khi chúng được thực hiện. ?image Trong app
POST https://nymbot.ai/api/v1/images/generations - cần một phím API, hoặc Thanh toán Lightning theo yêu cầu.
Ids đến từ GET /api/v1/models?type=imageMáy phát điện tiêu chuẩn,
@cf/black-forest-labs/flux-1-schnell, chi phí bằng phẳng 5 tín dụng tiêu chuẩn (50 sats) một hình ảnh. Mỗi máy phát điện khác chi tiêu tín dụng Pro với giá riêng của nó, với lệ phí và lợi nhuận thông thường, như trong ứng dụng. n Ảnh chi phí
n Một trường mà một máy phát điện không lấy được sẽ bị thả thay vì bị từ chối; máy phát điện tiêu chuẩn chỉ sử dụng lời nhắc.
| trường | Loại | Cần | Mô tả |
|---|---|---|---|
model | String | Đúng | Một generator id, như nano-banana. |
prompt | String | Đúng | Chỉ có 2.000 ký tự đầu tiên được sử dụng. |
n | integer | Không | 1 đến 4. mặc định 1. cũng được chấp nhận như num_images. |
size | String | Không | Một khía cạnh tỷ lệ như "16:9", hoặc một kích thước OpenAI như "1792x1024", trở thành gần nhất với 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 và 4:5. "auto" Đưa nó vào máy phát điện. |
aspect_ratio | String | Không | Tương tự như size, và chiến thắng nếu cả hai được gửi. |
quality | String | Không | generator cụ thể, chẳng hạn như "low", "medium" hoặc "high". |
negative_prompt | String | Không | Cái gì để lại. |
output_format | String | Không | "png", "jpeg" hoặc "webp". |
response_format | String | Không | "url" (the default) hoặc "b64_json". |
image_url | String | Không | Một hình ảnh để bắt đầu từ: một https:// liên kết tối đa 4.096 ký tự mà không có tên người dùng hoặc mật khẩu trong đó, hoặc data:image/…;base64 URL (PNG, JPEG, WebP hoặc GIF; không SVG). Chỉ dành cho máy phát điện có editđược yêu cầu bởi những người có requires_image_url. |
resolution không được sử dụng: mỗi máy phát điện tạo ra kích thước riêng của nó. url, mỗi hình ảnh được tải lên một máy chủ Blossom công cộng và bạn nhận được liên kết của nó (một số máy phát điện chỉ trả lại một liên kết của riêng họ, được chuyển tiếp). bất cứ ai có liên kết có thể mở nó và nó không thể được lấy lại; xem Những gì lửa có thể thấyVới
b64_json hình ảnh trở lại trong câu trả lời và không bao giờ được tải lên. data: URL trong image_url được kiểm tra theo cách tương tự như một
Edit và tải lên Blossom đầu tiên để máy phát điện có thể lấy nó; nó được xóa một lần nữa nếu yêu cầu không được khấu trừ.
Nếu một số trong những n hình ảnh thất bại, bạn nhận được những người đã làm việc, chỉ được tính phí cho những người (cũng như bất kỳ nhà cung cấp nào tính phí mặc dù thất bại), và nymbot.failed cho biết có bao nhiêu người bị mất.Nếu tất cả thất bại, yêu cầu sẽ trả về 502.
Trả lời
{
"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 }
}
| Status | Khi nào |
|---|---|
400 | Không nhanh; n Từ 1 đến 4 (invalid_valueĐộ bền không cao (invalid_size) hoặc hình ảnh (invalid_image, invalid_image_url); một mô hình tồn tại nhưng không phải là một máy phát hình ảnh (invalid_model); một hình ảnh cho một máy phát điện không thể chỉnh sửa (edit_unsupported); không có hình ảnh cho một người cần nó (image_required). |
402 | Số dư không thể bao gồm tất cả các hình ảnh được yêu cầu. |
404 | Không có mô hình với tên đó (model_not_found). |
502 | Máy phát điện thất bại (upstream_errorKhông có gì được tính phí trừ khi nhà cung cấp tính phí cho nỗ lực; sau đó lỗi đã charged_sats. |
503 | Hình ảnh không thể được lưu trữ ngay bây giờ (media_hosting_unavailable). b64_json Vẫn hoạt động |
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);
chỉnh sửa hình ảnh
Thay đổi một hình ảnh bạn tải lên, theo lời nhắc.Đây là điểm cuối chỉnh sửa của OpenAI, vì vậy OpenAI SDK's images.edit làm việc như nó là. chỉ Pro máy phát điện với edit trong danh sách mẫu chấp nhận nó.
POST https://nymbot.ai/api/v1/images/edits - cần một phím API, hoặc Thanh toán Lightning theo yêu cầuCơ thể là multipart/form-dataTối đa 32 MB.
| trường | Loại | Cần | Mô tả |
|---|---|---|---|
image | file | Đúng | Hình ảnh để chỉnh sửa: PNG, JPEG, WebP hoặc GIF, lên đến 20 MB. image[]cái đầu tiên được sử dụng. |
prompt | String | Đúng | Thay đổi cái gì |
model | String | Đúng | Một máy phát điện với edit. |
n | integer | Không | 1 đến 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | String | Không | Về thế hệ |
response_format | String | Không | "b64_json" (trình bày ở đây) hoặc "url". |
Hình ảnh bạn tải lên được kiểm tra là PNG, JPEG, WebP hoặc GIF được định dạng tốt, được gửi như là loại hình thực của nó, và được đặt trên một máy chủ Blossom công cộng, bởi vì các máy phát điện lấy đầu vào của họ bằng liên kết. Đối xử với nó như là công cộng. Nếu chỉnh sửa thất bại và không có gì được tính phí, bản sao được lưu trữ sẽ bị xóa một lần nữa. Phản hồi có cùng hình dạng như cho thế hệ. Giá là giá của máy phát điện, trong đó đối với một số máy phát điện bao gồm một khoản phí cho hình ảnh đầu vào.
Trả lời
{
"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 }
}
| Status | Khi nào |
|---|---|
400 | Không có hình ảnh hoặc thư mục, một tệp không phải là một hình ảnh (invalid_image) hoặc một máy phát điện không thể chỉnh sửa (edit_unsupported). |
413 | Hình ảnh trên 20 MB (file_too_large), hoặc toàn bộ yêu cầu trên 32 MB. |
503 | Hình ảnh không thể được lưu trữ ngay bây giờ (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"));
Video
Một video mất vài phút, vì vậy nó chạy trong nền. Bạn gửi nó, nhận được một id ngay lập tức, và hỏi về id cho đến khi nó được hoàn thành.
POST https://nymbot.ai/api/v1/videos - cần một phím API, hoặc Thanh toán Lightning theo yêu cầuTrở về 202.
| trường | Loại | Cần | Mô tả |
|---|---|---|---|
model | String | Đúng | Một video generator id từ GET /api/v1/models?type=videoNhư vậy như veo. |
prompt | String | Đúng | Điều gì nên xảy ra. |
duration | Số hoặc string | Không | Chiều dài trong giây, hơn 0 và lên đến 60. Chỉ được sử dụng bởi các máy phát điện cho phép bạn chọn chiều dài; những người khác làm cho chiều dài thông thường của họ, đó là những gì seconds trong câu trả lời và giá theo sau. |
aspect_ratio | String | Không | Như "16:9" hoặc "9:16"Một kích thước như "1280x720" trở thành tỷ lệ gần nhất. |
resolutionquality | String | Không | Một trong những máy phát điện resolutions Trong danh sách mô hình, như "720p" hoặc "1080p"Nó đặt giá.Tất cả mọi thứ khác đều bị từ chối unsupported_resolution. |
image_url | String | Không | Một hình ảnh để bắt đầu từ: một https:// link hoặc a data:image/… URL, được tải lên một máy chủ Blossom công cộng đầu tiên. requires_image_url. |
Giá được cố định khi bạn gửi, từ máy phát điện, độ phân giải và chiều dài, vì vậy nó được tính từ số dư Pro của bạn ngay khi nhà cung cấp chấp nhận công việc, và được hiển thị như
cost, estimated_cost Và nymbotNếu nhà cung cấp từ chối công việc, không có gì được tính phí.Nếu render sau đó thất bại, hoặc clip hoàn thành không thể được lưu trữ và nhà cung cấp không tính phí cho nó, phí được hoàn lại một lần, tự động. Một render vẫn đi sau một giờ được từ bỏ, và giữ lại phí của nó, bởi vì nhà cung cấp tính phí một render một khi nó chấp nhận nó.
Trả lời (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 Bắt đầu như in_progresshoặc completed Với video đã có trong data khi máy phát điện trả lại nó ngay lập tức.
Kiểm tra trên video
GET https://nymbot.ai/api/v1/videos/{id} - cần một chìa khóa thuộc về nym đã gửi nó. một chìa khóa đã đạt đến cap của nó vẫn có thể kiểm tra.
Nó trả lời 202 Trong khi video đang được thực hiện và 200 khi nó đã hoàn thành hoặc đã thất bại. Hỏi mỗi 5 đến 10 giây. Mỗi kiểm tra hỏi nhà cung cấp một lần và trả lời ngay lập tức; nó không bao giờ chờ đợi cho video.
GET /api/v1/videos danh sách 50 công việc cuối cùng của key như
{"object": "list", "data": […]}.
Trả lời (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 là in_progress, completed hoặc failedMột công việc thất bại mang theo error ({"code": "generation_failed", "message": …}(Nếu nó được trả lại, cost là 0 và nymbot Thêm
refunded_credits Và refunded_satsVideo đã hoàn thành là trên một máy chủ công cộng Blossom, giống như hình ảnh được tạo ra.
| Status | Khi nào |
|---|---|
400 | Không có thời gian; một thời gian bên ngoài 0 đến 60 (invalid_value); một giải pháp mà máy phát điện không cung cấp (unsupported_resolution); không có hình ảnh cho một máy phát điện cần một (image_required); một mô hình không phải là một máy phát video (invalid_model). |
402 | Pro Balance không thể bao gồm video. |
404 | Không có máy phát điện (model_not_found) hoặc không có công việc bởi id đó cho nym của bạn, hoặc nó là hơn 24 giờ tuổi (video_not_found). |
429 | Bạn đã có 10 video rendering (video_jobs_limitKiểm tra chúng và gửi thêm một lần một kết thúc. |
502 | Máy phát điện từ chối công việc. Không có gì được tính phí trừ khi nhà cung cấp tính phí cho nó. |
503 | Video không thể được phân phối hoặc lưu trữ ngay bây giờ (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);
Text to Speech Bài phát biểu
Đọc văn bản to và trả về bản thân tệp âm thanh, không phải là một liên kết. audio.speech.create Trong OpenAI SDKs hoạt động.
POST https://nymbot.ai/api/v1/audio/speech - cần một phím API, hoặc Thanh toán Lightning theo yêu cầu.
| trường | Loại | Cần | Mô tả |
|---|---|---|---|
model | String | Không | Một mô hình phát biểu từ Danh sách các model audio• Default: giọng nói tiêu chuẩn, @cf/myshell-ai/melotts. aura-2 Màn hình Deepgram Aura 2 |
input | String | Đúng | Văn bản để đọc: lên đến 800 ký tự cho giọng nói tiêu chuẩn, 2.000 cho Aura 2. |
voice | String | Không | Voice ID từ Danh sách giọng nói: một loa aura như luna (hoặc aura-2-luna-enLời bài hát: MeloTTS (en, es, fr, zhOpenAI tên giọng nói như alloy được chấp nhận và cung cấp giọng nói mặc định của mô hình. |
language | String | Không | Một mã ngôn ngữ như esKhông có một giọng nói, nó chọn một cho ngôn ngữ đó. Một giọng nói nói ngôn ngữ khác trả về 422 voice_language_mismatch, và một ngôn ngữ mà mô hình không có tiếng nói cho 422 unsupported_language. |
response_format | String | Không | Giọng nói tiêu chuẩn trở lại mp3 Aura 2 trở lại mp3 (Đối với sự thất bại), opus, aac, flac, wav hoặc pcm. |
speed | Số | Không | Chấp nhận và bỏ qua. |
Giọng nói tiêu chuẩn chi phí bằng phẳng 3 tín chỉ tiêu chuẩn (30 sats) một yêu cầu, như trong ứng dụng. Aura 2 là Pro, được định giá theo các ký tự bạn gửi. Cơ thể phản hồi là âm thanh, với một phù hợp
Content-Type• Chi phí nằm trong X-Nymbot-Cost-Sats header.Nếu mô hình phát biểu thất bại, không có gì được tính phí.
Trả lời
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| Status | Khi nào |
|---|---|
400 | Không có đầu vào; đầu vào vượt quá giới hạn của mô hình (input_too_long); một định dạng mà mô hình không thể sản xuất (unsupported_response_formatMột giọng nói không rõ ràng (invalid_voice(Chương trình này không phải là một mô hình ngôn ngữ)invalid_model). |
422 | Giọng nói không nói ngôn ngữ được cung cấp, hoặc mô hình không có giọng nói cho nó. |
502 | Mô hình phát biểu thất bại.Không có gì bị tính phí. |
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()));
Mô hình âm thanh và giọng nói
Hai danh sách công khai để chọn một mô hình ngôn ngữ và giọng nói, hoặc một mô hình biên dịch. Có 41 Aura 2 người nói tiếng Anh và bốn ngôn ngữ MeloTTS.
GET https://nymbot.ai/api/v1/audio/models Không cần chìa khóa
GET https://nymbot.ai/api/v1/audio/voices?language=en Không cần chìa khóa
| trường | Loại | Cần | Mô tả |
|---|---|---|---|
language | Lời bài hát: string (query) | Không | Chỉ có giọng nói cho ngôn ngữ này. |
model | Lời bài hát: string (query) | Không | Chỉ có giọng nói cho mô hình này. |
Trả lời (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 }
]
}
Các mô hình danh sách câu trả lời {"object": "list", "data": {"tts": […], "stt": […]}}Mỗi mô hình nói chuyện cho sự cân bằng, giá cả, max_input_chars,
response_formats, languages Và default_voice; mô hình phiên dịch cung cấp các biệt danh của nó, max_file_bytes, max_seconds, định dạng và giá mỗi phút.
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);
Lời bài hát Word To Text
Chuyển một bản ghi thành văn bản với Whisper.Đây là điểm cuối phiên dịch của OpenAI, vì vậy
audio.transcriptions.create làm việc
POST https://nymbot.ai/api/v1/audio/transcriptions - cần một phím API, hoặc Thanh toán Lightning theo yêu cầuCơ thể là multipart/form-data.
| trường | Loại | Cần | Mô tả |
|---|---|---|---|
file | file | Đúng | Ghi âm, từ 256 byte đến 25 MB và lên đến 30 phút: WAV, WebM, MP4 hoặc M4A, Ogg hoặc Opus, MP3 và các định dạng khác Whisper đọc. |
model | String | Không | Thiếu whisperTính năng chính của Whisper Large v3 Turbo whisper-1, whisper-large-v3-turbo Và @cf/openai/whisper-large-v3-turbo Ý nghĩa tương tự |
language | String | Không | Ngôn ngữ nói, như enPhát hiện nếu bị bỏ rơi |
prompt | String | Không | Từ hoặc chính tả để mong đợi, chẳng hạn như tên. chỉ sử dụng 1000 ký tự đầu tiên. |
response_format | String | Không | json (Đối với sự thất bại), text, srt, vtt hoặc verbose_json. |
Đối với các tập tin WAV, WebM, MP4 và Ogg, chiều dài được đọc từ tập tin trước khi bất cứ điều gì chạy, vì vậy một bản ghi trên 30 phút được từ chối lên phía trước (với 3 giây). chiều dài của một tập tin WAV đến từ tỷ lệ mẫu, kênh và kích thước mẫu của nó. chiều dài của các định dạng khác, chẳng hạn như MP3, không thể được đọc lên phía trước, vì vậy chúng bị giới hạn bởi kích thước: ở tỷ lệ bit thấp nhất Nymbot giả định, 8 kbps, 30 phút là 1,8 MB, và một tập tin lớn hơn trong định dạng như vậy được từ chối với 413
audio_too_long Gửi các bản ghi dài hơn như WAV, WebM, MP4 hoặc Ogg. Nếu Whisper sau đó báo cáo hơn 30 phút, yêu cầu được từ chối với
413 audio_too_long, và kể từ khi Whisper đã chạy, 30 phút được tính phí.
Bạn trả tiền cho chiều dài của âm thanh, được làm tròn lên đến thứ hai: chiều dài đọc dài nhất từ tập tin, chiều dài báo cáo Whisper, và kích thước tập tin ít nhất cho phép, ở mức giá mỗi phút của Whisper với lệ phí và lợi nhuận thông thường, và ít nhất 0.05 tín dụng một yêu cầu. 402 Trong ứng dụng, việc biên dịch tin nhắn thoại có thể miễn phí; trên API nó luôn được sạc.
Trả lời
{
"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 Trả về văn bản rõ ràng, srt Và vtt Trở lại subtitles, và
verbose_json thêm các phân đoạn ngôn ngữ, thời gian và thời gian. Đối với ba phân đoạn không phải là JSON, chi phí nằm trong tiêu đề.
| Status | Khi nào |
|---|---|
400 | Không có file, một file không có âm thanh có thể sử dụng (invalid_audio, một định dạng chưa biết, hoặc một mô hình không phải là một mô hình biên dịch (invalid_model). |
402 | Cả sự cân bằng cũng không thể che đậy được. |
413 | Các tập tin trên 25 MB (file_too_large- Thời gian lưu trữ: hơn 30 phút, hoặc, trong một định dạng không thể đọc trước, hơn 1,8 MB (audio_too_long). |
502 | Whisper không thể xử lý âm thanh. không có gì được tính phí. |
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);
Dịch bài phát biểu sang tiếng Anh
POST https://nymbot.ai/api/v1/audio/translations - cần một phím API, hoặc Thanh toán Lightning theo yêu cầuCơ thể là multipart/form-data.
Tương tự như phiên bản, với cùng một trường ngoại trừ language, giới hạn và giá cả, nhưng văn bản trở lại bằng tiếng Anh bất kể ngôn ngữ được nói. 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
Chuyển đổi văn bản thành vector để tìm kiếm, nhóm và deduplication.Theo các mô hình chạy trên Cloudflare và chi tiêu số dư tiêu chuẩn.
POST https://nymbot.ai/api/v1/embeddings - cần một phím API, hoặc Thanh toán Lightning theo yêu cầu.
| trường | Loại | Cần | Mô tả |
|---|---|---|---|
model | String | Đúng | Một mô hình embedded từ GET /api/v1/models?type=embedding. |
input | string hoặc array của string | Đúng | Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Tác giả: Táctoken_input_unsupportedMỗi đầu vào phải phù hợp với mô hình context_length, được tính là khoảng bốn byte một token. |
encoding_format | String | Không | float (the default) hoặc base64 (Little-endian 32 bit floats) |
dimensions | integer | Không | kích thước của mô hình, hoặc đối với một mô hình với supported_dimensions một trong số đó; vector sau đó được rút ngắn và bình thường hóa. |
| Mô hình | Kích thước | bối cảnh |
|---|---|---|
@cf/baai/bge-m3 | 1024 nhiều ngôn ngữ | 8.192 Đánh giá |
@cf/qwen/qwen3-embedding-0.6b | 1024 nhiều ngôn ngữ | 8.192 Đánh giá |
@cf/baai/bge-large-en-v1.5 | 1024 Tiếng Anh | 512 Đánh giá |
@cf/baai/bge-base-en-v1.5 | 768 Tiếng Anh | 512 Đánh giá |
@cf/baai/bge-small-en-v1.5 | 384 Tiếng Anh | 512 Đánh giá |
Danh sách mô hình là nguồn của sự thật về những gì có sẵn và chi phí của chúng; EmbeddingGemma của Google, với các vector ngắn hơn theo yêu cầu, cũng xuất hiện ở đó khi danh mục có giá cho nó.
Trả lời
{
"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 }
}
| Status | Khi nào |
|---|---|
400 | Không có đầu vào hoặc một cái trống; token array (token_input_unsupported); hơn 100 đầu vào (too_many_inputs); một đầu vào dài hơn mô hình mất (input_too_long); một kích thước mà mô hình không thể cung cấp (unsupported_dimensions). |
402 | Cân bằng tiêu chuẩn là quá thấp. Embeddings không bao giờ sử dụng cân bằng Pro. |
404 | Không có mô hình gắn liền với cái tên đó. |
502 | Mô hình thất bại. không có gì được tính phí. |
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);