Fejlesztőknek
API dokumentáció
Három ingyenes eszközünk programból is hívható. Kulcsot ingyenes regisztráció után az ügyfélportálon hozhatsz létre.
Alapok
Három ingyenes eszközünk programból is hívható: a Mobil-előnézet (weboldal képe laptopon, tableten és mobilon), a Képoptimalizáló (tömörítés, átméretezés, formátumváltás) és a Cookie banner generátor. Minden végpont JSON-t ad vissza (kivéve a fájlletöltéseket), UTF-8 kódolással, HTTPS-en.
Hitelesítés. A Mobil-előnézet és a Képoptimalizáló API-kulccsal hívható: Authorization: Bearer kulcs vagy X-Api-Key: kulcs fejléccel. A kulcsot az ügyfélportál API oldalán hozhatod létre (ingyenes regisztráció után); a titkos részt csak egyszer mutatjuk meg. Hibás vagy visszavont kulcs: 401. A Cookie banner generátor kulcs nélkül, nyilvánosan hívható.
Aszinkron feldolgozás. A képkészítés és a tömörítés sorban, a háttérben fut: a létrehozó kérés 202-vel azonnal visszaadja az azonosítót, az állapotot pedig lekérdezéssel (néhány másodpercenként) vagy a Képoptimalizálónál eseményfolyammal (SSE) követheted. Az eredmények korlátozott ideig érhetők el, utána törlődnek.
Korlátok. Kulcsonként napi kvóta és percenkénti kéréskorlát van (lent eszközönként, mindig az aktuális értékkel). Túllépéskor 429 jön, a Retry-After fejléc mutatja, hány másodperc múlva próbálkozz újra. Ha a teljes rendszer sora megtelt: 503 és Retry-After: 60.
Böngészőből is hívható (CORS engedélyezve), de a kulcsot ne tedd nyilvános weboldal kódjába: szerveroldalról hívd.
Mobil-előnézet API
Egy weboldal címéből bemutató képet (mockupot) készít: az oldal laptopon, tableten és mobilon, választható háttér előtt, 2400 × 1500 px-es PNG, JPG és WebP képként. A kulcs előtagja kvm_. Az azonos címre és háttérre néhány órán belül kért képet a gyorsítótárból adjuk (cached: true, nem fogy a kvóta).
| Napi kvóta kulcsonként (alapértelmezés) | 200 render / nap |
|---|---|
| Kérések kulcsonként | 20 / perc |
| Kulcs nélkül (weboldalról, IP-nként) | 10 / óra, 30 / nap |
| Állapotlekérdezés | 120 / perc |
| Várakozó renderek (teljes rendszer) | legfeljebb 50 |
| Háttérkép mérete | legfeljebb 5 MB |
| Az elkészült képek megőrzése | 24 óra |
POSThttps://kodvena.hu/api/v1/mockup/renders
multipart/form-data. Válasz: 202 a sorba állított renderrel (vagy 200 + cached: true a kész, gyorsítótárazott eredménnyel).| Mező | Típus | Leírás |
|---|---|---|
| url* | string | A weboldal nyilvános http(s) címe. Belső hálózati, localhost és nem publikus címet nem fogadunk el. |
| background | object | A háttér: {"preset":"kodvena"} (alapértelmezés), {"type":"solid","color":"#f4f4f5"} vagy {"type":"gradient","stops":["#00bcfe","#8b5cf6"],"angle":135} (2–4 szín, #rrggbb). Multipartban JSON szövegként. Előbeállítások:kodvena (Kódvéna)ejfel (Éjfél)naplemente (Naplemente)menta (Menta)oszibarack (Őszibarack)erdo (Erdő)papir (Papír)grafit (Grafit) |
| background_image | fájl | Saját háttérkép (PNG, JPG vagy WebP) multipart kérésben; ilyenkor a background mező elhagyható. |
| fresh | boolean | true: nem a gyorsítótárból, hanem újonnan készül (fogy a kvóta). |
Példa válasz
{
"id": "01J…",
"status": "queued",
"queue_position": 2,
"url": "https://example.com",
"background": { "type": "gradient", "stops": ["#00bcfe", "#3b82f6", "#8b5cf6"], "angle": 135, "preset": "kodvena" },
"files": null,
"error": null,
"expires_at": "2026-10-19T10:00:00+02:00",
"created_at": "2026-10-18T10:00:00+02:00"
}GEThttps://kodvena.hu/api/v1/mockup/renders/{id}
queued, processing, done vagy failed. Kész állapotban a files mező a képek aláírt, időkorlátos letöltési címeit adja (png, jpg, webp, preview), mindegyikhez url (megjelenítés), download_url (letöltés) és bytes. Hibánál error.code és error.message. Kulcs nem kell hozzá.Példa válasz
{
"id": "01J…",
"status": "done",
"final_url": "https://example.com/",
"title": "Example Domain",
"files": {
"png": { "url": "https://kodvena.hu/api/v1/mockup/renders/01J…/files/mockup.png?expires=…&signature=…", "download_url": "…&download=1", "bytes": 1843210 },
"webp": { "url": "…", "download_url": "…", "bytes": 312004 }
},
"finished_at": "2026-10-18T10:00:21+02:00"
}GEThttps://kodvena.hu/api/v1/mockup/config
Teljes példa
# 1. render kérése
curl -X POST https://kodvena.hu/api/v1/mockup/renders \
-H "Authorization: Bearer kvm_…" -H "Content-Type: application/json" \
-d '{"url":"https://example.com","background":{"preset":"ejfel"}}'
# 2. állapot, amíg "done" vagy "failed" nem lesz (pár másodpercenként)
curl https://kodvena.hu/api/v1/mockup/renders/01J…
# 3. letöltés a files.png.download_url címről
curl -L -o mockup.png "<files.png.download_url>"
# saját háttérképpel
curl -X POST https://kodvena.hu/api/v1/mockup/renders -H "X-Api-Key: kvm_…" \
-F url=https://example.com -F [email protected]Képoptimalizáló API
Egy kötegben több képet tömörít, méretez át vagy alakít más formátumra. Bemenet: image/jpeg, image/png, image/webp, image/avif. Ha az eredmény nagyobb lenne az eredetinél, az eredetit kapod vissza (kept_original: true). A kulcs előtagja kvk_.
| Napi kvóta kulcsonként (alapértelmezés) | 1000 kép / nap |
|---|---|
| Kérések kulcsonként | 30 / perc |
| Fájlméret | legfeljebb 10 MB / kép |
| Egy kötegben | legfeljebb 20 kép, összesen 60 MB |
| Kulcs nélkül (weboldalról, IP-nként) | 100 kép és 300 MB / nap, 20 köteg / óra |
| Az eredmények megőrzése | 60 perc |
POSThttps://kodvena.hu/api/v1/kepoptimalizalo/batches
multipart/form-data kéréssel. Válasz: 202, benne a köteg állapota és egy token: a további kérésekhez ez kell (X-Batch-Token fejlécben vagy ?token= paraméterben). A tokent csak ebben a válaszban adjuk ki, a válaszban lévő címek már tartalmazzák.| Mező | Típus | Leírás |
|---|---|---|
| files[]* | fájl (több) | A képek. Darabszám, méret és köteg-méret: lásd a korlátokat. |
| format | string | Kimeneti formátum, alapból keep (az eredeti marad).keepjpegpngwebpavif |
| mode | string | lossy (alapértelmezés) vagy lossless. |
| quality | integer | 1–100, alapból 80 (veszteséges módban). |
| max_width / max_height | integer | 16–10000 px; a kép arányosan legfeljebb ekkorára kicsinyül (nagyítás nincs). |
| strip_metadata | boolean | Alapból true: az EXIF és más metaadat (pl. GPS) törlődik. |
Példa válasz
{
"token": "Zm9…40 karakter",
"id": "01J…",
"settings": { "format": "webp", "mode": "lossy", "quality": 78, "maxWidth": null, "maxHeight": null, "stripMetadata": true },
"done": false,
"progress": 0,
"counts": { "total": 2, "queued": 2, "processing": 0, "done": 0, "failed": 0 },
"files": [ { "id": "01J…", "name": "foto.jpg", "status": "queued", "queue_position": 1, "in_bytes": 2480012, "result_url": null } ],
"events_url": "https://kodvena.hu/api/v1/kepoptimalizalo/batches/01J…/events?token=…",
"expires_at": "2026-10-18T11:00:00+02:00"
}GEThttps://kodvena.hu/api/v1/kepoptimalizalo/batches/{id}
done: true, ha minden kép elkészült vagy hibára futott. Képenként: status, méretek, saved_percent, result_url, download_url, download_name; összesítve totals.saved_bytes, és ha van kész kép, zip_url.GEThttps://kodvena.hu/api/v1/kepoptimalizalo/batches/{id}/events
event: status minden változáskor (a törzs ugyanaz, mint a GET /batches/{id} válasza), a végén event: end. Egy kapcsolat legfeljebb kb. 30 mp-ig él, utána kapcsolódj újra (a retry mező ezt jelzi).GEThttps://kodvena.hu/api/v1/kepoptimalizalo/batches/{id}/files/{fileId}/result
?download=1 letöltésként adja. Az eredeti: …/original. Ha még nem kész: 409 not_ready.GEThttps://kodvena.hu/api/v1/kepoptimalizalo/batches/{id}/zip
Teljes példa
# 1. feltöltés
curl -X POST https://kodvena.hu/api/v1/kepoptimalizalo/batches -H "X-Api-Key: kvk_…" \
-F "files[][email protected]" -F "files[][email protected]" \
-F format=webp -F quality=78 -F max_width=1920
# 2. állapot (a válaszból: id és token)
curl -H "X-Batch-Token: <token>" https://kodvena.hu/api/v1/kepoptimalizalo/batches/<id>
# 3. minden kész kép ZIP-ben
curl -L -o kepek.zip "https://kodvena.hu/api/v1/kepoptimalizalo/batches/<id>/zip?token=<token>"Hibakezelés
Hibánál a válasz JSON: message (magyar, megjeleníthető szöveg), code (géppel feldolgozható) és mezőhibánál errors (mezőnként). A leggyakoribbak:
| HTTP | code | Mikor |
|---|---|---|
| 401 | — | Hiányzó, hibás vagy visszavont API-kulcs. |
| 403 | forbidden | Képoptimalizáló: hiányzó vagy hibás köteg-token. |
| 404 | not_found | Nincs ilyen azonosító, vagy az eredmény már lejárt és törlődött. |
| 409 | not_ready | A kért kép még nem készült el. |
| 413 | file_too_large / batch_too_large | A fájl vagy a köteg túl nagy. |
| 415 | unsupported_type | Nem támogatott képformátum. |
| 422 | invalid_url / invalid_background / invalid_settings / no_files / too_many_files | Hibás bemenet (részletek az errors mezőben). |
| 429 | quota_exceeded / — | Elfogyott a napi kvóta, vagy túl sok kérés percenként (Retry-After). |
| 503 | queue_full | A rendszer sora most tele van, próbáld újra (Retry-After: 60). |
Kérdésed van, vagy nagyobb kvóta kellene? Írj nekünk egy ticketet az ügyfélportálon.