コンテンツにスキップ
Nymbot に戻る

知識ベース 開発者

画像、オーディオ、embeddings

アプリからのジェネレーターと検索のビルドブロック:写真、ビデオ、スピーチ、トランスクリプション、および埋め込み、それぞれあなたのバランスから使用ごとに請求されます。

画像生成

プロンプトから1〜4枚の画像を作成し、完成したときに返します。 ?image アプリ内で

POST https://nymbot.ai/api/v1/images/generations API キーが必要、または リクエストによる Lightning 支払い.

IDS 出身 GET /api/v1/models?type=image標準発電機は、 @cf/black-forest-labs/flux-1-schnell, cost a flat 5 standard credits (50 sats) a picture. Every other generator spends Pro credits at its own price, with the usual fee and margin, as in ♪ app. n 写真コスト n ジェネレーターが取らないフィールドは、拒否するのではなく落とされます; 標準ジェネレーターは、プロンプトのみを使用します。

フィールドタイプ必要描写
modelStringはいジェネレーターIDは、 nano-banana.
promptStringはい何を描くか? 最初の2000文字のみを使用します。
nインテルノー1 to 4 デフォルト 1. Also accepted as num_images.
sizeStringノーAspect ratio such as "16:9"あるいは、OpenAIサイズのように、 "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 picture to start from: A https:// ユーザー名やパスワードがない4096文字以上のリンク、または data:image/…;base64 URL(PNG、JPEG、WebP、GIF、SVGではありません) edit求める人々は, requires_image_url.

resolution 使用されていない:各発電機は独自のサイズを作ります。 url, each image is uploaded to a public Blossom host and you get its link (some generators only hand back a link of their own, which is passed on). リンクを持っている誰でも開くことができ、再びダウンロードすることはできません。 火が見えるもの♪With b64_json 画像は返信時に返信され、一度もアップロードされません。 data: URL入力 image_url 同様の方法で検証されているのは、A EDIT 最初にBlossomにアップロードし、発電機がそれを取得できるようにして、リクエストが請求されない場合に再度削除されます。

If some of the 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 SDKの images.edit プロジェクターのみで動作します。 edit モデルリストで受け入れます。

POST https://nymbot.ai/api/v1/images/edits API キーが必要、または リクエストによる Lightning 支払い身体は、 multipart/form-data32MBまで。

フィールドタイプ必要描写
imageファイルはい編集する画像:PNG、JPEG、WebPまたはGIF、最大20 MB。 image[]最初の1つが使われています。
promptStringはい何を変えるか。
modelStringはいGenerator with 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画像は20MB(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"));

動画

ビデオは数分かかりますので、バックグラウンドで実行されます。あなたはそれを提出し、直ちにIDを取得し、それが完了するまでIDについて尋ねます。

POST https://nymbot.ai/api/v1/videos API キーが必要、または リクエストによる Lightning 支払い戻る 202.

フィールドタイプ必要描写
modelStringはいビデオ ジェネレーター ID from 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 picture to start from: A https:// リンク A data:image/… URL は、最初に公共の Blossom ホストにアップロードされます。 requires_image_url.

価格は、発電機から解像度と長さから送信するときに固定されますので、プロのバランスをプロが仕事を受け入れるとすぐに請求されます。 cost, estimated_cost そして nymbot. プロバイダーが仕事を拒否した場合、何も請求されません。 再生が後で失敗した場合、または完成したクリップが保存されず、プロバイダーが請求しなかった場合、料金は自動的に一度返還されます。 1 時間後にまだ続いている再生は放棄され、プロバイダーがそれを受け入れたときに再生を請求するため、その料金は保持されます。 返金はクレジットを返しますが、キーの支出数を下げません。

答え(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 スタート As in_progressあるいは completed すでにビデオでは、 data 直ちに発電機が返してくれた。

ビデオでチェック

GET https://nymbot.ai/api/v1/videos/{id} 提出したNIMに属するキーを必要とします。そのカップに達したキーはまだチェックできます。

答えは 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完成したビデオは、生成された画像のように、公共のBlossomホスト上にあります。

ステータスいつ
4000 ~ 60 までの長さ 0 ~ 60 (invalid_value); 発電機が提供しない解像度(unsupported_resolution); 1 つ必要とする発電機のための画像はありません (image_required); モデルは、ビデオジェネレーターではありません(invalid_model).
402プロバランスはビデオをカバーできません。
404(このような発電機はありません)model_not_found)、またはあなたのニムのためのそのIDによる仕事がない、またはそれは24時間以上古い(video_not_found).
429あなたのニムはすでに10ビデオを再生しています(video_jobs_limit)をチェックし、一つ一つ完成した後にもう一つ提出してください。
502発電機は仕事を拒否しました. プロバイダーが請求していない限り、何も請求されません。
503動画は現在配信または保存できません(media_hosting_unavailable, service_unavailable).

cURL

curl https://nymbot.ai/api/v1/videos \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "veo", "prompt": "Waves rolling onto a beach at sunrise", "duration": 8, "aspect_ratio": "16:9"}'

curl https://nymbot.ai/api/v1/videos/vid_3e9a51c07b2f4d86 \
  -H "Authorization: Bearer $NYMBOT_API_KEY"

Python

import os, time
import requests

headers = {"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]}

job = requests.post(
    "https://nymbot.ai/api/v1/videos",
    headers=headers,
    json={"model": "veo", "prompt": "Waves rolling onto a beach at sunrise", "duration": 8, "aspect_ratio": "16:9"},
).json()

while True:
    time.sleep(8)
    status = requests.get("https://nymbot.ai/api/v1/videos/" + job["id"], headers=headers).json()
    if status["status"] in ("completed", "failed"):
        break

print(status["data"]["url"] if status["status"] == "completed" else status["error"])

JavaScript

const headers = {
  "Authorization": "Bearer " + process.env.NYMBOT_API_KEY,
  "Content-Type": "application/json",
};

const job = await (await fetch("https://nymbot.ai/api/v1/videos", {
  method: "POST",
  headers,
  body: JSON.stringify({ model: "veo", prompt: "Waves rolling onto a beach at sunrise", duration: 8, aspect_ratio: "16:9" }),
})).json();

let status;
do {
  await new Promise((r) => setTimeout(r, 8000));
  status = await (await fetch("https://nymbot.ai/api/v1/videos/" + job.id, { headers })).json();
} while (status.status !== "completed" && status.status !== "failed");

console.log(status.status === "completed" ? status.data.url : status.error);

テキスト スピーチ

テキストを大声で読んで、リンクではなくオーディオファイル自体を返します。 audio.speech.create 「OpenAI SDK」の機能

POST https://nymbot.ai/api/v1/audio/speech API キーが必要、または リクエストによる Lightning 支払い.

フィールドタイプ必要描写
modelStringノースピーチモデル from オーディオモデルのリストデフォルト:標準音声 @cf/myshell-ai/melotts. aura-2 「Deepgram Aura 2」
inputStringはい読むテキスト:標準音声の最大800文字、Aura 2の最大2000文字。
voiceStringノーVoice ID from 声のリストオーラスピーカー(Aura Speaker) luna (または aura-2-luna-en)またはMeloTTS言語(en, es, fr, zh) OpenAI voice names such as alloy 受け入れられ、モデルのデフォルトの声を与えます。
languageStringノー例えば、言語コードは、 es声がなければ、その言語に1つを選択します。別の言語を話す声が返されます。 422 voice_language_mismatch, and a language the model has no voice for モデルに声がない言語 422 unsupported_language.
response_formatStringノー標準音声が戻る mp3 Aura 2 復帰 mp3 (デフォルトは、 opus, aac, flac, wav または pcm.
speed番号ノー受け入れられ、無視される。

Aura 2 is Pro, priced by the characters you send. The response body is the audio, with a matching Aura 2 is Pro, priced by the characters you send. Aura 2 is Pro, priced by the characters you send. Aura 2 is Pro, priced by the characters you send. Aura 2 is Pro, priced by the characters you send. Aura 2 is Pro, priced by the characters you send. Aura 2 is Pro, priced by the characters you send. Aura 2 is Pro, priced by the characters you send. Content-Typeコストは, in the X-Nymbot-Cost-Sats header. If the speech model fails, nothing is charged. スピーチモデルが失敗した場合、何も請求されません。

応答

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()));

オーディオモデルと声

スピーチモデルと音声、またはトランスクリプションモデルを選択するための2つの公開リスト. There are 41 Aura 2 English speakers and four MeloTTS languages.

GET https://nymbot.ai/api/v1/audio/models 鍵は必要ありません。

GET https://nymbot.ai/api/v1/audio/voices?language=en 鍵は必要ありません。

フィールドタイプ必要描写
languageString(クエリー)ノーこの言語のための声だけです。
modelString(クエリー)ノーこのモデルだけの声です。

応答(声)

{
  "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, 形式と1分あたりの価格。

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およびその他のフォーマットはWhisperを読み取ります。
modelStringノー欠点 whisperWhisper 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は、8kbps、30分は 1.8 MBであり、そのようなフォーマットの大きなファイルは拒否されます。 413 audio_too_long WAV、WebM、MP4、Oggなどの長いレコーディングを送信します. Whisper が 30 分を超えるレポートを送信した場合、その要求は拒否されます。 413 audio_too_long, and since Whisper did run, 30 minutes are charged. 30分が充電されます。

You pay for the length of the audio, rounded up to the second: the longest of the length read from the file, the length Whisper reports, and the least the file's size allows, at Whisper's per-minute price with the usual fee and margin, and at least 0.05 credit a request. It is paid from the standard balance when that can cover the hold, and from Pro otherwise. あなたは、オーディオの長さのために支払うことができます。 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でない3つのセグメントの場合、コストはヘッダーに含まれます。

ステータスいつ
400ファイルなし、使用可能なオーディオがないファイル(invalid_audio)、未知のフォーマット、またはモデルがトランスクリプションモデルではない(invalid_model).
402バランスを覆うこともできない。
413ファイルサイズは25MB(file_too_large平成30年度 平成30年度 平成30年度 平成30年度 平成18年度 平成18年度 平成18年度 平成18年度 平成18年度 平成18年度 平成18年度 平成18年度 平成18年度 平成18年度 平成18年度 平成18年度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

テキストをベクトルに変換して検索、クラスタリング、およびデドプリクションを実行します。 モデルはCloudflareで実行され、標準バランスを消費します。

POST https://nymbot.ai/api/v1/embeddings API キーが必要、または リクエストによる Lightning 支払い.

フィールドタイプ必要描写
modelStringはいA embedding model from GET /api/v1/models?type=embedding.
inputstring or array of strings シングルはいトップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ > トップ >token_input_unsupported) 各入力は、モデルの入力に適合する必要があります。 context_length約4バイトを1トークンとして数えました。
encoding_formatStringノーfloat (デフォルト)または base64 (リトルエンディアン32ビットフロート)
dimensionsインテルノーモデル自体のサイズ、またはモデルと supported_dimensions 次に、ベクターは短縮され、正常化され、その他のすべては拒否されます。
モデル次元文脈
@cf/baai/bge-m31024 多くの言語8192 トークン
@cf/qwen/qwen3-embedding-0.6b1024 多くの言語8192 トークン
@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のEmbeddingGemmaは、カタログに価格がある場合にもそこに表示されます。

応答

{
  "object": "list",
  "data": [
    { "object": "embedding", "index": 0, "embedding": [0.0213, -0.0487, 0.0112] }
  ],
  "model": "@cf/baai/bge-m3",
  "usage": { "prompt_tokens": 9, "total_tokens": 9 },
  "nymbot": { "balance": "standard", "charged_credits": 0.05, "charged_sats": 0.5, "balance_credits": 1204.35, "balance_sats": 12043.5 }
}
ステータスいつ
400入力なしまたは空の1;トークンアーレイ(token_input_unsupported); 100個以上の入力(too_many_inputs); input longer than the model takes (モデルが取るよりも入力時間が長い)input_too_long); モデルが与えることができないサイズ(unsupported_dimensions).
402標準バランスが低すぎる Embeddings は 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);