Pro API: limieten, foutcodes en best practices

Limieten

Elke sleutel heeft er drie: gelijktijdige renders (standaard 2), aanvragen per minuut (standaard 60) en, als je er een instelt, een dagelijks creditlimiet.

Als een limiet is bereikt, is het antwoord 429 met een Retry-After-header in seconden. Een geweigerde aanroep kost niets. De dag die voor de limieten wordt gebruikt, is de UTC-dag.

Lange video's voegen twee eigen limieten toe: 30 shots per reeks en 5 reeksen tegelijk per licentie (zie Video's).

Personages hebben er één: 50 per Pro-licentie, inclusief de in de app gemaakte personages, en een personage dat één jaar niet wordt gebruikt, wordt verwijderd (zie Personages). Locaties, objecten en dieren hebben hun eigen limiet, apart geteld: 50 per Pro-licentie (10 bij een persoonlijke licentie, in de app), verwijderd na datzelfde jaar ongebruikt (zie Locaties, objecten, dieren, stijlen en outfits).

Face swap heeft twee eigen limieten: een fragment van maximaal 20 s per render, en onze server bereidt twee video's tegelijk voor. Daarna is het antwoord 429 server_busy: wacht tot na Retry-After (zie Face swap). Via de MCP neemt een Face swap met overgang een hele video van maximaal 60 s, en de server verwerkt er twee tegelijk: daarboven vraagt de tool het over een paar minuten opnieuw te proberen.

Onze eigen kaart wordt gedeeld met de gebruikers van de app. Als die bezet is, gaan je renders naar gehuurde GPU's, tegen dezelfde prijs en via dezelfde API, met een paar tientallen seconden extra bij het opstarten.

Foutcodes

CodeerrorWat het betekent en wat je moet doen
400prompt_requiredVoeg een prompt toe.
400forbidden_contentHet inhoudsfilter heeft de prompt geweigerd.
400invalid_seedseed moet een geheel getal zijn van 0 tot 4294967295.
400image_required, inpaint_images_requiredDe modus vereist image_b64, en mask_b64 voor inpaint.
401key_required, invalid_keyHeader ontbreekt of sleutel is onbekend.
402insufficient_creditsOnvoldoende saldo voor deze render (cost wordt vermeld). Het antwoord bevat buy_url, de pagina om credits te kopen voor je licentie. Een render of training die bezig is, reserveert de prijs tot deze klaar is: engaged geeft aan hoeveel credits op die manier zijn gereserveerd.
402confirmation_required, payment_declinedEen aankoop met je opgeslagen kaart (POST /credits/purchase): je bank vraagt je bevestiging, of heeft de betaling geweigerd. Gebruik buy_url, de gewone aankooplink.
409agent_not_allowed, no_saved_card, monthly_cap_reachedEen aankoop met je opgeslagen kaart: je agent mag niet kopen (automatisch opwaarderen op je accountpagina), er is geen kaart opgeslagen, of de aankoop zou je maandelijkse limiet overschrijden. Gebruik buy_url.
409topup_in_progress, purchase_in_progressEr loopt al een andere betaling met je opgeslagen kaart: wacht tot die klaar is.
400unknown_packEen aankoop met een onbekend pakket, of een vrij aantal buiten de grenzen of niet in hele stappen.
503payment_unavailableDe betaling kon niet worden bevestigd: we weten niet of de afschrijving is gelukt. Probeer het niet meteen opnieuw; een gelukte afschrijving wordt bijgeschreven.
403key_disabled, key_revoked, key_expiredSleutel uitgeschakeld, ingetrokken of verlopen: maak een nieuwe aan in de app.
403license_revoked, license_not_proLicentie ingetrokken, of een account dat geen Pro is.
403missing_scopeDe sleutel mist de gevraagde toestemming, vermeld in scope.
403unknown_loraEen personage dat niet tot het account behoort.
404media_unavailableHet bestand is verdwenen: dien opnieuw in.
404unknown_loraBij DELETE /loras/{name} bestaat er geen bestand met die naam op het account. Let op de code: dezelfde naam geeft 403 terug als een render een personage opvraagt dat niet van jou is.
411size_requiredEen LoRA-upload zonder Content-Length. De body is onbewerkt, dus de grootte moet vooraf worden aangekondigd.
413file_too_largeEen LoRA van meer dan 800 MB, of meer dan 90 MB in één upload. Verstuur het in delen. Een kale 413 zonder JSON-body is iets anders: het verzoek heeft de API nooit bereikt, zie de uploadsectie.
413part_too_largeÉén deel is groter dan de max_part_size die de sessie heeft aangekondigd.
404unknown_upload_sessionDe uploadId bestaat niet, of de sessie is verlaten (zes uur) of geannuleerd door een geweigerd deel.
503upload_refused, part_refusedDe opslag was niet bereikbaar tijdens de upload: probeer opnieuw.
507storage_fullEr is geen ruimte meer op de serveropslag (LoRA's of reeksen in uitvoering). Het team wordt gewaarschuwd: probeer het later opnieuw.
415invalid_safetensorsHet geüploade bestand is geen safetensors.
415incompatible_loraDe LoRA is voor een andere architectuur, vermeld in architecture. Afbeeldingen gebruiken alleen Krea 2, video's LTX 2.5 of 2.3. Er wordt niets opgeslagen en er wordt geen quota gebruikt.
413lora_quotaDe LoRA-opslag van het account is vol (20 bestanden of 10 GB). Het antwoord geeft aan wat er nog over is; verwijder een bestand om ruimte te maken.
413image_too_largeBronafbeelding of masker groter dan 12 MB gedecodeerd.
429too_many_concurrent_renders, rate_limited, daily_capEen limiet is bereikt, zie Retry-After.
429daily_credit_capHet dagelijkse creditlimiet van de sleutel is bereikt (cap, spent, cost).
502submission_failed, status_failedEen storing aan de renderkant: probeer het over een paar seconden opnieuw.
503license_check_failedHet account kan momenteel niet worden gecontroleerd: probeer het over een minuut opnieuw.
400invalid_extend_framesEen verlenging waarvan extend_frames niet 9, 17, 25, 33, 41 of 49 is, of een extend_video dat niet precies dat aantal frames heeft.
400extension_with_transitionEen verlenging kan geen overgang zijn, behalve bij consistency enhanced: verwijder end_image, of vraag versterkte samenhang aan.
400extension_too_shortDe length van een verlenging telt alleen de nieuwe frames en moet minimaal 9 zijn.
404clip_unavailableHet te verlengen clip is niet meer beschikbaar: verleng het eerder, of stuur het einde in via extend_video. Als 502, is het lezen mislukt: probeer opnieuw.
404unknown_clipHet te verlengen clip behoort tot een andere licentie.
404unknown_sequenceDe reeks bestaat niet, behoort tot een andere licentie of is verlopen.
400job_id_required, empty_sequencePOST /sequences/{id}/clips zonder job_id, of de export van een reeks die geen shot heeft.
409not_exported_yetGET /sequences/{id}/file vóór de export: roep eerst POST /sequences/{id}/export aan.
404unknown_exportExport van de projectmap: onbekende render, van een andere licentie of meer dan 24 u geleden ingediend; ZIP gewist (45 min na de eerste download, hoogstens 2 u).
409export_in_progressEén export van een projectmap tegelijk per licentie.
413export_too_largeProjectmap groter dan 2 GB: exporteer de shots een voor een.
400unknown_referenceExport van de projectmap: een item van exclude_references wijst geen enkele referentie van de export aan (geen id, naam of @vermelding).
400invalid_export_optionsExport van de projectmap: een optie die geen boolean is, een exclude_references dat geen lijst van teksten is, of include_film zonder include_media.
500export_failedDe export is mislukt (reden in detail): er wordt niets afgeschreven, probeer opnieuw.
422resolution_mismatch, unreadable_clipEen handmatig ingediende render (POST /sequences/{id}/clips) met een andere resolutie dan de reeks, of onleesbaar.
409missing_shotEen shot is nog niet klaar of niet meer beschikbaar (job_id noemt het): wacht tot het klaar is en exporteer opnieuw.
409sequence_exportedDe reeks is al samengesteld.
409audio_mismatchEen shot met geluid in een stille reeks, of andersom.
413extend_video_too_largeHet clipuiteinde dat je hebt verstuurd is groter dan 8 MB.
413too_many_shotsMaximaal 30 shots per reeks.
422unreadable_tailHet clipuiteinde, verstuurd of teruggelezen, is geen leesbare video.
422assembly_failedDe shots hebben verschillende resoluties, of slechts een deel ervan heeft geluid.
503ultra_unavailableUltra-modus is momenteel gesloten: probeer het later opnieuw, of render zonder quality.
503ultra_4k_unavailableEen 4K-formaat gevraagd in Ultra: 4K wordt niet meer aangeboden, video gaat tot 1080p (1920 x 1088).
400ultra_incompatibleEen overgang (end_image) aangevraagd in Ultra.
400extension_4kDe voortzetting van een eerdere 4K-clip: 4K wordt niet meer aangeboden, een 4K-clip kan niet worden verlengd (ultra_4k_unavailable met quality: "max"). Verleng een clip van maximaal 1080p.
400resolution_above_qualityEen formaat boven 1080p (1920 x 1088) zonder quality: "max": 1080p is het maximum in elke modus.
400invalid_keyframes, invalid_keyframe_time, keyframes_modeKeyframes buiten de grenzen: meer dan 4, een ongeldige afbeelding of sterkte; een moment buiten het clip, of twee keyframes minder dan 0,5 s uit elkaar; een andere modus dan Kwaliteit (Ultra, Multi-Ref), of een verlenging zonder consistency enhanced.
400invalid_consistency, consistency_modeconsistency anders dan standard of enhanced; versterkte samenhang aangevraagd in Ultra of in Multi-Ref.
400consistency_explicitEen prompt die versterkte samenhang nog niet rendert, langer dan 20 s (15 s met een end_image), in een verlenging of in een reeks (een enkel korter shot rendert in standaard samenhang): maak het korter, of gebruik standard.
403consistency_licensed_onlyVersterkte samenhang is voorbehouden aan licentiehouders.
503consistency_unavailableVersterkte samenhang is momenteel gesloten: probeer het later opnieuw, of render in standard.
409consistency_mismatchEen shot waarvan de consistency afwijkt van die van de reeks.
422encoding_mismatchEen handmatig ingediende render (POST /sequences/{id}/clips) waarvan de consistency afwijkt van de al ingediende shots.
400invalid_fps, fps_requires_fixed_duration, extend_fps_mismatchEen framerate (fps) die de modus niet heeft (detail geeft de beschikbare op); versterkte samenhang boven 30 fps met automatische duur (stel duration_auto in op false en geef length op); een verlenging met een andere framerate dan het vorige clip.
409sequence_fps_mismatchEen shot waarvan de framerate (fps) afwijkt van die van de reeks.
503keyframes_unavailableKeyframes zijn momenteel gesloten: render zonder keyframes.
429too_many_sequencesMaximaal 5 reeksen tegelijk per licentie: exporteer er een, of wacht tot er een verloopt.
400invalid_name, invalid_kind, invalid_photo_role, outfit_too_long, invalid_roleEen personageveld buiten de grenzen (zie Personages).
400image_too_smallEen foto kleiner dan 1024 px op de lange zijde.
415unsupported_image_format, unreadable_imageEen foto of locatieafbeelding die geen leesbare JPEG, PNG of WebP is.
404unknown_characterDe character_id staat niet op je licentie, of is verwijderd (één jaar ongebruikt, of verwijderd in de app).
409character_limitHet personagelimiet (max) is bereikt: verwijder er een.
409character_busyDe weergaven worden aangemaakt: wacht tot status niet meer pending is. Bij POST /characters: dezelfde aanmaak wordt nog opgeslagen, stuur hem een paar seconden later opnieuw.
409photo_view, empty_character, single_image_sheetDe weergave die afkomstig is van de originele foto kan niet opnieuw worden gemaakt; of het personage heeft geen leesbare weergave (als de opslag het lezen weigert: 503 storage_unavailable, probeer het opnieuw); of een sheet die als één afbeelding is geïmporteerd (ongewijzigd bewaard): de weergaven worden niet opnieuw gemaakt en hij kleedt geen nieuwe sheet aan (stuur weergave 4 of 1).
409app_characterEen instruction of een geüploade weergave op een personage of een sheet uit de app: voorbehouden aan personages en sheets die via de API zijn aangemaakt.
400instruction_too_longEen instruction langer dan 200 tekens.
400outfit_or_views_requiredEen sheet toegevoegd zonder outfit en zonder views: geef een outfit om te genereren, of weergaven.
400views_requiredEen sheet toegevoegd met generate: false: geef minstens één weergave.
409source_sheet_emptyEen sheet toegevoegd zonder volledige weergave en zonder buste, aan een personage dat geen van beide heeft om van uit te gaan: stuur er een in views.
404unknown_sheetAlleen een sheet die via de API is toegevoegd (sheet_origin api), verwijder je met DELETE /characters/{id}/sheets/{sheet_id}.
404unknown_subjectDe subject_id staat niet op je licentie, of is verwijderd na één jaar ongebruikt.
409subject_limitHet limiet voor onderwerpen (max) is bereikt: locaties, objecten, dieren, stijlen en outfits tellen samen; verwijder er een.
409empty_subjectEen onderwerp zonder leesbare afbeelding.
400invalid_type, description_too_long, invalid_imagesEen onderwerpveld buiten de grenzen (zie Locaties, objecten, dieren, stijlen en outfits).
400invalid_imageEen onderwerpafbeelding die geen leesbare JPEG, PNG of WebP is van minimaal 512 px op de lange zijde (index geeft aan welke).
400description_required, invalid_views, invalid_view, invalid_count, too_many_images, prompt_too_long, invalid_instructionsEen onderwerp genereren: geen description, geen prompt en geen startafbeelding; een weergavesleutel die het type niet heeft (detail geeft de lijst); count buiten 1 tot 6, of meer dan 6 afbeeldingen, start inbegrepen; een prompt van meer dan 2000 tekens; instructions leeg, te lang of voor meerdere weergaven.
409subject_busy, subject_not_generated, view_exists, views_exist, start_image_missing, start_image_importedEr loopt al een reeks op dit onderwerp; een onderwerp gemaakt van afbeeldingen (voeg afbeeldingen toe via /images); een weergave die al gemaakt is (maak hem opnieuw); een start om opnieuw te maken terwijl er weergaven van uitgaan; een mislukte start die eerst opnieuw moet; een geïmporteerde start, die niet opnieuw kan.
404 / 503unknown_view, generation_unavailableEen weergave die nooit gevraagd is (voeg hem toe); het genereren van onderwerpen is op dit moment niet beschikbaar op de server: probeer het later opnieuw.
400multiref_characters_required, multiref_incompatible, multiref_mode, multiref_format, invalid_lengthMulti-Ref buiten de grenzen: 1 tot 4 personages (12 in Ultra), geen verlenging of overgang, de formaten en lengtes van Multi-Ref Video.
400duplicate_name, invalid_strength, unknown_mentionTwee personages met dezelfde naam; strength buiten 0 tot 2; een @Naam in de prompt zonder bijbehorend personage (mentions geeft ze op).
400voice_requires_audio, voice_slotEen personagestem (voice_b64) zonder geluid ("audio": true); of op een ander personage dan characters[0] en characters[1] (de engine ondersteunt 2 stemmen). index geeft aan welke.
400invalid_voice_choicevoice anders dan character of original bij een Face swap, of characters[].voice anders dan character of generated bij Multi-Ref Video.
413audio_too_largeEen personagestem groter dan 4 MB, of groter dan 2 MB bij een Face swap. Alleen de eerste 5 seconden worden gebruikt (20 bij een Face swap): stuur een kort fragment.
415unsupported_audio_formatEen personagestem die geen leesbaar audiobestand is (WAV, MP3, OGG, FLAC).
400multiref_too_many_references, invalid_subject_typeMeer dan 4 personages, objecten en dieren samen, buiten Ultra; een onderwerp in het verkeerde veld (een locatie in subjects, een object als location, een stijl buiten styles, een outfit buiten outfits).
400invalid_count, invalid_view, invalid_lora_pass, invalid_subject_image, invalid_sizeAfbeelding maken: count 1 of 2, view 1 tot 5 en aanwezig in de sheet, lora_pass 0,3 tot 0,9, de image van een onderwerp verwijst naar een van zijn afbeeldingen, breedte en hoogte van 256 tot 2048.
400character_not_readyAfbeelding maken: de gekozen weergave van een personage heeft nog geen afbeelding.
503multiref_image_disabledAfbeelding maken is nog niet open op deze server.
400multiref_ultra_only, multiref_too_many_images, unknown_wearerStijlen, outfits of beweging buiten Multi-Ref in Ultra; meer dan 30 afbeeldingen in Ultra; een worn_by die geen personage noemt.
400invalid_motion, invalid_motion_mode, unreadable_motion, motion_missingmotion zonder motion_id en zonder video_b64; een andere mode dan camera of choreography; een onleesbare video, of een buiten 4 tot 30 s (input_video_out_of_limits); een motion_id die nooit is geüpload (geen PUT).
404 / 409unknown_motion, motion_already_usedEen motion_id die onbekend is, al gebruikt of ouder dan 2 uur: upload de video opnieuw.
413 / 503motion_too_large, motion_not_open, motion_mode_unavailableEen bewegingsvideo van meer dan 20 MB (20 MB na terugbrengen naar 480p); de beweging is nog niet open (ultra.motion_per_second is null); een mode die nog niet open is.
409extension_link_expiredEen extend_job_id die je licentie niet kent, of een Ultra-shot ouder dan 24 uur: upload het origineel (POST /extensions) en geef extend_upload_id door.
400extension_real_faceDe video die je in Ultra wilt verlengen is niet in de Ultra-modus gerenderd (de render van een andere modus, bijvoorbeeld) en toont een realistisch gezicht: er wordt niets afgeschreven. Verleng hem in Kwaliteit-modus, of maak de shot opnieuw in Ultra.
400extension_ultra_only, extension_ultra_options, invalid_extension_direction, extension_backward_sequence, extension_tail_quality_onlyUltra-verlenging buiten de grenzen: extend_upload_id of backward zonder quality: "max" (of vanaf een clip die niet Ultra is); een startafbeelding, referenties, beweging of versterkte consistentie erbij; een andere richting dan forward of backward; backward in een reeks; extend_video in Ultra.
400extension_too_large, unreadable_extension, extension_upload_missingEen geüploade video boven 1080p; een onleesbare MP4, of een buiten 4 tot 30 s (input_video_out_of_limits); een bestand dat nooit is geüpload (geen PUT).
400input_video_out_of_limitsEen video die naar de Ultra-modus gaat (beweging, te verlengen video) buiten de grenzen, gecontroleerd vóór de render, niets afgeschreven: limit zegt welke (duration: 4 tot 30 s; total_duration: 30 s met de referentiegeluiden; count: 10; size: 200 MB; format: MP4 of MOV; fps: 24 tot 60; pixels: breedte × hoogte van 409.600 tot 8.295.044; aspect_ratio: 0,4 tot 2,5), met value, min en max.
404 / 409unknown_extension_upload, extension_upload_usedEen extend_upload_id die onbekend is, ouder dan 2 uur of al gebruikt: upload het bestand opnieuw.
413 / 503extension_too_heavy, extension_not_open, extension_backward_unavailableEen bestand van meer dan 60 MB; de Ultra-verlenging is nog niet open (ultra.extend_per_second is null); achteruit is nog niet open.
413references_too_largeDe voorbereide weergaven overschrijden het budget van de render: gebruik minder personages, of een kleiner formaat.
400video_required, character_requiredEen Face swap zonder video_b64, of zonder character_id.
413video_too_largeEen Face swap-video groter dan 20 MB: trim of comprimeer hem eerst, of gebruik de MCP-tool tendre_face_swap, die tot 95 MB accepteert.
415unreadable_videoDe Face swap-video is geen leesbare MP4, MOV, WebM of MKV.
400invalid_start, invalid_duration, passage_too_shortEen Face swap-fragment buiten de grenzen: start onder 0 of voorbij het einde van de video; duration buiten 0,5 tot 20 s; een fragment korter dan een halve seconde.
400invalid_zone, invalid_likeness, invalid_scene, invalid_description, invalid_character_name, invalid_partEen Face swap-veld buiten de grenzen: zone anders dan tight, normal of wide; part anders dan full of head; likeness buiten 0,5 tot 2; scene langer dan 400 tekens; description langer dan 360; name langer dan 60.
413face_swap_too_largeHet fragment is na voorbereiding nog te zwaar: geef een kortere duration op.
429server_busyOnze server bereidt al twee Face swap-video's voor: probeer het opnieuw na Retry-After (20 s). De MCP-uploadlink geeft dezelfde code terug als 503 als er te veel bestanden wachten: probeer het over een paar minuten opnieuw.
503face_swap_unavailable, face_swap_price_missingFace swap is gesloten, of heeft momenteel geen prijs: probeer het later opnieuw.
503creation_unavailable, multiref_unavailable, storage_unavailableDe service is momenteel niet beschikbaar: probeer het later opnieuw.
500internal_errorEen onverwachte storing aan de serverzijde: probeer het opnieuw en laat het ons weten als het opnieuw gebeurt.

Ultra per seconde (Ultra):

CodeerrorWat het betekent en wat je moet doen
400resolution_outside_ultraBoven 1080p: 480p, 720p of 1080p.
400engine_refusedDe engine weigert de tekst of een beeld: de reden staat in detail en de code in code. Er wordt niets afgeschreven: herformuleer.
502engine_unavailableDe engine antwoordt niet: probeer het over een paar minuten opnieuw. Er wordt niets afgeschreven.
409render_in_progressAnnulering van een render die al wordt berekend: hij stopt niet meer, hij wordt geleverd en gefactureerd.
400invalid_references, references_too_large, multiref_ultra_options, multiref_ultra_explicitMulti-Ref in Ultra: een referentiebeeld is onleesbaar of te zwaar (in totaal hoogstens 20 MB), of een optie wordt niet ondersteund.
403multiref_ultra_unavailableMulti-Ref in Ultra per seconde is nog niet open voor dit account.

De foutnamen zijn de exacte strings die de API teruggeeft. Vergelijk op die namen, niet op de boodschap, die kan worden aangepast.

Eén antwoord is geen fout: een Multi-Ref-render of een Face swap met een personage dat slechts één weergave heeft, wordt verwerkt met een limited_likeness-waarschuwing in warnings ({ "code": "limited_likeness", "character_id": "...", "detail": "..." }). De gelijkenis is beperkt: maak de zeven weergaven van het personage aan voor een getrouwe gelijkenis.

Een Multi-Ref-render in Ultra met 9 tot 12 personages wordt ook verwerkt, met een many_characters-waarschuwing: sommige kunnen ontbreken of door elkaar lopen (8 worden aanbevolen).

Best practices

  • Peil elke 3 seconden, niet vaker. De wachtrij is gedeeld en hameren helpt niemand.
  • Download zodra de status completed is. Het bestand wordt niet gearchiveerd.
  • Schrijf prompts in het Engels en beschrijf voor video's de beweging in plaats van het stilstaande beeld.
  • Eén sleutel per gebruik, en een dagelijks creditlimiet op elke sleutel die op een server staat. Een gelekte sleutel met een limiet kost je één dag, niet je hele saldo.
  • Behandel een 429 als normaal, niet als een fout: wacht op Retry-After en ga verder.
  • Een verbinding die wegvalt vóór het antwoord kost niets. Blijft een inzending van een afbeelding of video zonder antwoord (time-out van een proxy, fout 524, programma gestopt), dan wordt de render niet gestart, of meteen geannuleerd, en er wordt niets in rekening gebracht: stuur het verzoek gewoon opnieuw. Bij een reeks afbeeldingen (count) worden de al aangemaakte renders ook geannuleerd. Het aanmaken van een personage loopt wel door: hetzelfde verzoek opnieuw sturen geeft hetzelfde personage terug, zonder iets twee keer in rekening te brengen (zie Personages).

Prompts worden aan onze kant gelogd, net als voor de app, voor veiligheidsdoeleinden.

Windows · Mac · Cloud of lokaal

Genereer privé. Vanavond.

Download tendre.AI gratis en genereer zonder limieten, privé, op je eigen GPU.

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

Mac: Apple silicon (M1 of later), macOS 13 of later. Intel Macs worden niet ondersteund.

Voor lokale beeldgeneratie op Mac heb je een M4 met 24 GB geheugen nodig, of een M2 of M3 Pro, Max of Ultra met 24 GB. Daaronder draait alles online met credits. Retoucheren en video draaien voorlopig online op Mac.

Alles over tendre.AI voor Mac

Geen NVIDIA GPU? Begin 100% in de cloud: elke dag 5 gratis afbeeldingen en 1 gratis video. Een NVIDIA-kaart (8GB+) ontgrendelt onbeperkt lokaal genereren.