API Pro: limites, códigos de erro e boas práticas

Limites

Cada chave tem três: renders simultâneos (2 por defeito), submissões por minuto (60 por defeito) e, se definires um, um limite diário de créditos.

Ao ultrapassar um limite, a resposta é 429 com um cabeçalho Retry-After em segundos. Uma chamada recusada não tem custo. O dia usado para os limites é o dia UTC.

Os vídeos longos acrescentam dois limites próprios: 30 shots por sequência e 5 sequências em curso por licença (ver Vídeos).

As personagens têm um: 50 por licença Pro, incluindo as criadas na app, e uma personagem sem uso durante um ano é eliminada (ver Personagens). Locais, objetos e animais têm o seu próprio limite, contado separadamente: 50 por licença Pro (10 com uma licença pessoal, na app), eliminados após o mesmo ano sem uso (ver Lugares, objetos, animais, estilos e roupas).

O Face swap tem dois limites próprios: uma passagem de no máximo 20 s por render, e o nosso servidor prepara dois vídeos de cada vez. Ao ultrapassar este limite, a resposta é 429 server_busy: tenta novamente após Retry-After (ver Face swap). Pelo MCP, um Face swap com transição aceita um vídeo inteiro de no máximo 60 s, e o servidor trata dois ao mesmo tempo: acima disso, a ferramenta pede para tentar de novo dentro de alguns minutos.

O nosso cartão é partilhado com os utilizadores da app. Quando está ocupado, os teus renders vão para GPUs alugadas, ao mesmo preço e através da mesma API, com mais algumas dezenas de segundos no arranque.

Códigos de erro

CódigoerrorO que significa e o que fazer
400prompt_requiredAdiciona um prompt.
400forbidden_contentO filtro de conteúdo recusou o prompt.
400invalid_seedseed deve ser um número inteiro de 0 a 4294967295.
400image_required, inpaint_images_requiredO modo precisa de image_b64, e de mask_b64 para inpaint.
401key_required, invalid_keyCabeçalho em falta, ou chave desconhecida.
402insufficient_creditsSaldo insuficiente para este render (cost é indicado). A resposta inclui buy_url, a página de compra de créditos da tua licença. Um render ou um treino em curso reserva o seu preço até terminar: engaged indica quantos créditos estão assim reservados.
402confirmation_required, payment_declinedUma compra com o teu cartão guardado (POST /credits/purchase): o teu banco pede a tua confirmação ou recusou o pagamento. Usa buy_url, o link de compra normal.
409agent_not_allowed, no_saved_card, monthly_cap_reachedUma compra com o teu cartão guardado: o teu agente não está autorizado a comprar (carregamento automático da tua página de conta), não há nenhum cartão guardado ou a compra ultrapassaria o teu limite mensal. Usa buy_url.
409topup_in_progress, purchase_in_progressEstá em curso outro pagamento com o teu cartão guardado: espera que termine.
400unknown_packUma compra com um pack desconhecido, ou uma quantidade livre fora dos limites ou que não é um escalão inteiro.
503payment_unavailableNão foi possível confirmar o pagamento: não sabemos se o débito foi feito. Não tentes de novo de imediato; um débito feito é creditado.
403key_disabled, key_revoked, key_expiredChave desativada, revogada ou expirada: cria uma nova na app.
403license_revoked, license_not_proLicença revogada, ou conta que não é Pro.
403missing_scopeA chave não tem a permissão pedida, indicada em scope.
403unknown_loraUma personagem que não pertence à conta.
404media_unavailableO ficheiro foi eliminado: submete novamente.
404unknown_loraEm DELETE /loras/{name}, nenhum ficheiro com esse nome na conta. Nota o código: o mesmo nome responde 403 quando um render pede uma personagem que não é tua.
411size_requiredUm upload de LoRA sem Content-Length. O corpo é bruto, por isso o tamanho tem de ser anunciado.
413file_too_largeUm LoRA acima de 800 MB, ou acima de 90 MB num único upload. Envia-o em partes. Um 413 simples sem corpo JSON é outra coisa: o pedido nunca chegou à API, ver a secção de upload.
413part_too_largeUma parte maior do que o max_part_size anunciado pela sessão.
404unknown_upload_sessionO uploadId não existe, ou a sessão foi abandonada (seis horas) ou cancelada por uma parte rejeitada.
503upload_refused, part_refusedO armazenamento não estava acessível durante o upload: tenta novamente.
507storage_fullSem espaço no armazenamento do servidor (LoRAs ou sequências em curso). A equipa foi alertada: tenta mais tarde.
415invalid_safetensorsO ficheiro enviado não é um safetensors.
415incompatible_loraO LoRA é para outra arquitetura, indicada em architecture. As imagens usam apenas Krea 2, os vídeos LTX 2.5 ou 2.3. Nada é armazenado e nenhuma quota é gasta.
413lora_quotaO armazenamento de LoRA da conta está cheio (20 ficheiros ou 10 GB). A resposta indica o que resta; elimina um ficheiro para libertar espaço.
413image_too_largeImagem de origem ou máscara acima de 12 MB descodificados.
429too_many_concurrent_renders, rate_limited, daily_capUm limite foi atingido, ver Retry-After.
429daily_credit_capO limite diário de créditos da chave foi atingido (cap, spent, cost).
502submission_failed, status_failedUm incidente no lado do render: tenta novamente em alguns segundos.
503license_check_failedA conta não pode ser verificada de momento: tenta novamente em um minuto.
400invalid_extend_framesUma extensão cujo extend_frames não é 9, 17, 25, 33, 41 ou 49, ou um extend_video que não tem exatamente esse número de frames.
400extension_with_transitionUma extensão não pode ser também uma transição, exceto com consistency enhanced: remove end_image, ou pede coerência reforçada.
400extension_too_shortO length de uma extensão conta apenas os novos frames e deve ser no mínimo 9.
404clip_unavailableO clip a estender já não está disponível: estende-o mais cedo, ou envia o seu final em extend_video. Como 502, a leitura falhou: tenta novamente.
404unknown_clipO clip a estender pertence a outra licença.
404unknown_sequenceA sequência não existe, pertence a outra licença, ou expirou.
400job_id_required, empty_sequencePOST /sequences/{id}/clips sem job_id, ou a exportação de uma sequência sem nenhum shot.
409not_exported_yetGET /sequences/{id}/file antes da exportação: chama primeiro POST /sequences/{id}/export.
404unknown_exportExportação da pasta de projeto: render desconhecido, de outra licença ou enviado há mais de 24 h; ZIP apagado (45 min após o primeiro download, 2 h no máximo).
409export_in_progressUma exportação de pasta de projeto de cada vez por licença.
413export_too_largePasta de projeto com mais de 2 GB: exporta os planos um a um.
400unknown_referenceExportação da pasta de projeto: uma entrada de exclude_references não designa nenhuma referência da exportação (nem id, nem nome, nem @menção).
400invalid_export_optionsExportação da pasta de projeto: uma opção que não é booleana, um exclude_references que não é uma lista de textos, ou include_film sem include_media.
500export_failedA exportação falhou (motivo em detail): nada é cobrado, tenta de novo.
422resolution_mismatch, unreadable_clipUm render adicionado manualmente (POST /sequences/{id}/clips) com resolução diferente da sequência, ou ilegível.
409missing_shotUm shot ainda não terminou, ou já não está disponível (job_id identifica-o): aguarda que termine e exporta novamente.
409sequence_exportedA sequência já foi montada.
409audio_mismatchUm shot com som numa sequência silenciosa, ou o inverso.
413extend_video_too_largeO final do clip que enviaste ultrapassa 8 MB.
413too_many_shotsNo máximo 30 shots por sequência.
422unreadable_tailO final do clip, enviado ou lido, não é um vídeo legível.
422assembly_failedOs shots têm resoluções diferentes, ou som apenas em alguns deles.
503ultra_unavailableO modo Ultra está temporariamente indisponível: tenta mais tarde, ou renderiza sem quality.
503ultra_4k_unavailableUm tamanho 4K pedido em Ultra: o 4K deixou de ser oferecido, o vídeo vai até 1080p (1920 x 1088).
400ultra_incompatibleUma transição (end_image) pedida em Ultra.
400extension_4kA continuação de um clip 4K anterior: o 4K deixou de ser oferecido, um clip 4K já não pode ser prolongado (ultra_4k_unavailable com quality: "max"). Prolonga um clip de 1080p no máximo.
400resolution_above_qualityUm tamanho acima de 1080p (1920 x 1088) sem quality: "max": 1080p é o máximo em todos os modos.
400invalid_keyframes, invalid_keyframe_time, keyframes_modeImagens-chave fora dos limites: mais de 4, uma imagem ou Força inválida; um momento fora do clip, ou duas imagens-chave com menos de 0,5 s de intervalo; um modo diferente de Qualidade (Ultra, Multi-Ref), ou uma extensão sem consistency enhanced.
400invalid_consistency, consistency_modeconsistency diferente de standard ou enhanced; coerência reforçada pedida em Ultra ou em Multi-Ref.
400consistency_explicitUm prompt que a coerência reforçada ainda não renderiza, acima de 20 s (15 s com end_image), numa extensão ou numa sequência (um único shot mais curto renderiza em coerência padrão): encurta-o, ou usa standard.
403consistency_licensed_onlyA coerência reforçada está reservada para licenças.
503consistency_unavailableA coerência reforçada está temporariamente indisponível: tenta mais tarde, ou renderiza em standard.
409consistency_mismatchUm shot cuja consistency difere da sequência.
422encoding_mismatchUm render adicionado manualmente (POST /sequences/{id}/clips) cuja consistency difere dos shots já adicionados.
400invalid_fps, fps_requires_fixed_duration, extend_fps_mismatchUma taxa de quadros (fps) que o modo não suporta (detail lista as disponíveis); coerência reforçada acima de 30 fps com duração automática (define duration_auto como false e indica length); uma extensão com taxa de quadros diferente do clip anterior.
409sequence_fps_mismatchUm shot cuja taxa de quadros (fps) difere da sequência.
503keyframes_unavailableAs imagens-chave estão temporariamente indisponíveis: renderiza sem keyframes.
429too_many_sequencesNo máximo 5 sequências em curso por licença: exporta uma, ou aguarda que uma expire.
400invalid_name, invalid_kind, invalid_photo_role, outfit_too_long, invalid_roleUm campo de personagem fora dos limites (ver Personagens).
400image_too_smallUma fotografia com menos de 1024 px no lado maior.
415unsupported_image_format, unreadable_imageUma fotografia ou imagem de local que não é um JPEG, PNG ou WebP legível.
404unknown_characterO character_id não está na tua licença, ou foi eliminado (um ano sem uso, ou apagado na app).
409character_limitO limite de personagens (max) foi atingido: elimina uma.
409character_busyAs suas vistas estão a ser geradas: aguarda até que status deixe de ser pending. Em POST /characters: a mesma criação está a ser registada, volta a enviá-la alguns segundos depois.
409photo_view, empty_character, single_image_sheetA vista proveniente da fotografia original não pode ser refeita; ou a personagem não tem nenhuma vista legível (se for o armazenamento a recusar a leitura: 503 storage_unavailable, tente novamente); ou uma sheet importada como uma única imagem (mantida tal como está): as suas vistas não se refazem e não veste uma nova sheet (envie a vista 4 ou 1).
409app_characterUma instruction ou uma vista enviada numa personagem ou numa character sheet feitas na app: reservado para personagens e character sheets criadas através da API.
400instruction_too_longUma instruction com mais de 200 caracteres.
400outfit_or_views_requiredUma character sheet adicionada sem outfit nem views: dá uma roupa para gerar, ou vistas.
400views_requiredUma character sheet adicionada com generate: false: dá pelo menos uma vista.
409source_sheet_emptyUma character sheet adicionada sem vista de corpo inteiro nem busto, a uma personagem que não tem nenhum dos dois de onde partir: envia um deles em views.
404unknown_sheetSó uma character sheet adicionada através da API (sheet_origin api) se apaga com DELETE /characters/{id}/sheets/{sheet_id}.
404unknown_subjectO subject_id não está na tua licença, ou foi eliminado após um ano sem uso.
409subject_limitO limite de sujeitos (max) foi atingido: locais, objetos, animais, estilos e roupas contam em conjunto; elimina um.
409empty_subjectUm sujeito sem nenhuma imagem legível.
400invalid_type, description_too_long, invalid_imagesUm campo de sujeito fora dos limites (ver Lugares, objetos, animais, estilos e roupas).
400invalid_imageUma imagem de sujeito que não é um JPEG, PNG ou WebP legível com pelo menos 512 px no lado maior (index indica qual).
400description_required, invalid_views, invalid_view, invalid_count, too_many_images, prompt_too_long, invalid_instructionsGerar um sujeito: nem description, nem prompt, nem imagem de partida; uma chave de vista que o tipo não tem (detail dá a lista); count fora de 1 a 6, ou mais de 6 imagens, partida incluída; um prompt com mais de 2000 caracteres; instructions vazias, demasiado longas ou para várias vistas.
409subject_busy, subject_not_generated, view_exists, views_exist, start_image_missing, start_image_importedJá há uma série em curso neste sujeito; um sujeito criado com imagens (adiciona imagens por /images); uma vista já feita (refá-la); uma partida a refazer quando já partem vistas dela; uma partida falhada a refazer primeiro; uma partida importada, que não se refaz.
404 / 503unknown_view, generation_unavailableUma vista nunca pedida (adiciona-a); a geração de sujeitos não está disponível no servidor de momento: tenta mais tarde.
400multiref_characters_required, multiref_incompatible, multiref_mode, multiref_format, invalid_lengthMulti-Ref fora dos limites: 1 a 4 personagens (12 em Ultra), sem extensão ou transição, os formatos e durações de Multi-Ref Vídeo.
400duplicate_name, invalid_strength, unknown_mentionDuas personagens com o mesmo nome; strength fora de 0 a 2; um @Nome no prompt sem personagem correspondente (mentions lista-os).
400voice_requires_audio, voice_slotUma voz de personagem (voice_b64) sem som ("audio": true); ou numa personagem diferente de characters[0] e characters[1] (o motor suporta 2 vozes). index indica qual.
400invalid_voice_choicevoice diferente de character ou original num Face swap, ou characters[].voice diferente de character ou generated no Multi-Ref Vídeo.
413audio_too_largeUma voz de personagem acima de 4 MB, ou acima de 2 MB num Face swap. Apenas os primeiros 5 segundos são usados (20 num Face swap): envia um excerto curto.
415unsupported_audio_formatUma voz de personagem que não é um ficheiro de áudio legível (WAV, MP3, OGG, FLAC).
400multiref_too_many_references, invalid_subject_typeMais de 4 personagens, objetos e animais no total, fora do Ultra; um sujeito no campo errado (um local em subjects, um objeto como location, um estilo fora de styles, uma roupa fora de outfits).
400invalid_count, invalid_view, invalid_lora_pass, invalid_subject_image, invalid_sizeCriar uma imagem: count 1 ou 2, view de 1 a 5 e presente na sheet, lora_pass de 0,3 a 0,9, a image de um sujeito entre as suas imagens, largura e altura de 256 a 2048.
400character_not_readyCriar uma imagem: a vista escolhida de uma personagem ainda não tem imagem.
503multiref_image_disabledCriar uma imagem ainda não está aberto neste servidor.
400multiref_ultra_only, multiref_too_many_images, unknown_wearerEstilos, roupas ou movimento fora do Multi-Ref em Ultra; mais de 30 imagens em Ultra; um worn_by que não nomeia nenhuma personagem.
400invalid_motion, invalid_motion_mode, unreadable_motion, motion_missingmotion sem motion_id nem video_b64; um mode diferente de camera ou choreography; um vídeo ilegível, ou fora de 4 a 30 s (input_video_out_of_limits); um motion_id nunca enviado (sem PUT).
404 / 409unknown_motion, motion_already_usedUm motion_id desconhecido, já usado ou com mais de 2 horas: envia o vídeo de novo.
413 / 503motion_too_large, motion_not_open, motion_mode_unavailableUm vídeo de movimento com mais de 20 MB (20 MB depois de reduzido a 480p); o movimento ainda não está aberto (ultra.motion_per_second vale null); um mode ainda não aberto.
409extension_link_expiredUm extend_job_id que a tua licença não conhece, ou um plano Ultra com mais de 24 horas: envia o seu original (POST /extensions) e passa extend_upload_id.
400extension_real_faceO vídeo a prolongar em Ultra não foi renderizado no modo Ultra (o render de outro modo, por exemplo) e mostra um rosto realista: nada é debitado. Prolonga-o no modo Qualidade, ou refaz o plano em Ultra.
400extension_ultra_only, extension_ultra_options, invalid_extension_direction, extension_backward_sequence, extension_tail_quality_onlyExtensão Ultra fora dos limites: extend_upload_id ou backward sem quality: "max" (ou a partir de um clip que não é Ultra); uma imagem inicial, referências, movimento ou coerência reforçada com ela; uma direção diferente de forward ou backward; backward numa sequência; extend_video em Ultra.
400extension_too_large, unreadable_extension, extension_upload_missingUm vídeo enviado acima de 1080p; um MP4 ilegível, ou fora de 4 a 30 s (input_video_out_of_limits); um ficheiro nunca enviado (sem PUT).
400input_video_out_of_limitsUm vídeo enviado ao modo Ultra (movimento, vídeo a prolongar) fora dos seus limites, verificados antes da renderização, nada debitado: limit diz qual (duration: 4 a 30 s; total_duration: 30 s com os sons de referência; count: 10; size: 200 MB; format: MP4 ou MOV; fps: 24 a 60; pixels: largura × altura de 409 600 a 8 295 044; aspect_ratio: 0,4 a 2,5), com value, min e max.
404 / 409unknown_extension_upload, extension_upload_usedUm extend_upload_id desconhecido, com mais de 2 horas ou já usado: envia o ficheiro de novo.
413 / 503extension_too_heavy, extension_not_open, extension_backward_unavailableUm ficheiro com mais de 60 MB; a extensão Ultra ainda não está aberta (ultra.extend_per_second vale null); para trás ainda não está aberta.
413references_too_largeAs vistas preparadas ultrapassam o orçamento do render: menos personagens, ou um formato mais pequeno.
400video_required, character_requiredUm Face swap sem video_b64, ou sem character_id.
413video_too_largeUm vídeo de Face swap acima de 20 MB: corta-o ou comprime-o primeiro, ou usa a ferramenta MCP tendre_face_swap, que aceita até 95 MB.
415unreadable_videoO vídeo de Face swap não é um MP4, MOV, WebM ou MKV legível.
400invalid_start, invalid_duration, passage_too_shortUma passagem de Face swap fora dos limites: start abaixo de 0 ou além do fim do vídeo; duration fora de 0,5 a 20 s; uma passagem mais curta do que meio segundo.
400invalid_zone, invalid_likeness, invalid_scene, invalid_description, invalid_character_name, invalid_partUm campo de Face swap fora dos limites: zone diferente de tight, normal ou wide; part diferente de full ou head; likeness fora de 0,5 a 2; scene com mais de 400 caracteres; description com mais de 360; name com mais de 60.
413face_swap_too_largeA passagem continua demasiado pesada após a preparação: indica uma duration mais curta.
429server_busyO nosso servidor já está a preparar dois vídeos de Face swap: tenta novamente após Retry-After (20 s). O link de upload MCP responde com o mesmo código como 503 quando há demasiados ficheiros em espera: tenta novamente em alguns minutos.
503face_swap_unavailable, face_swap_price_missingO Face swap está indisponível, ou sem preço, de momento: tenta mais tarde.
503creation_unavailable, multiref_unavailable, storage_unavailableO serviço está temporariamente indisponível: tenta mais tarde.
500internal_errorUm incidente inesperado do lado do servidor: tenta novamente, e diz-nos se acontecer outra vez.

Ultra faturado ao segundo (Ultra):

CódigoerrorO que significa e o que fazer
400resolution_outside_ultraAcima de 1080p: 480p, 720p ou 1080p.
400engine_refusedO motor recusa o texto ou uma imagem: o motivo está em detail e o código em code. Nada é debitado: reformula.
502engine_unavailableO motor não responde: tenta de novo dentro de alguns minutos. Nada é debitado.
409render_in_progressCancelamento de uma renderização já em cálculo: já não para, é entregue e faturada.
400invalid_references, references_too_large, multiref_ultra_options, multiref_ultra_explicitMulti-Ref em Ultra: uma imagem de referência está ilegível ou é demasiado pesada (20 MB no máximo no total), ou uma opção não é suportada.
403multiref_ultra_unavailableO Multi-Ref em Ultra faturado ao segundo ainda não está aberto a esta conta.

Os nomes dos erros são as strings exatas que a API devolve. Faz a correspondência por eles e não pela mensagem, que pode ser reformulada.

Uma resposta não é um erro: um render Multi-Ref ou um Face swap com uma personagem que tem apenas uma vista é processado, com um aviso limited_likeness em warnings ({ "code": "limited_likeness", "character_id": "...", "detail": "..." }). A semelhança é limitada: cria as sete vistas da personagem para uma semelhança fiel.

Um render Multi-Ref em Ultra com 9 a 12 personagens também é processado, com um aviso many_characters: algumas podem faltar ou misturar-se (recomendam-se 8).

Boas práticas

  • Faz polling a cada 3 segundos, não mais frequentemente. A fila é partilhada, e bombardeá-la não ajuda ninguém.
  • Faz o download assim que o estado for completed. O ficheiro não é arquivado.
  • Escreve os prompts em inglês, e para vídeos descreve o movimento em vez da imagem estática.
  • Uma chave por uso, e um limite diário de créditos em cada chave que vive num servidor. Uma chave comprometida com um limite custa-te um dia, não o saldo todo.
  • Trata um 429 como algo normal, não como uma falha: aguarda Retry-After e continua.
  • Uma ligação cortada antes da resposta não custa nada. Se um envio de imagem ou vídeo ficar sem resposta (tempo limite de um proxy excedido, erro 524, programa parado), o render não é iniciado, ou é cancelado de imediato, e nada é cobrado: basta voltar a enviar o pedido. Num lote de imagens (count), os renders já criados também são cancelados. A criação de uma personagem, essa, continua: reenviar o mesmo pedido devolve a mesma personagem, sem cobrar nada duas vezes (ver Personagens).

Os prompts são registados do nosso lado, tal como na app, por razões de segurança.

Windows · Mac · Cloud ou local

Gera em privado. Esta noite.

Descarrega a tendre.AI gratuitamente e gera sem limites, de forma privada, na tua própria GPU.

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

Mac: Apple silicon (M1 ou posterior), macOS 13 ou posterior. Os Macs Intel não são suportados.

A geração local de imagens no Mac precisa de um M4 com 24 GB de memória, ou um M2 ou M3 Pro, Max ou Ultra com 24 GB. Abaixo disso, tudo corre online com créditos. Por agora, a retoque e o vídeo correm online no Mac.

Tudo sobre o tendre.AI para Mac

Sem GPU NVIDIA? Começa 100% na cloud: 5 imagens grátis e 1 vídeo grátis todos os dias. Uma placa NVIDIA (8GB+) desbloqueia a geração local ilimitada.