Pro API: ohjaa pilvessä tapahtuvaa renderöintiä omalta palvelimeltasi
Kaikki mitä sovellus tekee verkossa (kuvat, retusointi, videot, koulutetut hahmot) on myös saavutettavissa HTTP:n kautta, samaan hintaan krediiteissä, ilman että sovelluksen tarvitsee olla auki. Ohjaat sitä omalta palvelimeltasi, skripteistäsi tai agentistasi lisenssisi krediiteillä.
Saatavilla Pro-lisenssillä. Avain luodaan sovelluksessa kohdassa Asetukset > API.
| Perusta | https://api.tendre.ai/pro/v1 |
| Todennus | otsake Authorization: Bearer tk_pro_... |
| Formaatti | JSON sisään ja ulos, PNG kuville, MP4 videoille |
| Konekuvaus | openapi-pro.yaml (OpenAPI 3.0), asiakkaan generointia varten |
Hanki avain
Sovelluksessa Pro-lisenssillä: Asetukset > API > Uusi avain. Anna sille nimi (esimerkiksi "tuotantopalvelin"), valitse sen käyttöoikeudet ja halutessasi päivittäinen krediittiraja sekä vanhenemispäivä.
Avain näytetään vain kerran. Kopioi se heti. Kadonnutta avainta ei palauteta, se korvataan uudella.
- Enintään kolme aktiivista avainta per lisenssi. Riittää kierrättämään yhden ilman palvelukatkosta: luo uusi, asenna se, peruuta vanha.
- Avain ei ole istumapaikka. Tietokoneesi ja puhelimesi pysyvät käytettävissä sen rinnalla.
- Avain on yhtä arvokas kuin krediittisi. Älä koskaan laita avainta verkkosivulle, jaettuun sovellukseen tai julkiseen repositorioon. Aseta sille päivittäinen krediittiraja heti kun se elää palvelimella.
Mitä avaimella saa tehdä
| Käyttöoikeus | Mitä se sallii |
|---|---|
| Luku | Aina myönnetty: renderöinnin tila, tiedoston lataus, saldo, hahmoluettelo |
| Kuvat | Kuvien lähettäminen ja peruuttaminen (generointi, retusointi, variaatio) |
| Videot | Videoiden lähettäminen ja peruuttaminen |
Kutsu avaimen käyttöoikeuksien ulkopuolelta vastaa 403 portee_manquante, puuttuva
käyttöoikeus löytyy kentästä portee.
Renderöinnin elinkaari
Aina samat kolme vaihetta.
- Lähetä.
POST /imagestaiPOST /videos. Välitön vastausjobId:llä ja hinnalla. - Kysy tilaa.
GET /images/{jobId}taiGET /videos/{jobId}, kolmen sekunnin välein, kunnesstatusoncompletedtaifailed. - Lataa.
GET /images/{jobId}/filetaiGET /videos/{jobId}/file, heti kun tila oncompleted. Tiedostoa ei säilytetä, joten lataa se odottamatta.
Karkeita aikatauluja: 10-40 sekuntia kuvalle, 1-5 minuuttia videolle, pidempään kun moottori käynnistyy kylmältä.
Ensimmäinen kutsusi
KEY=tk_pro_...
B=https://api.tendre.ai/pro/v1
curl -s $B/credits -H "Authorization: Bearer $KEY"
{ "balance": 1830, "licenseId": "lic_...", "key": "k_1a2b3c4d",
"limits": { "concurrent": 2, "perMinute": 60, "perDay": 0 }, "running": 0 }
Jos tämä vastaa, kaikki muukin toimii.
Täydellinen renderöinti kolmella tavalla
bash
KEY=tk_pro_...
B=https://api.tendre.ai/pro/v1
JOB=$(curl -s $B/images -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"prompt":"a lighthouse at dawn, photorealistic","width":1216,"height":832}' | jq -r .jobId)
until curl -s $B/images/$JOB -H "Authorization: Bearer $KEY" | grep -q '"completed"'; do sleep 3; done
curl -s $B/images/$JOB/file -H "Authorization: Bearer $KEY" -o lighthouse.png
PowerShell
$H = @{ Authorization = "Bearer tk_pro_..." }
$B = "https://api.tendre.ai/pro/v1"
$job = Invoke-RestMethod -Uri "$B/videos" -Method Post -Headers $H -ContentType "application/json" `
-Body '{"prompt":"waves on a beach at sunset, gentle wind","width":1080,"height":1920,"audio":true}'
do { Start-Sleep 5; $s = Invoke-RestMethod -Uri "$B/videos/$($job.jobId)" -Headers $H } while ($s.status -eq "pending")
Invoke-WebRequest -Uri "https://api.tendre.ai$($s.file_url)" -Headers $H -OutFile beach.mp4
Python
import time, requests
KEY, B = "tk_pro_...", "https://api.tendre.ai/pro/v1"
H = {"Authorization": f"Bearer {KEY}"}
job = requests.post(f"{B}/videos", headers=H, json={"prompt": "waves on a beach at sunset, gentle wind", "audio": True}).json()
while (s := requests.get(f"{B}/videos/{job['jobId']}", headers=H).json())["status"] == "pending":
time.sleep(3)
if s["status"] == "completed":
open("beach.mp4", "wb").write(requests.get("https://api.tendre.ai" + s["file_url"], headers=H).content)
else:
print("failed:", s.get("detail"))
Mitä seuraavaksi
- Kuvat: generointi, kolme retusointitilaa, hahmot.
- Videot: formaatit, hintaruudukko, alku- ja loppuruudut.
- Tili: saldo, rajat, koulutetut hahmot, toiminta.
- Rajat ja virheet: rajat, kaikki virhekoodit, hyvät käytännöt.
Mitä ei ole vielä
Suunnitellussa järjestyksessä: hahmojen koulutus omista valokuvistasi, äänet, skaalaus 2K:hon, kiinteä siemen renderöinnin toistamiseksi ja webhookit jotta voit lopettaa tilan kyselemisen.
API on versioitu. Kaikki tässä kuvattu pysyy voimassa osoitteessa /pro/v1: lisäykset eivät
koskaan riko olemassa olevaa, ja rikkova muutos toimitettaisiin nimellä /pro/v2.