Slaan oor na die inhoud
Terug na Nymbot

Kennisbasis Ontwikkelaar

Foto's, audio en embeddings

Die generators van die app, en die boublokke vir soek: foto's, video's, spraak, transkripsies en embeddings, elkeen gefactureer per gebruik van jou balans.

Die generering van beelde

Maak een tot vier foto's van 'n oproep en gee hulle terug wanneer hulle gedoen is. ?image In die app.

POST https://nymbot.ai/api/v1/images/generations - 'n API sleutel benodig, of 'N Lightning betaling op versoek.

Die IDA kom van GET /api/v1/models?type=imageDie standaard generator, @cf/black-forest-labs/flux-1-schnell, kos 'n flat 5 standaard krediete (50 sats) 'n prentjie. Elke ander generator spandeer Pro krediete op sy eie prys, met die gebruiklike fooi en marge, soos in Die app. n Foto’s koste n 'N veld wat 'n generator nie neem nie, word afgeneem eerder as geweier; die standaardgenerator gebruik slegs die oproep.

Die veldDie tipevereisBeskrywing
modelStringJa'N Generator ID, soos nano-banana.
promptStringJaWat om te teken.Slegs die eerste 2000 karakters word gebruik.
nIntegraalnie1 tot 4. standaard 1. ook aanvaar as num_images.
sizeStringnie'N Aspek verhouding soos "16:9", of 'n OpenAI grootte soos "1792x1024", wat die naaste van 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 en 4:5 word. "auto" Stuur dit na die generator.
aspect_ratioStringnieDie dieselfde as sizeen wen as beide gestuur word.
qualityStringnieGenerator spesifieke, soos "low", "medium" of "high".
negative_promptStringnieWat om uit te laat.
output_formatStringnie"png", "jpeg" of "webp".
response_formatStringnie"url" (die verval) of "b64_json".
image_urlStringnie'n Foto om te begin met: 'n https:// 'n skakel van nie meer as 4,096 karakters met geen gebruikersnaam of wagwoord daarin nie, of 'n data:image/…;base64 URL (PNG, JPEG, WebP of GIF; nie SVG nie). editDie vereistes van diegene wat requires_image_url.

resolution nie gebruik word nie: elke generator maak sy eie grootte. url, elke prentjie word geüpload na 'n openbare Blossom-host en jy kry sy skakel (slegs 'n paar generators gee slegs 'n skakel van hul eie terug, wat oorgedra word). Wat die vuur kan sienmet b64_json die foto kom terug in die reaksie en word nooit geüpload nie. 'n beeld gestuur as 'n data: URL in die image_url Dit word op dieselfde manier as 'n Edit en eerste oplaai na Blossom sodat die generator dit kan opneem; dit word weer verwyder as die versoek misluk.

As sommige van die n foto's misluk, jy kry diegene wat gewerk het, word slegs vir diegene (plus enige die verskaffer gefactureer ten spyte van mislukking), en nymbot.failed sê hoeveel ontbreek. as almal misluk, sal die versoek 502.

Reaksies

{
  "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 }
}
StatusWanneer
400nie vinnig nie; n van 1 tot 4 (invalid_value(Genoeg van die grootte)invalid_size• Die foto (invalid_image, invalid_image_url); 'n model wat bestaan, maar nie 'n beeldgenerator is nie (invalid_model); 'n beeld vir 'n generator wat nie kan bewerk nie (edit_unsupported); geen foto vir een wat dit nodig het nie (image_required).
402Die balans kan nie elke foto wat gevra word, dek nie.
404Geen model met hierdie naam (model_not_found).
502Die generator misluk (upstream_errorNiks word in rekening gestel tenzij die verskaffer vir die poging in rekening gestel het nie; dan het die fout charged_sats.
503Foto's kan nie op die oomblik gehost word nie (media_hosting_unavailable). b64_json werk nog steeds.

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

Redigering van beelde

Verander 'n prentjie wat jy oplaai, na 'n opdrag.Dit is OpenAI se redigering eindpunt, so die OpenAI SDK's images.edit werk soos dit is. slegs Pro generators met edit in die model lys aanvaar dit.

POST https://nymbot.ai/api/v1/images/edits - 'n API sleutel benodig, of 'N Lightning betaling op versoekDie liggaam is multipart/form-datatot 32 MB.

Die veldDie tipevereisBeskrywing
imageDie lêerJaDie beeld om te bewerk: PNG, JPEG, WebP of GIF, tot 20 MB. image[]Die eerste word gebruik.
promptStringJaWat om te verander
modelStringJa'N Generator met edit.
nIntegraalnie1 tot 4.
size
aspect_ratio
quality
negative_prompt
output_format
Stringnievir die generasie.
response_formatStringnie"b64_json" (die standaard hier) of "url".

Die beeld wat jy oplaai, word gekontroleer as 'n goed gevormde PNG, JPEG, WebP of GIF, as sy werklike tipe gestuur, en op 'n openbare Blossom-host geplaas, want die generators kry hul invoer deur skakel. Behandel dit as openbaar. As die redigering misluk en niks opgelê word nie, word die gehost kopie weer verwyder. Die reaksie het dieselfde vorm as vir generasie. Prys is die prys van die generator, wat vir sommige generators 'n fooi vir die invoerbeeld insluit.

Reaksies

{
  "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 }
}
StatusWanneer
400Geen beeld of prompt, 'n lêer wat nie 'n prentjie is nie (invalid_image), of 'n generator wat nie kan redig nie (edit_unsupported).
413Die foto is meer as 20 MB (file_too_large), of die hele versoek van meer as 32 MB.
503Die foto kan nie op die oomblik gehost word nie (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’s

'N Video neem minute, so dit loop in die agtergrond. Jy stuur dit, kry 'n id onmiddellik, en vra oor die id totdat dit gedoen is.

POST https://nymbot.ai/api/v1/videos - 'n API sleutel benodig, of 'N Lightning betaling op versoekterugkeer 202.

Die veldDie tipevereisBeskrywing
modelStringJa'N Video Generator ID van GET /api/v1/models?type=videoSoos soos veo.
promptStringJaWat moet gebeur.
durationDie getal of stringnieLengte in sekondes, meer as 0 en tot 60. Gebruik slegs deur generators wat jou toelaat om die lengte te kies; die ander maak hul gewone lengte, wat is wat seconds In die reaksie en die prys volg.
aspect_ratioStringnieSoos "16:9" of "9:16"'n Grootte soos "1280x720" Dit word die naaste verhouding.
resolution
quality
StringnieEen van die generators resolutions In die model, soos "720p" of "1080p"Dit stel die prys. Alles anders word verwerp met unsupported_resolution.
image_urlStringnie'n Foto om te begin met: 'n https:// Link of 'n data:image/… URL, wat eers na 'n openbare Blossom-host geplaas word. requires_image_url.

Die prys is vasgestel wanneer jy die generator, resolusie en lengte inskryf, dus word dit van jou Pro-balans in rekening geneem sodra die verskaffer die werk aanvaar, en getoon as cost, estimated_cost en nymbotAs die verskaffer die werk weier, word niks in rekening geneem nie. As die rendering later misluk, of die voltooide klip nie opgeslagen kan word en die verskaffer nie daarvoor in rekening gestel het nie, word die fooi een keer, outomaties, terugbetaal. 'n rendering wat nog na 'n uur gaan, word opgehou en behou sy fooi, want die verskaffer reken 'n render wanneer dit dit aanvaar. 'N terugbetaling gee die krediete terug, maar verlaag nie die sleutel se uitgaansetrek nie.

Die antwoord (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 Begin as in_progressof completed Met die video reeds in data Die generator het dit onmiddellik teruggekeer.

Kyk na 'n video

GET https://nymbot.ai/api/v1/videos/{id} - benodig 'n sleutel wat aan die nym behoort wat dit ingedien het. 'n Sleutel wat sy cap bereik het, kan nog steeds kyk.

Hy antwoord 202 terwyl die video gemaak word en 200 wanneer dit voltooi is of misluk het. Vra elke 5 tot 10 sekondes. Elke tjek vra die verskaffer een keer en antwoord dadelik; dit wag nooit vir die video nie. 'n werk word 24 uur gehou nadat dit ingedien is. GET /api/v1/videos die sleutel se laaste 50 werksgeleenthede as {"object": "list", "data": […]}.

Die antwoord (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 is in_progress, completed of failed'N mislukte werk dra error ({"code": "generation_failed", "message": …}Indien dit terugbetaal word, cost Dit is 0 en nymbot Voeg toe refunded_credits en refunded_satsDie voltooide video is op 'n openbare Blossom-host, soos gegenereerde beelde.

StatusWanneer
400Geen spoed; 'n duur buite 0 tot 60 (invalid_value); 'n resolusie wat die generator nie bied nie (unsupported_resolution); geen beeld vir 'n generator wat een nodig het nie (image_required); 'n model wat nie 'n video-generator is nie (invalid_model).
402Die Pro-balans kan nie die video dek nie.
404Geen generator nie (model_not_found), of geen werk deur daardie id vir jou nym, of dit is meer as 24 uur oud (video_not_found).
429Jou nym het reeds 10 video's weergegee (video_jobs_limitKyk na hulle en stuur meer wanneer een voltooi.
502Die generator het die werk geweier. niks word in rekening gestel tensy die verskaffer dit gefactureer het nie.
503Video's kan nie op die oomblik gelewer of opgeslagen word nie (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);

Tekst van die toespraak

Lees teks hardop en gee die klankbestand self terug, nie 'n skakel nie. audio.speech.create In die OpenAI SDKs werk.

POST https://nymbot.ai/api/v1/audio/speech - 'n API sleutel benodig, of 'N Lightning betaling op versoek.

Die veldDie tipevereisBeskrywing
modelStringnie'N Spreekmodel van Die lys van die audio modelleDefault: die standaard stem @cf/myshell-ai/melotts. aura-2 Dit is die Deepgram Aura 2.
inputStringJaDie teks om te lees: tot 800 karakters vir die standaard stem, 2000 vir Aura 2.
voiceStringnie'N Stem ID van Die stemme lys'n Aura spreker soos luna (en die aura-2-luna-enIn die algemeen word die taal (en, es, fr, zhOpenAI stem name soos alloy word aanvaar en gee die standaard stem van die model.
languageStringnie'N Taalkode soos essonder 'n stem, kies dit een vir daardie taal. 'n stem wat 'n ander taal praat, 422 voice_language_mismatch, en 'n taal waarvoor die model geen stem het nie 422 unsupported_language.
response_formatStringnieDie standaard stem terugkeer mp3 Aura 2 terugkeer mp3 die vervalsing, opus, aac, flac, wav of pcm.
speedDie nommernieAanvaar en ignoreer.

Die standaard stem kos 'n flat 3 standaard krediete (30 sats) 'n versoek, soos in die app. Aura 2 is Pro, geprijs deur die karakters wat jy stuur. Die reaksie liggaam is die klank, met 'n ooreenstemmende Content-TypeDie koste is in die X-Nymbot-Cost-Sats As die spraakmodel misluk, word niks opgelê nie.

Reaksies

HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6

(audio bytes)
StatusWanneer
400Geen ingang nie; ingang oor die modelgrens (input_too_long); 'n formaat wat die model nie kan produseer nie (unsupported_response_format'n Onbekende stem (invalid_voice); 'n model wat nie 'n spraakmodel is nie (invalid_model).
422Die stem praat nie die taal wat gegee word nie, of die model het geen stem vir dit nie.
502Die gespreksmodel misluk. niks is aangekla nie.

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

Audio modelle en stemme

Twee openbare lyste vir die keuse van 'n spraakmodel en stem, of 'n transkripsiemodel. Daar is 41 Aura 2 Engelssprekers en vier MeloTTS tale.

GET https://nymbot.ai/api/v1/audio/models Geen sleutel nodig nie.

GET https://nymbot.ai/api/v1/audio/voices?language=en Geen sleutel nodig nie.

Die veldDie tipevereisBeskrywing
languageDie vraag (query)nieNet stemme vir hierdie taal.
modelDie vraag (query)nieNet stemme vir hierdie model.

Reaksies (die stem van die

{
  "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 }
  ]
}

Die modelle lys antwoorde {"object": "list", "data": {"tts": […], "stt": […]}}Elke spraakmodel gee sy balans, prys, max_input_chars, response_formats, languages en default_voice· die transcription model gee sy aliases, max_file_bytes, max_seconds, formaat en prys per minuut.

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

Spreek tot teks

Verander 'n opname in teks met Whisper. Dit is OpenAI se transkripsie eindpunt, so audio.transcriptions.create die werk.

POST https://nymbot.ai/api/v1/audio/transcriptions - 'n API sleutel benodig, of 'N Lightning betaling op versoekDie liggaam is multipart/form-data.

Die veldDie tipevereisBeskrywing
fileDie lêerJaDie opname, van 256 bytes tot 25 MB en tot 30 minute: WAV, WebM, MP4 of M4A, Ogg of Opus, MP3 en die ander formate Whisper lees.
modelStringnieDefekteer whisperDit is 'n verskynsel van Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo en @cf/openai/whisper-large-v3-turbo Dit beteken dieselfde.
languageStringnieDie gesproke taal, soos enOntdek as jy weggelaat is.
promptStringnieWoorde of spelling om te verwag, soos name. Slegs die eerste 1000 karakters word gebruik.
response_formatStringniejson die vervalsing, text, srt, vtt of verbose_json.

Vir WAV, WebM, MP4 en Ogg lêers word die lengte van die lêer gelees voordat iets hardloop, so 'n opname van meer as 30 minute word verwerp vooruit (met 3 sekondes se genade). 'N WAV lêer se lengte kom van sy monster koers, kanale en monster grootte. Die lengte van ander formate, soos MP3, kan nie vooruit gelees word nie, so hulle is beperk deur grootte: by die laagste bitrate Nymbot veronderstel, 8 kbps, 30 minute is 1.8 MB, en 'n groter lêer in so 'n formaat word verwerp met 413 audio_too_long Stuur langer opnames soos WAV, WebM, MP4 of Ogg. As Whisper dan meer as 30 minute rapporteer, word die versoek geweier met 413 audio_too_long, en aangesien Whisper hardloop, word 30 minute in rekening geneem.

Jy betaal vir die lengte van die klank, afgerond tot die tweede: die langste van die lengte gelees van die lêer, die lengte Whisper rapporteer, en die minste die grootte van die lêer toelaat, by Whisper se per minuut prys met die gewone fooi en marge, en ten minste 0.05 krediet 'n versoek. 402 gee wat elke balans nodig sou hê. In die app, kan die transkripsie van 'n spraakboodskap gratis wees; op die API word dit altyd gelê. As Whisper misluk, word niks gelê nie.

Reaksies

{
  "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 Terugkeer duidelik teks, srt en vtt Terugkeer ondertitelings, en verbose_json voeg die taal, duur en tydsegmente by. Vir die drie wat nie JSON is nie, is die koste in die kopte.

StatusWanneer
400Nie 'n lêer nie, 'n lêer met geen gebruikbare audio (invalid_audio, 'n onbekende formaat, of 'n model wat nie 'n transcriptiewe model is nie (invalid_model).
402Ook die balans kan dit nie bedek nie.
413Die bestand is meer as 25 MB (file_too_large'n Opname van meer as 30 minute, of, in 'n formaat waarvan die lengte nie aan die voorkant leesbaar is nie, meer as 1,8 MB (audio_too_long).
502Sweepper kon nie die klank verwerk nie. Niets is opgelê nie.

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

Vertaling van die toespraak na Engels

POST https://nymbot.ai/api/v1/audio/translations - 'n API sleutel benodig, of 'N Lightning betaling op versoekDie liggaam is multipart/form-data.

Dieselfde as die transkripsie, met dieselfde velde behalwe language, limiete en prys, maar die teks kom terug in Engels, ongeag watter taal gepraat is. 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);

Inskrywing

Verander teks in vektorne vir soektog, klustering en deduplikasie. Die modelle loop op Cloudflare en spandeer die standaardbalans.

POST https://nymbot.ai/api/v1/embeddings - 'n API sleutel benodig, of 'N Lightning betaling op versoek.

Die veldDie tipevereisBeskrywing
modelStringJa'N Inbound Model van GET /api/v1/models?type=embedding.
inputString of reeks van stringsJaDie teks wat ingebed moet word, tot 100 nie-leë stringe. tokenreeks word verwerp (token_input_unsupportedElke input moet ooreenstem met die model se context_length, getel as ongeveer vier bytes 'n token.
encoding_formatStringniefloat (die verval) of base64 (Slegs vir die 32-bits flitser)
dimensionsIntegraalnieDie model se eie grootte, of vir 'n model met supported_dimensions een van hulle; die vektor word dan verkort en genormaliseer. Alles anders word verwerp.
Die modelDimensieskonteks
@cf/baai/bge-m31024 in baie tale8192 besoekers
@cf/qwen/qwen3-embedding-0.6b1024 in baie tale8192 besoekers
@cf/baai/bge-large-en-v1.51024 in Engels512 Kyk
@cf/baai/bge-base-en-v1.5768, Engels512 Kyk
@cf/baai/bge-small-en-v1.5384 Engels512 Kyk

Die model lys is die bron van waarheid vir wie hulle beskikbaar is en wat hulle kos; Google se EmbeddingGemma, met korter vektorne op versoek, verskyn daar ook wanneer die katalogus daarvoor 'n prys het.

Reaksies

{
  "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 }
}
StatusWanneer
400Geen ingang of 'n leë een; token array (token_input_unsupportedmeer as 100 inputs (too_many_inputs); 'n invoer langer as die model neem (input_too_long); 'n grootte wat die model nie kan gee nie (unsupported_dimensions).
402Die standaardbalans is te laag. Embeddings gebruik nooit die Pro-balans nie.
404Geen model met hierdie naam nie.
502Die model misluk. niks is opgelos nie.

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