Pro API: saldo, rajat ja koulutetut hahmot

Kaksi lukureittiä, jotka ovat aina sallittuja avaimen käyttöoikeuksista riippumatta, sekä sovelluksessa säilytettävä aktiviteettiloki.

Saldo ja rajat

GET /credits

json
{ "balance": 1830, "licenseId": "lic_...", "key": "k_1a2b3c4d",
  "limits": { "concurrent": 2, "perMinute": 60, "perDay": 0 }, "running": 1,
  "buy_url": "https://tendre.ai/credits?license=lic_..." }
KenttäMerkitys
balanceJäljellä olevat krediitit. null kun saldo on tuntematon (testiympäristö).
licenseIdLisenssi, johon tämä avain kuuluu.
keyAvaimen julkinen tunniste, turvallinen lokiin kirjoitettavaksi. Ei koskaan salaisuus.
limits.concurrentSamanaikaisesti käynnissä olevien renderöintien määrä, oletuksena 2.
limits.perMinuteLähetysten määrä minuutissa, oletuksena 60.
limits.perDayAvaimelle asettamasi päivittäinen krediittiraja. 0 tarkoittaa ei rajaa.
runningTämän avaimen renderöinnit, joita odotetaan vielä noudettavaksi.
buy_urlLisenssisi krediittien ostosivu, kortilla tai kryptovaluutalla.

Tämä on API:n halvin kutsu ja oikea tapa tarkistaa, että avain toimii.

Krediittien ostaminen tallennetulla kortilla

POST /credits/purchase

json
{ "pack": "m" }

pack on paketin tunnus (s, m, l, xl, xxl tai xxxl) tai "c25000" vapaalle määrälle suurimman paketin yli. Maksu veloitetaan kortilta, joka on tallennettu tilisivusi automaattiseen täydennykseen, vain jos olet sallinut siellä agenttisi ostaa, siellä asettamasi kuukausirajan puitteissa (automaattiset täydennykset mukaan lukien). Sähköposti vahvistaa jokaisen oston. Yksi osto kerrallaan.

Vastaus on 200 { credits, eur, balance }. Jokaisessa hylkäyksessä on buy_url, tavallinen ostolinkki, jota käytät sen sijaan: 402 confirmation_required (pankkisi pyytää vahvistustasi) tai payment_declined; 409 agent_not_allowed, no_saved_card, monthly_cap_reached, topup_in_progress tai purchase_in_progress; 400 unknown_pack. Kun vastaus on 503 payment_unavailable, emme tiedä, menikö veloitus läpi: älä yritä heti uudelleen, läpi mennyt veloitus hyvitetään.

Koulutetut hahmot

Nämä ovat hahmot, jotka on koulutettu LoRA:na kuviin ja tavallisiin videoihin. Multi-Ref Video -hahmot, joissa seitsemän näkymää luodaan yhdestä valokuvasta, ovat eri asia: katso Characters.

GET /loras

json
{ "image": [ { "name": "megan_krea2", "trigger": "megan", "base": "krea2", "size": 0 } ],
  "video": [ { "name": "megan_ltx", "trigger": "megan", "size": 0 } ] }

Välitä name arvona lora-parametrille, ottaen se image-listasta kuville ja video-listasta videoille, ja lisää sen trigger promptiin, muuten hahmo ei ilmesty. Hahmo, joka ei kuulu tilille, palauttaa 403 unknown_lora.

Lataa oma LoRA

POST /loras/upload

.safetensors-tiedosto, jonka sinulla jo on, joko muualla koulutettu tai omalla palvelimellasi sijaitseva, siirtyy tilin tallennustilaan ja on käytettävissä lora-parametrin kautta aivan kuten sovelluksessa koulutettu hahmo. Lataaminen onnistuu kahdella tavalla: yhdellä kertaa enintään 90 MB, tai osissa sen ylittäessä. LoRA painaa yleensä 200-500 MB, joten jälkimmäinen on tavallisin tapaus. Yläraja on 800 MB molemmilla tavoilla.

Yhdellä kertaa: raaka runko (application/octet-stream, Content-Length vaaditaan), parametrit URL:ssa.

Yli 100 MB:n pyyntö ei koskaan tavoita API:a. Infrastruktuuri edessä hylkää sen, joten vastauksena tulee pelkkä 413 ilman JSON-runkoa: asiakas, joka jäsentää jokaisen virheen JSON:na, kaatuu siihen eikä raportoi siitä. Tuo koko kuuluu osiin.

ParametriRooli
nameTiedostonimi, .safetensors, kirjaimet, numerot, . _ -, enintään 80 merkkiä. Jo käytetty nimi korvataan.
kindimage (oletus) tai video. Vaatii vastaavasti images- tai videos-käyttöoikeuden.
triggerPromptiin lisättävä trigger-sana, enintään 60 merkkiä.
bash
curl -s -X POST "$B/loras/upload?name=my_character.safetensors&kind=image&trigger=ohwx"   -H "Authorization: Bearer $KEY" -H "Content-Type: application/octet-stream"   --data-binary @my_character.safetensors

Vastaus on { "ok": true, "name": "my_character.safetensors", "kind": "image", "size": 314572800, "trigger": "ohwx", "architecture": "krea2", "storage": { ... } }.

Yhteensopivuus tarkistetaan latauksen yhteydessä. Kuvat renderöidään Krea 2:lla, jolla on oma arkkitehtuurinsa: vain Krea 2 LoRA soveltuu, oli se sitten koulutettu tendre.AI:ssa tai Krea 2:lle muualla. Huomaa, että FLUX.1 LoRA hylätään, mikä ei ole kaikkien ensimmäinen arvaus. Videot renderöidään LTX 2.5:llä, joten tarvitaan LTX 2.5 tai 2.3 LoRA.

API lukee tiedoston otsikon ennen tallentamista. SDXL:ksi, SD 1.5:ksi, SD3:ksi, FLUX.1:ksi, Waniksi tai HunyuanVideoksi tunnistettu LoRA hylätään vastauksella 415 incompatible_lora, joka nimeää löydetyn architecture-arvon, ja tiedosto, joka ei ole safetensors, hylätään vastauksella 415 invalid_safetensors. Mitään ei tallenneta eikä kvootista vähennetä kummallakaan tapauksessa.

Yksi tapaus läpäisee tarkistuksen: arkkitehtuuri, jota otsikko ei tunnista, hyväksytään arvolla architecture: "inconnue", ja se arvioidaan vasta renderöinnin yhteydessä. Se on ainoa virhe, jonka selvittäminen maksaa sinulle yhden renderöinnin.

Lähetä suuri LoRA osissa

Kolme kutsua, plus yksi keskeyttämistä varten.

1. Avaa istunto. POST /loras/upload/start parametreilla { "name", "kind", "size", "trigger" }, jossa size on koko tiedosto tavuina. Se tarkistaa nimen, koon ja kvotin, ja vastaa:

json
{ "uploadId": "...", "part_size": 20971520, "max_part_size": 104857600, "parts_expected": 15 }

2. Lähetä kukin osa. POST /loras/upload/part?uploadId=...&part=N, raaka runko, osat numeroituna ykkösestä alkaen, kukin part_size tavua paitsi viimeinen, ei koskaan enemmän kuin max_part_size. Kukin vastaus sisältää etag-arvon, ja tarvitset ne kaikki seuraavaa vaihetta varten, joten tallenna ne sitä mukaa.

Osa 1 on erityinen: se sisältää tiedoston otsikon, joten arkkitehtuuri arvioidaan siellä. Yhteensopimaton LoRA havaitaan siellä vastauksella 415 ja istunto perutaan. Saat tietää 20 MB:n jälkeen eikä vasta 400 MB:n jälkeen.

3. Sulje se. POST /loras/upload/finish parametreilla { "uploadId", "parts": [ { "part": 1, "etag": "..." }, ... ] }. Se kokoaa tiedoston ja rekisteröi sen, vastaten täsmälleen kuten yhdellä kertaa tapahtuva lataus.

Keskeyttääksesi, lähetä POST /loras/upload/abort parametrilla { "uploadId" }. Istunto, johon ei tule finish-kutsua, poistetaan kuuden tunnin kuluttua. GET /loras-listauksessa ei näy mitään eikä kvootista vähennetä mitään ennen kuin finish onnistuu, joten keskeytynyt lataus ei kuluta tallennustilaa.

python
import os, requests
B, H = "https://api.tendre.ai/pro/v1", {"Authorization": "Bearer " + KEY}
path = name = "my_character.safetensors"
s = requests.post(f"{B}/loras/upload/start", headers=H,
                  json={"name": name, "kind": "image", "size": os.path.getsize(path), "trigger": "ohwx"}).json()
parts = []
with open(path, "rb") as f:
    n = 1
    while chunk := f.read(s["part_size"]):
        r = requests.post(f"{B}/loras/upload/part",
                          headers={**H, "Content-Type": "application/octet-stream"},
                          params={"uploadId": s["uploadId"], "part": n}, data=chunk)
        r.raise_for_status()
        parts.append({"part": n, "etag": r.json()["etag"]})
        n += 1
done = requests.post(f"{B}/loras/upload/finish", headers=H,
                     json={"uploadId": s["uploadId"], "parts": parts}).json()
print(done["name"], done["architecture"], done["storage"])

Valmis PowerShell-skripti toimitetaan sovelluksen mukana osoitteessa scripts/api-pro-lora.ps1.

Poista LoRA

DELETE /loras/{name}?kind=image|video poistaa tiedoston ja vapauttaa kvotin. Se vastaa { "ok": true, "name": ..., "storage": { ... } }, tai 404 unknown_lora kun nimeä ei ole olemassa tilillä.

Tallennuskvootti

Jokainen lisenssi saa enintään 20 tiedostoa ja 10 GB tilaa, kuvat ja videot yhteensä, ja sovelluksessa koulutetut hahmot lasketaan mukaan. GET /loras raportoi tilan storage-kentässä:

json
{ "count": 3, "max_count": 20, "bytes": 943718400, "max_bytes": 10737418240 }

Kumman tahansa rajan ylittyessä lataus vastaa 413 lora_quota ja kertoo mitä on jäljellä. Poista tiedosto tehdäksesi tilaa.

Hahmon kouluttaminen ei ole vielä API:n kautta saatavilla. Se tapahtuu sovelluksessa, ja tulos näkyy tässä listassa.

Aktiviteetti

Sovellus pitää lokia kaikista avaimillasi tehdyistä renderöinneistä (päivämäärä, avain, tyyppi, hinta, tila) sekä avainkohtaisesta kulutuksesta kohdassa Settings > API > Activity.

Sieltä voit myös peruuttaa vuotaneen avaimen koskematta muihin.

Windows · Mac · Pilvi tai paikallinen

Generoi yksityisesti. Tänään.

Lataa tendre.AI ilmaiseksi ja luo rajattomasti, yksityisesti, omalla GPU:llasi.

OS Windows 10/11GPU NVIDIA 8GB+VRAM 12GB suositeltuLevytila 20GB

Mac: Apple silicon (M1 tai uudempi), macOS 13 tai uudempi. Intel-Maceja ei tueta.

Paikallinen kuvien generointi Macilla vaatii M4-sirun ja 24 Gt muistia, tai M2- tai M3 Pro-, Max- tai Ultra-sirun ja 24 Gt muistia. Tätä heikommilla malleilla kaikki toimii verkossa krediittejä käyttäen. Retusointi ja video toimivat toistaiseksi Macilla vain verkossa.

Kaikki tietoa tendre.AI:sta Macille

Ei NVIDIA-GPU:ta? Aloita 100% pilvessä: 5 ilmaista kuvaa ja 1 ilmainen video joka päivä. NVIDIA-kortti (8Gt+) avaa rajoittamattoman paikallisen generoinnin.