Βάση γνώσεων Οι προγραμματιστές
Εικόνες, ήχο και ενσωματώσεις
Οι γεννήτριες από την εφαρμογή, και τα δομικά στοιχεία για την αναζήτηση: εικόνες, βίντεο, ομιλία, μεταγραφή και ενσωματώσεις, το καθένα τιμολογείται ανά χρήση από το υπόλοιπο σας.
Αυτή η σελίδα έχει μεταφραστεί μηχανικά για ευκολία. Το αγγλικό πρωτότυπο είναι η έκδοση που ισχύει.
Δημιουργία εικόνων
Δημιουργεί μία έως τέσσερις εικόνες από μια προτροπή και τις επιστρέφει όταν ολοκληρωθούν. ?image μέσα στην εφαρμογή.
POST https://nymbot.ai/api/v1/images/generations - χρειάζεται ένα κλειδί API, ή Πληρωμή Lightning κατόπιν αιτήματος.
Οι Ινδίες προέρχονται από GET /api/v1/models?type=imageΗ τυπική γεννήτρια,
@cf/black-forest-labs/flux-1-schnell, κοστίζει μια επίπεδη 5 τυποποιημένες πιστώσεις (50 sats) μια εικόνα. Κάθε άλλη γεννήτρια ξοδεύει Pro πιστώσεις με τη δική της τιμή, με τη συνήθη αμοιβή και το περιθώριο, όπως στην Το app. n Φωτογραφίες Κόστος
n Ένα πεδίο που δεν λαμβάνεται από μια γεννήτρια πέφτει αντί να απορρίπτεται. η τυπική γεννήτρια χρησιμοποιεί μόνο την προειδοποίηση.
| Το πεδίο | Τύπος | Απαιτείται | Περιγραφή |
|---|---|---|---|
model | Στρογγυλο | Ναί | Μια γεννήτρια ID, όπως nano-banana. |
prompt | Στρογγυλο | Ναί | Τι να σχεδιάσετε; Χρησιμοποιούνται μόνο οι πρώτοι 2000 χαρακτήρες. |
n | ΙΝΤΕΡ | Όχι | 1 έως 4. προεπιλογή 1. επίσης αποδεκτό ως num_images. |
size | Στρογγυλο | Όχι | Μια αναλογία όπως η "16:9"Είτε πρόκειται για ανοιχτό μέγεθος όπως "1792x1024", η οποία γίνεται η πλησιέστερη των 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 και 4:5. "auto" Αφήστε το στη γεννήτρια. |
aspect_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 δεν χρησιμοποιείται: κάθε γεννήτρια κάνει το δικό του μέγεθος. url, κάθε εικόνα ανεβαίνει σε έναν δημόσιο Blossom οικοδεσπότη και παίρνετε το σύνδεσμο του (μερικοί γεννήτριες δίνουν μόνο πίσω ένα δικό τους σύνδεσμο, το οποίο μεταδίδεται). Τι μπορεί να δει η φωτιάΜε
b64_json η εικόνα επιστρέφει στην απάντηση και δεν ανεβαίνει ποτέ. data: URL σε image_url Ελέγχεται με τον ίδιο τρόπο με το
ΕΔΔ και φορτώθηκε στο Blossom πρώτα έτσι ώστε η γεννήτρια να μπορεί να το ανακτήσει. διαγράφεται και πάλι αν το αίτημα αποτύχει χωρίς χρέωση.
Αν κάποιοι από τους n φωτογραφίες αποτυγχάνουν, παίρνετε εκείνες που λειτούργησαν, χρεώνονται μόνο για εκείνες (συν οποιαδήποτε χρέωση του παρόχου παρά την αποτυχία), και nymbot.failed λέει πόσοι λείπουν. αν αποτύχουν όλοι, το αίτημα επιστρέφει 502.
Απάντηση
{
"created": 1790726400,
"model": "nano-banana",
"cost": 0.2126,
"data": [
{
"url": "https://blossom.example/5c0e4b7d3a91f2e8...c4.png",
"content_type": "image/png"
}
],
"nymbot": { "balance": "pro", "charged_credits": 1.817, "charged_sats": 181.7, "balance_credits": 410.608, "balance_sats": 41060.8 }
}
| Το καθεστώς | Πότε |
|---|---|
400 | Όχι γρήγορα n Από το 1 έως το 4 (invalid_value); ένα κακό μέγεθος (invalid_size) ή εικόνα (invalid_image, invalid_image_url); ένα μοντέλο που υπάρχει αλλά δεν είναι μια γεννήτρια εικόνας (invalid_model); μια εικόνα για μια γεννήτρια που δεν μπορεί να επεξεργαστεί (edit_unsupported(δεν υπάρχει φωτογραφία για κάποιον που το χρειάζεται)image_required). |
402 | Το υπόλοιπο δεν μπορεί να καλύψει κάθε φωτογραφία που ζητείται. |
404 | Κανένα μοντέλο με αυτό το όνομα (model_not_found). |
502 | Η γεννήτρια απέτυχε (upstream_errorΤίποτα δεν χρεώνεται εκτός αν ο πάροχος χρεώσει για την προσπάθεια. τότε το σφάλμα έχει charged_sats. |
503 | Οι φωτογραφίες δεν μπορούν να φιλοξενηθούν αυτή τη στιγμή (media_hosting_unavailable). b64_json Λειτουργεί ακόμα |
cURL
curl https://nymbot.ai/api/v1/images/generations \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana",
"prompt": "A lighthouse at dusk, oil painting",
"size": "16:9"
}'
Python
import os
import requests
res = requests.post(
"https://nymbot.ai/api/v1/images/generations",
headers={"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]},
json={"model": "nano-banana", "prompt": "A lighthouse at dusk, oil painting", "size": "16:9"},
)
res.raise_for_status()
print(res.json()["data"][0]["url"])
JavaScript
const res = await fetch("https://nymbot.ai/api/v1/images/generations", {
method: "POST",
headers: {
"Authorization": "Bearer " + process.env.NYMBOT_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ model: "nano-banana", prompt: "A lighthouse at dusk, oil painting", size: "16:9" }),
});
const body = await res.json();
console.log(body.data[0].url);
Επεξεργασία εικόνων
Αλλάζει μια εικόνα που ανεβάζετε, ακολουθώντας μια ειδοποίηση.Αυτό είναι το τέλος επεξεργασίας του OpenAI, οπότε τα OpenAI SDKs images.edit λειτουργεί όπως είναι. μόνο Pro γεννήτριες με edit στη λίστα του μοντέλου να το αποδεχτείτε.
POST https://nymbot.ai/api/v1/images/edits - χρειάζεται ένα κλειδί API, ή Πληρωμή Lightning κατόπιν αιτήματοςΤο σώμα είναι multipart/form-dataΜέχρι 32 MB.
| Το πεδίο | Τύπος | Απαιτείται | Περιγραφή |
|---|---|---|---|
image | αρχείο | Ναί | Η εικόνα για επεξεργασία: PNG, JPEG, WebP ή GIF, μέχρι 20 MB. image[]Το πρώτο χρησιμοποιείται. |
prompt | Στρογγυλο | Ναί | Τι να αλλάξει. |
model | Στρογγυλο | Ναί | Μια γεννήτρια με edit. |
n | ΙΝΤΕΡ | Όχι | 1 έως 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | Στρογγυλο | Όχι | Όσο για τη γενιά. |
response_format | Στρογγυλο | Όχι | "b64_json" (η προεπιλογή εδώ) ή "url". |
Η εικόνα που ανεβάζετε ελέγχεται για να είναι μια καλά διαμορφωμένη PNG, JPEG, WebP ή GIF, αποστέλλεται ως πραγματικός τύπος και τοποθετείται σε δημόσιο Blossom 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"));
ΒΙΝΤΕΟ
Ένα βίντεο διαρκεί λεπτά, οπότε τρέχει στο παρασκήνιο. το υποβάλλετε, παίρνετε ένα id αμέσως, και ρωτήστε για το id μέχρι να γίνει.
POST https://nymbot.ai/api/v1/videos - χρειάζεται ένα κλειδί API, ή Πληρωμή Lightning κατόπιν αιτήματοςΕπιστρέφει 202.
| Το πεδίο | Τύπος | Απαιτείται | Περιγραφή |
|---|---|---|---|
model | Στρογγυλο | Ναί | Ένα βίντεο γεννήτρια id από GET /api/v1/models?type=video, όπως veo. |
prompt | Στρογγυλο | Ναί | Τι θα έπρεπε να συμβεί. |
duration | Αριθμός ή string | Όχι | Χρησιμοποιείται μόνο από γεννήτριες που σας επιτρέπουν να επιλέξετε το μήκος. οι άλλοι κάνουν το συνηθισμένο μήκος τους, το οποίο είναι seconds Η απάντηση και η τιμή ακολουθούν. |
aspect_ratio | Στρογγυλο | Όχι | Όπως "16:9" ή "9:16"Ένα μέγεθος όπως "1280x720" γίνεται η πλησιέστερη αναλογία. |
resolutionquality | Στρογγυλο | Όχι | Μία από τις γεννήτριες resolutions Στη λίστα με τα μοντέλα, όπως "720p" ή "1080p"Καθορίζει την τιμή.Τα υπόλοιπα απορρίπτονται unsupported_resolution. |
image_url | Στρογγυλο | Όχι | Μια εικόνα για να ξεκινήσετε από: ένα https:// Σύνδεσμος ή Α data:image/… URL, το οποίο φορτώνεται πρώτα σε έναν δημόσιο Blossom host. requires_image_url. |
Η τιμή είναι σταθερή όταν υποβάλλετε, από τη γεννήτρια, την ανάλυση και το μήκος, οπότε χρεώνεται από το υπόλοιπο Pro σας μόλις ο πάροχος αποδεχθεί την εργασία και εμφανίζεται ως
cost, estimated_cost και nymbotΕάν ο προμηθευτής αρνηθεί την εργασία, δεν χρεώνεται τίποτα. Εάν η αναπαραγωγή αποτύχει αργότερα, ή το τελικό κλιπ δεν μπορεί να αποθηκευτεί και ο προμηθευτής δεν έχει χρεώσει για αυτό, η χρέωση επιστρέφεται μία φορά, αυτόματα. Μια αναπαραγωγή που εξακολουθεί να συμβαίνει μετά από μία ώρα εγκαταλείπεται και διατηρεί την χρέωσή της, επειδή ο προμηθευτής χρεώνει μια αναπαραγωγή μόλις την αποδεχθεί.
Αντιδράσεις (202)
{
"id": "vid_3e9a51c07b2f4d86e0a1c4f2",
"object": "video",
"model": "veo",
"status": "in_progress",
"created": 1790726400,
"seconds": 8,
"resolution": "1080p",
"estimated_cost": 3.18,
"expires_at": 1790812800,
"cost": 3.18,
"nymbot": { "balance": "pro", "charged_credits": 31.8, "charged_sats": 3180, "balance_credits": 378.808, "balance_sats": 37880.8 }
}
status Ξεκινάει ως in_progressΉ completed Με το βίντεο που έχει ήδη data Η γεννήτρια το επέστρεψε αμέσως.
Έλεγχος σε ένα βίντεο
GET https://nymbot.ai/api/v1/videos/{id} - χρειάζεται ένα κλειδί που ανήκει στο nym που το υπέβαλε. Ένα κλειδί που έχει φτάσει στο κατώφλι του μπορεί ακόμα να ελέγξει.
Απαντάει 202 Ενώ το βίντεο δημιουργείται και 200 Ερώτηση κάθε 5 έως 10 δευτερόλεπτα. Κάθε έλεγχος ρωτά τον πάροχο μία φορά και απαντά αμέσως. δεν περιμένει ποτέ το βίντεο. Μια δουλειά διατηρείται για 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 οικοδεσπότη, όπως οι δημιουργημένες εικόνες.
| Το καθεστώς | Πότε |
|---|---|
400 | Χωρίς προειδοποίηση, μια διάρκεια εκτός 0 έως 60 (invalid_value); μια ανάλυση που η γεννήτρια δεν προσφέρει (unsupported_resolution); καμία εικόνα για μια γεννήτρια που χρειάζεται ένα (image_required); ένα μοντέλο που δεν είναι μια γεννήτρια βίντεο (invalid_model). |
402 | Η ισορροπία Pro δεν μπορεί να καλύψει το βίντεο. |
404 | Δεν υπάρχει τέτοια γεννήτρια (model_not_found) ή καμία εργασία από αυτό το αναγνωριστικό για το nym σας, ή είναι πάνω από 24 ώρες (video_not_found). |
429 | Το δικό σας nym έχει ήδη 10 βίντεο rendering (video_jobs_limitΕλέγξτε τα και υποβάλετε περισσότερα μόλις τελειώσει ένα. |
502 | Η γεννήτρια αρνήθηκε την εργασία.Τίποτα δεν χρεώνεται εκτός αν ο πάροχος χρεώσει για αυτό. |
503 | Τα βίντεο δεν μπορούν να παραδοθούν ή να αποθηκευτούν αυτή τη στιγμή (media_hosting_unavailable, service_unavailable). |
cURL
curl https://nymbot.ai/api/v1/videos \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "veo", "prompt": "Waves rolling onto a beach at sunrise", "duration": 8, "aspect_ratio": "16:9"}'
curl https://nymbot.ai/api/v1/videos/vid_3e9a51c07b2f4d86 \
-H "Authorization: Bearer $NYMBOT_API_KEY"
Python
import os, time
import requests
headers = {"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]}
job = requests.post(
"https://nymbot.ai/api/v1/videos",
headers=headers,
json={"model": "veo", "prompt": "Waves rolling onto a beach at sunrise", "duration": 8, "aspect_ratio": "16:9"},
).json()
while True:
time.sleep(8)
status = requests.get("https://nymbot.ai/api/v1/videos/" + job["id"], headers=headers).json()
if status["status"] in ("completed", "failed"):
break
print(status["data"]["url"] if status["status"] == "completed" else status["error"])
JavaScript
const headers = {
"Authorization": "Bearer " + process.env.NYMBOT_API_KEY,
"Content-Type": "application/json",
};
const job = await (await fetch("https://nymbot.ai/api/v1/videos", {
method: "POST",
headers,
body: JSON.stringify({ model: "veo", prompt: "Waves rolling onto a beach at sunrise", duration: 8, aspect_ratio: "16:9" }),
})).json();
let status;
do {
await new Promise((r) => setTimeout(r, 8000));
status = await (await fetch("https://nymbot.ai/api/v1/videos/" + job.id, { headers })).json();
} while (status.status !== "completed" && status.status !== "failed");
console.log(status.status === "completed" ? status.data.url : status.error);
Το κείμενο της ομιλίας
Διαβάζει κείμενο δυνατά και επιστρέφει το ίδιο το αρχείο ήχου, όχι έναν σύνδεσμο. audio.speech.create Το OpenAI SDKs λειτουργεί.
POST https://nymbot.ai/api/v1/audio/speech - χρειάζεται ένα κλειδί API, ή Πληρωμή Lightning κατόπιν αιτήματος.
| Το πεδίο | Τύπος | Απαιτείται | Περιγραφή |
|---|---|---|---|
model | Στρογγυλο | Όχι | Ένα μοντέλο ομιλίας από Ο κατάλογος των μοντέλων ήχουΠροεπιλεγμένη φωνή: Η τυπική φωνή, @cf/myshell-ai/melotts. aura-2 Το Deepgram Aura 2. |
input | Στρογγυλο | Ναί | Το κείμενο για ανάγνωση: έως 800 χαρακτήρες για την τυπική φωνή, 2.000 για την Aura 2. |
voice | Στρογγυλο | Όχι | Ένα Voice ID από Η λίστα των φωνώνΈνας μεγάλος ομιλητής, όπως luna (ή aura-2-luna-en) ή μια γλώσσα MeloTTS (en, es, fr, zhΑνοιχτά ονόματα φωνής όπως alloy αποδέχονται και δίνουν την προεπιλεγμένη φωνή του μοντέλου. |
language | Στρογγυλο | Όχι | Ο γλωσσικός κώδικας όπως esΧωρίς μια φωνή, επιλέγει μία για αυτή τη γλώσσα. Μια φωνή που μιλά μια άλλη γλώσσα επιστρέφει 422 voice_language_mismatchκαι μια γλώσσα για την οποία το μοντέλο δεν έχει φωνή 422 unsupported_language. |
response_format | Στρογγυλο | Όχι | Η κανονική φωνή επιστρέφει mp3 Aura 2 επιστρέφει mp3 (Η αποτυχία είναι opus, aac, flac, wav ή pcm. |
speed | Αριθμός | Όχι | Αποδεκτή και αγνοημένη. |
Η τυπική φωνή κοστίζει μια επίπεδη 3 τυπικές πιστώσεις (30 sats) ένα αίτημα, όπως στην εφαρμογή. Aura 2 είναι Pro, τιμολογείται από τους χαρακτήρες που στέλνετε.
Content-TypeΤο κόστος είναι στο X-Nymbot-Cost-Sats Αν το πρότυπο ομιλίας αποτύχει, δεν χρεώνεται τίποτα.
Απάντηση
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| Το καθεστώς | Πότε |
|---|---|
400 | Καμία είσοδος, είσοδος πάνω από το όριο του μοντέλου (input_too_long); μια μορφή που το μοντέλο δεν μπορεί να παράγει (unsupported_response_formatΜια άγνωστη φωνή (invalid_voice)· ένα μοντέλο που δεν είναι μοντέλο ομιλίας (invalid_model). |
422 | Η φωνή δεν μιλάει τη γλώσσα που δίνεται, ή το μοντέλο δεν έχει φωνή γι 'αυτό. |
502 | Το μοντέλο ομιλίας απέτυχε. τίποτα δεν χρεώνεται. |
cURL
curl https://nymbot.ai/api/v1/audio/speech \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "aura-2", "voice": "luna", "input": "Your invoice has been paid."}' \
--output speech.mp3
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
audio = client.audio.speech.create(
model="aura-2",
voice="luna",
input="Your invoice has been paid.",
)
audio.write_to_file("speech.mp3")
JavaScript
import { writeFile } from "node:fs/promises";
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const audio = await client.audio.speech.create({
model: "aura-2",
voice: "luna",
input: "Your invoice has been paid.",
});
await writeFile("speech.mp3", Buffer.from(await audio.arrayBuffer()));
Μοντέλα ήχου και φωνές
Δύο δημόσιες λίστες για να επιλέξετε ένα μοντέλο ομιλίας και φωνής, ή ένα μοντέλο μεταγραφής. Υπάρχουν 41 Αγγλοι ομιλητές Aura 2 και τέσσερις γλώσσες MeloTTS.
GET https://nymbot.ai/api/v1/audio/models Δεν χρειάζεται κλειδί.
GET https://nymbot.ai/api/v1/audio/voices?language=en Δεν χρειάζεται κλειδί.
| Το πεδίο | Τύπος | Απαιτείται | Περιγραφή |
|---|---|---|---|
language | Ετικέτα (query) | Όχι | Μόνο φωνές για αυτή τη γλώσσα. |
model | Ετικέτα (query) | Όχι | Μόνο φωνές για αυτό το μοντέλο. |
Η απάντηση (η φωνή)
{
"object": "list",
"data": [
{ "id": "luna", "name": "Luna", "provider": "deepgram", "model_id": "aura-2", "models": ["aura-2"], "language": "en", "description": "Aura 2 English voice", "gender": "female", "preview_url": null },
{ "id": "en", "name": "MeloTTS English", "provider": "myshell", "model_id": "@cf/myshell-ai/melotts", "models": ["@cf/myshell-ai/melotts", "melotts"], "language": "en", "description": "English (MeloTTS)", "gender": null, "preview_url": null }
]
}
Τα μοντέλα λίστα απαντήσεις {"object": "list", "data": {"tts": […], "stt": […]}}Κάθε μοντέλο ομιλίας δίνει την ισορροπία του, την τιμή, max_input_chars,
response_formats, languages και default_voice· το μεταγραφικό μοντέλο δίνει τα ψευδώνυμα του, max_file_bytes, max_seconds, μορφές και τιμή ανά λεπτό.
cURL
curl https://nymbot.ai/api/v1/audio/models
curl "https://nymbot.ai/api/v1/audio/voices?language=en"
Python
import requests
print(requests.get("https://nymbot.ai/api/v1/audio/models").json())
for voice in requests.get("https://nymbot.ai/api/v1/audio/voices", params={"language": "en"}).json()["data"]:
print(voice["id"], voice["model_id"])
JavaScript
console.log(await (await fetch("https://nymbot.ai/api/v1/audio/models")).json());
const voices = await (await fetch("https://nymbot.ai/api/v1/audio/voices?language=en")).json();
for (const v of voices.data) console.log(v.id, v.model_id);
Ομιλία στο κείμενο
Μετατρέπει μια εγγραφή σε κείμενο με το Whisper. Αυτό είναι το τελικό σημείο μεταγραφής του OpenAI, οπότε
audio.transcriptions.create λειτουργεί .
POST https://nymbot.ai/api/v1/audio/transcriptions - χρειάζεται ένα κλειδί API, ή Πληρωμή Lightning κατόπιν αιτήματοςΤο σώμα είναι multipart/form-data.
| Το πεδίο | Τύπος | Απαιτείται | Περιγραφή |
|---|---|---|---|
file | αρχείο | Ναί | Η εγγραφή, από 256 bytes έως 25 MB και έως 30 λεπτά: WAV, WebM, MP4 ή M4A, Ogg ή Opus, MP3 και οι άλλες μορφές Whisper διαβάζει. |
model | Στρογγυλο | Όχι | Ελλείψεις whisperΑυτό είναι το Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo και @cf/openai/whisper-large-v3-turbo Σημαίνει το ίδιο. |
language | Στρογγυλο | Όχι | Η προφορική γλώσσα, όπως enΑνακαλύφθηκε αν είχε φύγει. |
prompt | Στρογγυλο | Όχι | Λέξεις ή ορθογραφίες που μπορείτε να περιμένετε, όπως ονόματα. Χρησιμοποιούνται μόνο οι πρώτοι 1.000 χαρακτήρες. |
response_format | Στρογγυλο | Όχι | json (Η αποτυχία είναι text, srt, vtt ή verbose_json. |
Για τα αρχεία WAV, WebM, MP4 και Ogg, το μήκος διαβάζεται από το αρχείο πριν από την εκτέλεση οποιουδήποτε, οπότε μια εγγραφή άνω των 30 λεπτών αρνείται προς τα εμπρός (με χάρη των 3 δευτερολέπτων). Το μήκος ενός αρχείου WAV προέρχεται από το ποσοστό δειγματοληψίας, τα κανάλια και το μέγεθος δείγματος. Το μήκος άλλων μορφών, όπως το 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 πίστωση ένα αίτημα. 402 δίνει αυτό που θα χρειαζόταν κάθε ισορροπία.Στην εφαρμογή, η μεταγραφή ενός φωνητικού μηνύματος μπορεί να είναι δωρεάν.Στο 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, το κόστος είναι στις επικεφαλίδες.
| Το καθεστώς | Πότε |
|---|---|
400 | Κανένα αρχείο, ένα αρχείο χωρίς χρήσιμο ήχο (invalid_audio, μια άγνωστη μορφή, ή ένα μοντέλο που δεν είναι μεταγραφικό μοντέλο (invalid_model). |
402 | Ούτε η ισορροπία μπορεί να το καλύψει. |
413 | Το αρχείο είναι μεγαλύτερο από 25 MB (file_too_largeΗ διάρκεια της ομιλίας δεν μπορεί να ξεπεράσει τα 8 λεπτά, ενώ η διάρκεια της ομιλίας δεν μπορεί να ξεπεράσει τα 8 λεπτά.audio_too_long). |
502 | Το Whisper δεν μπόρεσε να επεξεργαστεί τον ήχο. |
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);
Εμπιστοσύνη
Μετατρέπει το κείμενο σε φορείς για αναζήτηση, ομαδοποίηση και αποκλιμάκωση. Τα μοντέλα εκτελούνται στο Cloudflare και ξοδεύουν το πρότυπο υπόλοιπο.
POST https://nymbot.ai/api/v1/embeddings - χρειάζεται ένα κλειδί API, ή Πληρωμή Lightning κατόπιν αιτήματος.
| Το πεδίο | Τύπος | Απαιτείται | Περιγραφή |
|---|---|---|---|
model | Στρογγυλο | Ναί | Ένα ενσωματωμένο μοντέλο από GET /api/v1/models?type=embedding. |
input | Σύνδεσμος ή αριθμός σειρών | Ναί | Το κείμενο που πρέπει να ενσωματωθεί, μέχρι 100 μη κενές σειρές.token_input_unsupportedΚάθε εισαγωγή πρέπει να ταιριάζει με το μοντέλο context_length, μετρήθηκε ως περίπου τέσσερα bytes ένα token. |
encoding_format | Στρογγυλο | Όχι | float (η αποτυχία) ή base64 (Μικροσκοπικά 32 bit floats) |
dimensions | ΙΝΤΕΡ | Όχι | το μέγεθος του μοντέλου, ή για ένα μοντέλο με supported_dimensions Ένας από αυτούς, ο φορέας συντομεύεται και ομαλοποιείται.Τα υπόλοιπα απορρίπτονται. |
| μοντέλο | Διαστάσεις | Το πλαίσιο |
|---|---|---|
@cf/baai/bge-m3 | 1024 σε πολλές γλώσσες | 8.192 Ετικέτες |
@cf/qwen/qwen3-embedding-0.6b | 1024 σε πολλές γλώσσες | 8.192 Ετικέτες |
@cf/baai/bge-large-en-v1.5 | 1024 Αγγλικά | 512 Ετικέτες |
@cf/baai/bge-base-en-v1.5 | 768, Αγγλικά | 512 Ετικέτες |
@cf/baai/bge-small-en-v1.5 | 384 Αγγλικά | 512 Ετικέτες |
Η λίστα των μοντέλων είναι η πηγή της αλήθειας για τα οποία είναι διαθέσιμα και τι κοστίζουν. το EmbeddingGemma της Google, με μικρότερους φορείς κατόπιν αιτήματος, εμφανίζεται εκεί επίσης όταν ο κατάλογος έχει τιμή γι 'αυτό. οι ενσωματώσεις μετρούνται ανά token εισόδου και το ελάχιστο 0.05-πιστωτικό ισχύει για κάθε αίτημα, όχι για κάθε εισαγωγή, οπότε η παρτίδα πολλών κειμένων σε ένα αίτημα είναι πολύ φθηνότερη από την αποστολή τους ένα τη φορά.
Απάντηση
{
"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 array (token_input_unsupported(περισσότερα από 100 εισαγωγές)too_many_inputs); μια εισαγωγή μεγαλύτερη από τη χρήση του μοντέλου (input_too_long); ένα μέγεθος που το μοντέλο δεν μπορεί να δώσει (unsupported_dimensions). |
402 | Η στάνταρ ισορροπία είναι πολύ χαμηλή. οι ενσωματώσεις δεν χρησιμοποιούν ποτέ την ισορροπία Pro. |
404 | Κανένα μοντέλο με αυτό το όνομα. |
502 | Το μοντέλο απέτυχε. τίποτα δεν χρεώνεται. |
cURL
curl https://nymbot.ai/api/v1/embeddings \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "@cf/baai/bge-m3", "input": ["Lightning invoices expire.", "Invoices on Lightning have a time limit."]}'
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
result = client.embeddings.create(
model="@cf/baai/bge-m3",
input=["Lightning invoices expire.", "Invoices on Lightning have a time limit."],
)
print(len(result.data), len(result.data[0].embedding))
JavaScript
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const result = await client.embeddings.create({
model: "@cf/baai/bge-m3",
input: ["Lightning invoices expire.", "Invoices on Lightning have a time limit."],
});
console.log(result.data.length, result.data[0].embedding.length);