ናብ ትሕዝቶ ዘልል
ናብ Nymbot ተመለስኩ

መሰረት ፍልጠት ደቨሎፐራዊት (ኣልጋእ ስራሕ)

ምስሊታት፣ ድምጽታትን ኤምቤዲንግታትን

ካብቲ ኣፕሊኬሽን ዝመጹ እቶታት (generators)፣ ከምኡ እውን መሰረታዊ ኣካላት ንመደብ ምርምር (search)፦ ምስሊ፣ ቪድዮ፣ ንግግር፣ ትራንስክሪፕሽንን ኤምቤዲንግስን (embeddings)፣ እቶኦም ኩሎም ብመሰረት ቅጥዒታካ ካብቲ ተረፈ ገንዘብካ ይፍጸሙ።

ምስልታት ምፍጣር

ካብ መእተዊ (prompt) ናብ ሓደ ክሳብ ኣርባ ምስሊ ይፍርእ፣ ምስ ተወድኡ ድማ ይመልስ። እዚ ተመሳሳሊ ስብስብ መፍጠሪታት እዩ፦ ?image ኣብቲ መተግበሪ።

POST https://nymbot.ai/api/v1/images/generations — API key የፈለገ፣ ወይ ቊ ኣብ መንገዲ Lightning ዝፍጸም ክፍሊት ብሓደ ናይ መሻሻሊ ሕቶ (request).

መታወቂያታት ካብ ኣበይ ይመጽኡ? GET /api/v1/models?type=image. መደበኛ ጀነሬተር፣ @cf/black-forest-labs/flux-1-schnell, ንሓንቲ ምስሊ 5 ስታንዳርድ ክሬዲትታት (50 sats) ብቋሚ ይኸል፡፡ ኩሎም ካልኦት ጀነሬተራት፣ ብመሰረት ልሙድ ክፍሊት (fee) ከመያእካነትን margin ንምንባርን፣ ብብክፋሎ ጸወታኦም ፕሮ ክሬዲትታት ይጥቀሙ፣ ከም... እቲ ኣፕሊኬሽን. n ታብሪዎቹ ዋጋ ክሳብ እዩ? n ብዙ እትዮ። ሓደ ጀነሬተር ዘይቕበሎ ሓደ ዓቐን (field) ብምልዓል እኳ ዘይኮነስ ብምድር (dropped) እዩ፤ እቲ መደበኛ ጀነሬተር ድማ ነቲ መምርሒ (prompt) ጥራይ ይጥቀመሉ እዩ።

መስክጽሕፋትዝተሓለወመግለጺ
modelመመዝገቢ ክልልእወከኣብነት ከም ናይ ጀነሬተር መለይነት (id) nano-banana.
promptመመዝገቢ ክልልእወምንድይ ክሳል? እቶም ቀዳማይ 2,000 ፊደላት ጥራይ እዮም ዝጥቀሙ።
nመሓዋሪ ቁጽሪኣይፋልንካብ 1 ክሳብ 4። ናይ መጀመርታ 1። ከምዚ እውን ይቕበል ኣሎ። num_images.
sizeመመዝገቢ ክልልኣይፋልንከኣብነት ከም ስርጭት መጠን (aspect ratio) ዝኣለዉ "16:9"፣ ወይ ድ Size OpenAI ከኣ ዝበሉ፡ "1792x1024"፣ እዚ ድማ ምስ 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 ከበርተ ዝተባህለ እቶት ዝኾነ። "auto" ኣብቲ መሳርሒ (generator) ይሓደጎ።
aspect_ratioመመዝገቢ ክልልኣይፋልንከ... ምስ ዝተመመሳለ size, ከክልቲኦም እንተተላኽ ይጽወት።
qualityመመዝገቢ ክልልኣይፋልንንጄነሬተር ፍሉይ፣ ከኣብነት፦ "low", "medium" ወይ "high".
negative_promptመመዝገቢ ክልልኣይፋልንእንታይ ክትሓልፎ ከጋ?
output_formatመመዝገቢ ክልልኣይፋልን"png", "jpeg" ወይ "webp".
response_formatመመዝገቢ ክልልኣይፋልን"url" (ናይ መበገሲ) ወይ "b64_json".
image_urlመመዝገቢ ክልልኣይፋልንትምምሕቲ ንምጅማር፦ ሓደ https:// ኣብኡ ኣይተሓዊዩ እዩ ዝኾነ ኣታዊ ተጠቃሚ ወይ ፍቃደኛ ዘይተሓዘ ኣይትበዛዘህን 4,096 ኣናፍሰት ዘለዎ ሊንክ፣ ወይ ሓደ data:image/…;base64 URL (PNG, JPEG, WebP ወይ ጽል ሰለ GIF; SVG ኣይኮነን)። ንዘለዎም ኣመንጪታትን ጥራይ edit; ብዘለዎም ሰባት ዝሓተተ requires_image_url.

resolution ኣይጥቀመሉን እዩ፦ ነፍሲ ወከፍ መgenrator ናቱ መጠን ይፈጥር። ምስ url, ነፍሲ ወከፍ ምስል ናብ ሕዝባዊ Blossom host ይስዕብ፡ ነዚ ድማ ሊንኩ ይሃብካ እዩ (ጥንታውያን መፍጠሪታት ጥቂት ጥራይ እዮም ርእስቶም ዝሃቡ ሊንክ ዝሓዙ፡ እዚ ድማ ይቕጽል)። ምስቲ ሊንክ ዝተኣሳሰር ዝኾነ ሰብ ክከፍቶ ይኽእል እዩ፡ ድማ ዳግመይ ክቕነስ ኣይከኣልን እዩ፤ ርአ እቲ API እንታይ ክርእዮ/ክርእያ ከይሉ ክትፈልጥ ትደሊ?ብ . ምስ b64_json ታብሪቱ ኣብ መልሲኡ ተመለሰ፣ ፈጺሙ ድማ ኣይተላዓወን። ምስ ሓደ ተላእቲ ምስሊ 🖼️ data: URL ኣብ image_url ከኣንድ ንኣለ እዩ ዝጽረብ? ኣስተኻኽሊ ከቅድሚ ናብ Blossom ተላእሂሉ ነቲ መሳርሒ (generator) ክረክቦ ንክኽእል፤ እቲ ሕቶ (request) እንተዘይተሳለጠ ድማ እንደገና ክቕነስ እዩ።

ከነዚኦምዶ ገለ ካብቲ 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መሰረታዊ መምርhi নাই፤ n ካብ 1 ክሳብ 4 ወጻኢ (invalid_value); ሓደ መጥፎ መጠን (invalid_size) ወይ ድumm (invalid_image, invalid_image_url); ዘሎ ግን ምስሊ ዘይፈጥር ሞዴል (invalid_model); ዘይመሓርሽ ንዘሎ መፍርዪ ምስሊ (edit_unsupported); ዘ chaussታ ዝፋተወሉ ዘይብሎ (image_required).
402እቲ ተረፈ ገንዘብ ዝተሓተቱ ኩለን ምስልታት ክሸፍን ኣይኽእልን እዩ።
404ብዛብhi ስም እዚ ዘሎ ሞዴል የለን (model_not_found).
502እቲ ጀነሬተር ሰሪኡ ኣይተወሓጠን (upstream_error). እቲ ኣቕራቢ ንቲ 試ደሊኡ (attempt) ካብ ኣይተክፈል እንጂ፣ እንተተክሲሉ ድማ እቲ ጌጋ ኣለዉ። 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 ከኣመሓላፊነት (as it is) ይሰርሕ። ፕሮ ጀነሬተራት ጥራይ ምስ... edit ኣብቲ ዝርዝር ሞዴል ተቐበሎ።

POST https://nymbot.ai/api/v1/images/edits — API key የፈለገ፣ ወይ ቊ ኣብ መንገዲ Lightning ዝፍጸም ክፍሊት ብሓደ ናይ መሻሻሊ ሕቶ (request)ኣካል እዩ። multipart/form-data፣ ክሳብ 32 MB።

መስክጽሕፋትዝተሓለወመግለጺ
imageፋይልእወእቶም ክቕየሩ ዝግበሩ ምስልታት፦ PNG, JPEG, WebP ወይ GIF፣ ክሳብ 20 MB። ከምኡ እውን ተቐቢሉ ኣሎ፦ image[]; እቲ ቀዳማይ ይጥቀመሉ።
promptመመዝገቢ ክልልእወእንታይ ክቕየር?
modelመመዝገቢ ክልልእወመሳርሒ መፍጣሪ ምስቲ edit.
nመሓዋሪ ቁጽሪኣይፋልንካብ 1 ክሳብ 4።
size
aspect_ratio
quality
negative_prompt
output_format
መመዝገቢ ክልልኣይፋልንብዛዕባ ምፍላጥ።
response_formatመመዝገቢ ክልልኣይፋልን"b64_json" (እዚ ኣብዚ ዘሎ መለኮታዊ) ወይ "url".

ዝትሰድፈልካ ምስሊ፣ ብትክክለኛ ዓይነት PNG, JPEG, WebP ወይ GIF ከመኸሉ ዝተረጋግጸ፣ ከምኡ እውን ኣብ ዓብራዊ Blossom host ዘሎ ክኸውን ኣለዎ፣ ምኽንያቱ እቶም ተፍጠራታት (generators) ኣገባብኦም ብሊንክ ስለ ዝረኽቡ። ከም ዓብራዊ ነገር ኣተሓትቶ። እቲ ኣመሓሳስሪ (edit) እንተተሓናቐን ዝኾነ ክፍሊት እንተዘይተገብረን፣ እቲ ኣብ host ዘሎ ቅዳሕ ተወዲዱ። እቲ መልሲ ከምቲ ንመፍጣር ዝውሰድ መልሲ እዩ። ዋጋኡ ድማ ናይቲ ተፍጣሪ ዋጋ ኮይኑ፣ ንተወሰኑ ተፍጠራታት ድማ ነቲ ዝተሰደፈ ምስሊ ዋጋ የጠቓልል።

መልሲ

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

ቪድዮ

ቪድዮ ብዛመታት ደቂቃታት ይወስድ፣ ስለEt ከኡ ድማ ኣብ ድሕሪት ዓለም ይሰርሕ። ክትሰድዖ ከለኻ፣ ብቕጽበት መለየኽታ (id) ትረክብ፣ እቲ መለየኽታ ድማ ክፍጸም ክሳብ ዝምለዓ እዩ ክትሓትት ትኽእል ኢኻ። ኩሉ ናይ ቪድዮ መፍጠሪ Pro balance የውስኽ።

POST https://nymbot.ai/api/v1/videos — API key የፈለገ፣ ወይ ቊ ኣብ መንገዲ Lightning ዝፍጸም ክፍሊት ብሓደ ናይ መሻሻሊ ሕቶ (request). ይመልስ 202.

መስክጽሕፋትዝተሓለወመግለጺ
modelመመዝገቢ ክልልእወቪድዮ መፍጠሪ ኣኢዲ ካብ GET /api/v1/models?type=video፣ ከኣብነት . . . ዝኣለዉ veo.
promptመመዝገቢ ክልልእወእንታይ ክትከውን ይግባ?
durationቁጽሪ ወይ ጽሑፍኣይፋልንብሰከንድ ዝተመሊአ ቁጽሪ፡ ካብ 0 ንላዕሊ ክሳብ 60። እዚ ዝተጠነባበቐ እዩ ንመድረኽቲ (generators) እቶም ቁጽሪ ንመጠን ክትመርጽ ዝፍቀዱ ጥራይ፤ እቶቶም ካልኦት ድማ ንመደበኛ መጠንቶም ይጥቀሙ፣ እቲ ድማ እንታይ እዩ? seconds ኣብቲ መልሲ ከምኡውን ዋጋኡ ከምኡ ይFollow ይግበር።
aspect_ratioመመዝገቢ ክልልኣይፋልንከኣብኡ፡ ንኣብነት፡ "16:9" ወይ "9:16"; ከከመሰሉ መጠንታት ዝበለ ጽላል "1280x720" ዝቅርተቱ ናይ ምጥማጥ መጠን ይኸውን።
resolution
quality
መመዝገቢ ክልልኣይፋልንሓደ ካብቲ ጀነሬተርታትን resolutions ኣብ ዝርዝር ሞዴል፣ ከም፡ "720p" ወይ "1080p"ኣቕሪቡ እዩ ዋጋ ዝውስን። ካብኡ ወጻኢ ዝኾነ ነገር ብ... ክቐረብ ኣይኽእልን እዩ። unsupported_resolution.
image_urlመመዝገቢ ክልልኣይፋልንትምምሕቲ ንምጅማር፦ ሓደ https:// ሊንክ ወይ ሓደ data:image/… ቅድም ናብ ሕዝባዊ Blossom host ዝተላዕከ URL። ብጅሁቲታትን ምስ ከሎም ዝሓትቱ። requires_image_url.

ዋጋኡ ምስ ብትሰድድ ካብቲ ጀነሬተር፣ ጥራትን ርዝመትን ተመርኪዙ ዝወሰነ እዩ፣ ስለዚእ እቲ ሰራሕተኛ እቲ ስራሕ ምስ ተቐበሎ ካብ Pro መጠንካ ክትከፈል እዩ፣ ከምዚ ተገልሲኡ cost, estimated_cost እና nymbotእቲ መቕረብ (provider) እቲ ስራሕ እንተኣልየ፣ ምንም ዓይነት ክፍሊት ኣይፍጸምን እዩ። ድሕሪኡ እቲ ሬንደር (render) እንተተሰናክፈአ፣ ወይ ድማ እቲ ዝተፍጸመ ክሊፕ ክቕመጥ እንተዘይብሉ፡ ከምኡ እውን እቲ መቕረብ ብዛዕባኡ እንተዘይሓሰበ፡ እቲ ክፍሊት ሓደ ግዜ ብዘይ ኣቓልቦ (automatically) ይቕርብ። ድሕሪ ሰዓት ገና ዝተሓደሰ ሬንደር ክስረር እንተኾይኑ፡ እቲ ክፍሊት ይቕጽል እዩ፣ ምኽንያቱ እቲ መቕረብ እቲ ሬንደር ምስ ተቐበሎ ክሓሰብ ስለ ዝኽእል እዩ። ምቕራብ (refund) ክሬዲትታት ይመልስ እኳ እንተኾነ፡ ቁጽጽር ወጻኢ (spend count) እቲ ቁልፊ (key) ድማ ኣይቕንስን እዩ።

ምላሽ (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፣ ወይ</h3> completed ብቪዲዮኡ ደጊሙ ኣብ ውሽጢ ዘሎ data እቲ ጀነሬተር ብቕልጣፋ ምስ ዘመለሶ።

ቪድዮ ክትክታብ ኣሎ

GET https://nymbot.ai/api/v1/videos/{id} — ነቲ ዝሰደፈለዎ ኣስማዒት (nym) ዝተኸታተለት ቁልፊ የድሊ። ናይ መወዳእታ ወሰንኡ ዝተኳየሰ ቁልፊ ገና ክመረምር ይኽእል እዩ።

መልሲ ይህ እዩ 202 ቪድEO እያተመተ ከኣንደ 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. A ዝተኸፍአ ስራሕ ይት l error ({"code": "generation_failed", "message": …}); መተሓሻ (refund) እንተተገብረዮ፣ cost 0ን ወይስ nymbot ተወሳኺታት refunded_credits እና refunded_satsእተ finished ቪድዮ ኣብ ጥቕሚ ዝቐርብ Blossom host ይርከብ፣ ከምቲ ዝተፈጥሩ ምስሊ።

መገላጭታመዓስ
400መጠይቕ የለን፤ ከዋን ካብ 0 ክሳብ 60 ንላዕሊ ወይ ንትሕቲ ዘሎ (invalid_value); እቲ ጀነሬተር ዘይቕርቦ ውጽኢት (unsupported_resolution); ዘሚያልእ ምስሊ ዘደገመሉ ጀነሬተር ኣይኮነን (image_required); ናይ ቪድዮ መፍጠሪ ዘይኮነ ሞዴል (invalid_model).
402እቲ ፕሮ ባላንስ እቲ ቪድዮ ክኽደሎ ኣይኽእልን እዩ።
404ከከኣታ እያለ ኣይተረኽበን (model_not_found), ወይ ድኹመ ስራሕ ብታንዛይ እዚ ኣረዳእነት ንስምካ ዘይተረኽበ፣ ወይ ድማ ካብ 24 ሰዓታት ንላዕሊ ዝሓለፈ (video_not_found).
429ናይቲ ኣንተ ስም (nym) ድሮ 10 ቪድዮታት ክትወጽኡ (rendering) ይጸብቕ ኣለዉ (video_jobs_limit). ክትትል ግበሎም፣ እቲ ሓደ ምስ ወዳደቐ ድማ ዝያዳ ኣቕርቡ።
502እቲ መሳርሒ ስራሕቲ ኣቢዩ ኣይAcceptቶን። ሰብዓዊ ኣገልግሎት ዘቕረብቲ ብዘይ ዝዓዘዞ፣ ዝኾነ ክፍሊት ኣይኽፈልን እዩ።
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);

ካብ ጽሑፍ ናብ ድምጺ ዝቕይር

ጽሑፍ ብታሪኽ ኣንበብቲ ናብቲ ናይ ድምጺ ፋይል እቲ፣ ዘይኮነስ linkLabel። እዚ ናይ OpenAI speech endpoint እዩ፣ ስለዚ audio.speech.create ኣብ OpenAI SDKs ይሠርሕ።

POST https://nymbot.ai/api/v1/audio/speech — API key የፈለገ፣ ወይ ቊ ኣብ መንገዲ Lightning ዝፍጸም ክፍሊት ብሓደ ናይ መሻሻሊ ሕቶ (request).

መስክጽሕፋትዝተሓለወመግለጺ
modelመመዝገቢ ክልልኣይፋልንካብ እዛ ዝመጸ ምስርሕ ናይ ስPitch ሞዴል ዝርዝር ሞዴል ድምጺ. መደበኛ፡ቲ መደበኛ ድምጺ፣ @cf/myshell-ai/melotts. aura-2 Deepgram Aura 2 . እዩ?
inputመመዝገቢ ክልልእወእቶም ክቕራቡ ዘለዉ ጽሑፋት፦ ንመደበኛ ድምጺ ክሳብ 800 ኣናፍስቲ፣ ንAura 2 ድማ ክሳብ 2,000 ኣናፍስቲ እዮም።
voiceመመዝገቢ ክልልኣይፋልንካብ... ዝመጸ ድምጺ መለያ ዝርዝር ድምጺታት: ከኣብነት Aura ስፒከር luna (ወ] aura-2-luna-en), ወይ ድ ኩዕራ MeloTTS ቋንቋ (en, es, fr, zh). ስምታውፊታት ድምጺ OpenAI ከምቲኦብ፦ alloy ተቀብዮም ናይቲ ሞዴል መደብ ድምጺ ይህቡ።
languageመመዝገቢ ክልልኣይፋልንከኣብነት፦ ኮድ ቋንቋ ከከመ Hold እዩ esከድምጺCV ውጭ፣ ንታንዛ ወይ ንታንዛ ትመረጽ። ካብኡ ንላዕሊ ኻብ ዝተፈላለየ ቋንቋ ዝዛረብ ድምጺ ይመለስ። 422 voice_language_mismatch, ከኡ ሞዴል ድምጺ ዘይብሉሉ ቋንቋን እውን እዩ 422 unsupported_language.
response_formatመመዝገቢ ክልልኣይፋልንእቲ መደበኛ ድምጺ ተመለሰ mp3 ብንጹህ። Aura 2 ይመልስ mp3 (እቲ መኖር ዝግጁ ዝኾነ) opus, aac, flac, wav ወይ pcm.
speedቁጽሪኣይፋልንተቀቢሉን ተለዓጊ።

እቲ መደበኛ ድምጺ፡ ከምቲ ኣብ ኣፕliኬሽን ዘሎ፡ ንሓደ ሕቶ 3 መደበኛ ክሬዲት (30 sats) ይኸፍል። Aura 2 Pro እዩ፡ ዋጋኡ ድማ ብዘዘብካዮትንloምባላትን ኣብነት እዩ። እቲ መልሲ ድማ እቲ ድምጺ እዩ፣ ምስኡ ዝተኣሳሰር... Content-Type; ወጻኢኡ ኣብ... እዩ X-Nymbot-Cost-Sats ርእስ። እቲ ናይ ድምጺ ሞዴል እንተተሓCC፣ ምንም ዝከፍል ኣይእላክን እዩ።

መልሲ

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 ኣውራ 2 (Aura 2) እንግሊዝኛ ተናጋሪታት ከምኡውን ኣርባዕተ መሎቲቲኤስ (MeloTTS) ቋንቋታት ኣለዉ።

GET https://nymbot.ai/api/v1/audio/models — ቁልፊ ኣይፋልን ኣድልዩ።

GET https://nymbot.ai/api/v1/audio/voices?language=en — ቁልፊ ኣይፋልን ኣድልዩ።

መስክጽሕፋትዝተሓለወመግለጺ
languageስትሪንግ (መደብ)ኣይፋልንንዚ ቋንቋ ጥራይ ድምጽታት።
modelስትሪንግ (መደብ)ኣይፋልንጥራይ ድምጽታት ንዘዚ ሞዴል።

ምላሽ (ድምታታት)

{
  "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 ንመዝገብ ናብ ጽሑፍ ይቕይር። እዚ ናይ OpenAI transcription endpoint ስለ ዝኾነ፣ audio.transcriptions.create ይሰር Ah.

POST https://nymbot.ai/api/v1/audio/transcriptions — API key የፈለገ፣ ወይ ቊ ኣብ መንገዲ Lightning ዝፍጸም ክፍሊት ብሓደ ናይ መሻሻሊ ሕቶ (request)ኣካል እዩ። multipart/form-data.

መስክጽሕፋትዝተሓለወመግለጺ
fileፋይልእወእቲ ቅጅብ፣ ካብ 256 ባይት ክሳብ 25 MB ከመቶ 30 ደቒቕ ክሳብ፡ WAV, WebM, MP4 ወይ M4A, Ogg ወይ Opus, MP3 ከምኡ እውን Whisper ዝቆርኣሎም ካልኦት ቅርጸታት። MP3 ከምኡ እውን ቅጥሚኦም ቅድሚ ምጅማር ክርአ ዘይክእል ካልኦት ቅርጸታት ናብ 1.8 MB ይሓደቡ።
modelመመዝገቢ ክልልኣይፋልንመደበኛ whisper፣ እቲ Whisper Large v3 Turbo ዝተባህለ እዩ። whisper-1, whisper-large-v3-turbo እና @cf/openai/whisper-large-v3-turbo ተመሳሳል እዩ።
languageመመዝገቢ ክልልኣይፋልንእቲ ዝተዛረበ ቋንቋ፣ ከም፡ enከባህሪ ወጻት እንተPi ክርኣ ይግበኣ።
promptመመዝገቢ ክልልኣይፋልንከመሰል ስም ዝማ ዝኣብነት ክትጽበዩዎም ዝግበኣnum ቃላት ወይ ኣዘጻጻም . እቶም ቀዳማይ 1,000 ፊደላት ጥራይ እዮም ዝጥቀሙ።
response_formatመመዝገቢ ክልልኣይፋልንjson (እቲ መኖር ዝግጁ ዝኾነ) text, srt, vtt ወይ verbose_json.

ንፋይ WAV፣ WebM፣ MP4 ከምኡውን Ogg ፋይላት፡ ቅድሚ ዝኾነ ነገር ዕድሜኦም ካብቲ ፋይል ይቐራ bod, ስለዚ፡ ካብ 30 ደቓይቕ ንላዕሊ ዝኸውን መዝገብ ብቕድሚኡ ይልክዕ (ብ3 ሰከንድ ዕድል ተዋሂቡ)። ናይ WAV ፋይል ዕድሜ ካብቲ ናይ ሳምፕል ሬት (sample rate)፣ ቻናልታትን ናይ ሳምፕል መጠንን ይረክብ። ካብ MP3 ዝኣመሰሉ ካልኦት ቅርጸ-መልክዓት ዕድሜኦም ብቕድሚኡ ክቕራእ ስለዘይኽእል፡ ብመጠን ይወሰን: ብዝሓሸት ዝባህሪ (bitrate) ዝተሰላሰለ Nymbot ብኣነስተኛ ኣቀላጠፊ 8 kbps ይቕረብ ከሎ፡ 30 ደቓይቕ 1.8 MB እዩ፣ ከምኡውን ካብዚ ዝዓበየ ፋይል ኣብ ከምዚ ዝኣመሰለ ቅርጸ-መልክዕ ብዚሒብቶ ይልክዕ 413 audio_too_long ከዝነተ ሓደ ቅድሚ ምጅማሩ። ዝረጅም መዝገባት ከም WAV, WebM, MP4 ወይ Ogg ስደዱ። ከምኡ ድማ Whisper ካብ 30 ደቓይቕ ንላዕሊ ከም ዘሎ እንተገለጸ፣ እቲ ሕቶ ብእዚ ይከለክል፦ 413 audio_too_long, ከምኡውን Whisper ስለተሓዊሱ፣ ን30 ደቂቃ ተኸፍሊ ኣሎ።

ንኣድነት ድምጺ ብመሰረት እቲ ናብ ሰከንድ ዝዓበለ ቆጸራ ትኸፍል፦ ካብቲ ፋይል ዝተዓበየ ቆጸራ፣ እቲ Whisper ዝገልጾ ቆጸራ፣ ከምኡውን እቲ መጠን ፋይል ዝፍቅዶ ዝባዕድ ቆጸራ ካብዞም ሰለስተ እቶም ዝዓበዩ፣ ብሰረታ እቲ መደበኛ ክፍሊትን ትርፍን ብመሰረት እቲ ሓደ ተክታ Whisper ዘውትዎ ዋጋ፣ ከምኡውን ንሓደ ሕቶ 0.05 ክሬዲት ዝባዕድ። እቲ ክፍሊት ካብቲ መደበኛ ሚዛን ክኸፍል ከሎ ክኸፍል ይኽእል እዩ፣ እንተዘይኮን ግን ካብ Pro ክኸፍል እዩ፤ 402 እ Each balance እንታይ ከም ዝደልዮ ይገልጽ። ኣብቲ ኣፕ (app) ድምጺ ናብ ጽሑፍ ምቕያር (transcribing) ብነጻ ክኸውን ይኽእል እዩ፤ ኣብቲ API ግን ኩሉ ግዜ ክፍሊት ይኽፈል እዩ። Whisper እንተተሳዒሩ፣ ምንም ዓይነት ክፍሊት ኣይፍጸምን እዩ።

መልሲ

{
  "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 ዘይኮኑት ንነቶም ሰለስተ፣ ወጻኢኦም ኣብቲ header ይርከብ።

መገላጭታመዓስ
400ፋይል የለን፣ ዝቅታ ዘይብ ዘይብ ዝተሓትተ ድምጺ ዘይብሉ ፋይል (invalid_audio), ዘይተፈልጠ ኣቀያዲ፣ ወይ ድማ ናይ ትራንስክሪፕሽን ሞዴል ዘይኮነ ሞዴል (invalid_model).
402ክልቲኦም ተに残 ክትሸፍኖ ኣይክእሉን እዮም።
413እቲ ፋይል ካብ 25 MB ንላዕሊ እዩ (file_too_large) ወይ ድምፂኡ ንላዕሊ ካብ 30 ደቓቕき ወይ፣ ቅጥሚ (format) ምስቲ ድሕሪት መደብ ንእርካብ ዘይክእል እንተኾይኑ፣ ንላዕሊ ካብ 1.8 MB (audio_too_long).
502Whisper እቲ ድምጺ ክትመሓላለፋ ኣይከኣለትን። ምንም ክፍሊት ኣይተሓሰበን።

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 key የፈለገ፣ ወይ ቊ ኣብ መንገዲ Lightning ዝፍጸም ክፍሊት ብሓደ ናይ መሻሻሊ ሕቶ (request)ኣካል እዩ። multipart/form-data.

ከትራንስክሪፕሽን (transcription) ምስቲ ሓደ፣ ካብቲ ተወሳኺ እትዝልዎ ጥራይ ተመሳሳሊ Fields ኣለዎ። language, ገደብታትንን ዋጋን፣ ጥራትን ግን ዝያተ እንተኾነቲ ቋንቋታት ዝተዛረቡ፣ እቲ ጽሑፍ ብእንግሊዝኛ ይምለስ። እቶም OpenAI SDKs ብዘይተጠቐሙ ይጽውዕዎም 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)

ጽሑፍ ንመደብ (vectors) የቕይር ንምድላይ፣ ንምእትታተምትን (clustering) ከምኡ እውን ንምጥራዝን (deduplication)። እታ ሞዴል ኣብ Cloudflare ትሰርሕ እያ ከምኡ እውን ነቲ መደበኛ ሚዛን ትጥቀም ኣለዋ።

POST https://nymbot.ai/api/v1/embeddings — API key የፈለገ፣ ወይ ቊ ኣብ መንገዲ Lightning ዝፍጸም ክፍሊት ብሓደ ናይ መሻሻሊ ሕቶ (request).

መስክጽሕፋትዝተሓለወመግለጺ
modelመመዝገቢ ክልልእወኤምቤዲንግ ሞዴል ካብ GET /api/v1/models?type=embedding.
inputስትሪንግ ወይ ድንጋይ (array) ምት të ስትሪንጎታትእወዘተኣከለ ጽሑፍ፣ ክሳብ 100 ዘይባዶ ስትሪንግታት። Token arrayታት ክልክኡ እዮም (token_input_unsupported). ነፍሲ ወከፍ መግቢ ምስ Modellኡ ክሰማማዕ ኣላዚት ይግባእ context_length, ብግምት ኣርባዕ ባይት ንሓደ ቶክን ተቆጺሩ።
encoding_formatመመዝገቢ ክልልኣይፋልንfloat (ናይ መበገሲ) ወይ base64 (ሊትል-endian 32-bit ፍሎትስ)።
dimensionsመሓዋሪ ቁጽሪኣይፋልንመጠኑ ራሱ፣ ወይ ከ... ዘይተዓዘዘ ሞዴል ን... supported_dimensions ካቶም ሓደ; ድሕሪኡ እቲ भेክተር (vector) ዝተሓጸረን ተሰልሚኡን ይግበራ። ዝኾነ ካልእ ነገር ክቐበል ኣይክፈልን እዩ።
ሞዴልመጠንታትመዐቀፍ
@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 ቶከንታት

ዝርዝር ሞዴላት ኣብ ሓደ ዝተሰረተ እቶት መረዳእታ ኮይኖም፡ ኣየናይ ሞዴላት ከም ዘለዉን ክሳብ ክንደይ ከም ዝኸፍሉን ዘርእዩ እዩ፤ Google's EmbeddingGemma፣ ምስ ተሓትቶ ሓጺር ቬክታራት (vectors) ምስ ከሎ፣ እቲ መዝገብ ዋጋ ምስ ሂቡኡ ኣብኡ ይርአ ኣሎ። Embeddings ብመሰረት ቁጽሪ Token እቶት ይወራረዱ፣ እቲ 0.05-credit ዝባህል ኣቐዲምቲ ድማ ንነዊሕ ዓሚል (request) እዩ ዝApply ዝግበር፣ ንነዊሕ ዓሚል ዘይኮነስ ንነፍሲ ወከፍ Input፤ ስለዚ ብዙሓት ጽሑፋት ኣብ ሓደ ዓሚል ብምእታው ምልኣኽ፡ ብሓደ ብሓደ ምልኣኽ ካብ ምግባር ብዙሕ ርካሽ እዩ።

መልሲ

{
  "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); እቲ ሞዴል ዝቕበሎ ካብ ዝበለSE ዝረጅም ኣእጋራ (input_too_long); እቲ ሞዴል ክህብ ዘይኽእል መጠን (unsupported_dimensions).
402እቶም መደበኛ መጠንታት (standard balance) ኣዝዮም ውርዲ እዮም። ኤምቤዲings (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);