Tutorial
Como usar a API do Recraft V4.1? Gere imagens com paleta de cores em 5 minutos
V4.1 e Flash têm os mesmos parâmetros, só muda o model; colors de marca via API. Exemplos curl/Python e mensagens de erro originais.
TL;DR
- A série Recraft V4.1 é um par de modelos de texto para imagem com parâmetros totalmente idênticos:
recraft-v4.1/text-to-imagegera a versão final com mais detalhes ($0.05/imagem),recraft-v4.1-flash/text-to-imagepara rascunhos rápidos ($0.01/imagem, preços completos na página de preços), a única diferença é o campomodel. Abra a página do modelo para testar; novos usuários ganham 200 créditos ao se registrar. - O diferencial é a paleta de marca:
colorsrecebe um conjunto de RGB e a imagem tende a ficar dentro dessa gama de cores (ainda não disponível no Playground, apenas via API). - As chamadas usam a interface
/v1/tasksdo HiAPI: envie a tarefa e receba otaskId, depois consulte o resultado e, em caso de sucesso, baixe emoutput[0].url.
O que ele faz
- Fotografia, ilustração e pôster: imagens realistas de produtos, ilustrações vetoriais flat e pôsteres com título, tudo a partir de uma descrição.
- Cores controláveis:
colorsdefine a paleta ebackground_colordefine a cor de fundo, para manter o material de marca alinhado ao VI. - 6 tamanhos predefinidos: square_hd (padrão), square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9, sem largura e altura personalizadas.
- Rascunho com Flash + finalização com V4.1: mesmos parâmetros, só troca o
model; 10 rascunhos mais 1 versão final custam $0.15.
Abaixo está um resultado real do V4.1:
Minimalist brand poster for a specialty coffee brand, huge bold headline "NORTH BEAN" in clean sans-serif, warm terracotta and cream palette, single coffee bean illustration, generous negative space, Swiss grid layout
(Em português: pôster de marca minimalista para uma marca de café especial, título enorme em negrito sem serifa "NORTH BEAN", paleta de terracota quente e creme, ilustração de um único grão de café, muito espaço negativo, layout de grade suíça. Tamanho escolhido: portrait_4_3.)

recraft-v4.1/text-to-image, portrait_4_3, imagem de exemplo deste artigo 896×1216, $0.05.
Como escolher entre os dois modelos
recraft-v4.1-flash/text-to-image |
recraft-v4.1/text-to-image |
|
|---|---|---|
| Por imagem | $0.01 | $0.05 |
| Posicionamento | Rascunho rápido, escolha de direção | Versão final com mais detalhes |
| Parâmetros | Totalmente iguais (prompt / image_size / colors / background_color) | Mesmo que à esquerda |
| Indicado para | Exploração em lote, imagens para redes sociais, rodadas de rascunho | Entregáveis, materiais de marca |
Os dois modelos usam o mesmo fluxo: o Flash gera 10 direções por $0.10, a escolhida é executada novamente trocando o model para gerar a versão final no V4.1 por $0.05, total de $0.15. Se for só gerar esboços, use o Flash do início ao fim: 1.000 imagens custam apenas $10.00. Para escolher prompts por cenário, veja o guia completo de prompts.
Dois caminhos para começar
Navegador em 3 passos: abra a página do modelo → cole o prompt, escolha o tamanho → clique em gerar, $0.05 por imagem no V4.1. (colors e background_color exigem a API.) Na primeira vez, recomendamos gerar uma imagem no navegador para confirmar se o estilo atende antes de escrever código.
API em 3 passos: POST /v1/tasks para enviar → obter o taskId → GET /v1/tasks/<taskId> até receber success e baixar.
curl: primeiro resultado (com paleta de marca)
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: your-unique-key-001" \
-d '{
"model": "recraft-v4.1-flash/text-to-image",
"input": {
"prompt": "Flat vector illustration of a cozy reading nook with an armchair, a tall plant and a round window showing a city skyline at dusk, clean geometric shapes, gentle grain",
"image_size": "landscape_4_3",
"colors": [
{"r": 28, "g": 61, "b": 90},
{"r": 240, "g": 128, "b": 60},
{"r": 245, "g": 222, "b": 179}
],
"background_color": {"r": 250, "g": 246, "b": 238}
}
}'
Este exemplo usa os parâmetros reais do caso do Flash: paleta de três cores com azul-escuro, laranja e trigo, mais fundo bege. Para gerar a versão final, troque model por recraft-v4.1/text-to-image e mantenha o restante igual.
Python: enviar, consultar, baixar
import time, uuid, requests
BASE = "https://api.hiapi.ai/v1/tasks"
HEADERS = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
}
payload = {
"model": "recraft-v4.1/text-to-image",
"input": {
"prompt": "Minimalist brand poster for a specialty coffee brand, huge bold headline \"NORTH BEAN\" in clean sans-serif, warm terracotta and cream palette, single coffee bean illustration, generous negative space, Swiss grid layout",
"image_size": "portrait_4_3",
},
}
resp = requests.post(
BASE,
headers={**HEADERS, "Idempotency-Key": str(uuid.uuid4())},
json=payload,
timeout=30,
)
resp.raise_for_status()
task_id = resp.json()["taskId"]
while True:
task = requests.get(f"{BASE}/{task_id}", headers=HEADERS, timeout=30).json()
print(task["status"])
if task["status"] in ("success", "fail"):
break
time.sleep(3)
if task["status"] == "success":
image_url = task["output"][0]["url"] # endereço temporário, baixe e salve o quanto antes
img = requests.get(image_url, timeout=60)
with open("output_image", "wb") as f:
f.write(img.content)
print("saved")
Tabela de parâmetros (igual para os dois modelos)
| Campo | Obrigatório | Valores | Descrição |
|---|---|---|---|
prompt |
Sim | 1–10000 caracteres | Descrição da imagem |
image_size |
Não | square_hd (padrão) / square / portrait_4_3 / portrait_16_9 / landscape_4_3 / landscape_16_9 | 6 predefinições, sem largura e altura personalizadas |
colors |
Não | Array de objetos RGB, cada canal de 0 a 255 | Direcionamento forte de paleta: a imagem tende a ficar dentro desse conjunto de cores; ainda não disponível no Playground |
background_color |
Não | Um único objeto RGB | Cor de fundo; ainda não disponível no Playground |
Cada objeto RGB exige as três chaves r/g/b, cada uma de 0 a 255, sem chaves extras. Campos fora da tabela no corpo da requisição retornam 400.
Erros que você vai encontrar (texto original da interface)
| O que você fez | Retorno |
|---|---|
Não enviou prompt |
400 invalid input: prompt: missing required field "prompt" |
Passou um objeto de largura/altura em image_size |
400 invalid input: image_size: got object, want string |
| Enviou 256 em um canal de colors | 400 invalid input: colors.0.r: maximum: got 256, want 255 |
| Faltou a chave b em colors | 400 invalid input: colors.0.b: missing required field "b" |
| Passou colors como string | 400 invalid input: colors: got string, want array |
| Passou uma chave extra no objeto RGB | 400 invalid input: colors.0: additional properties 'a' not allowed |
| Saldo insuficiente | 402 insufficient account balance; top up and retry |
Reenviar com o mesmo Idempotency-Key retorna 409 ou 422; use uma chave nova e tente de novo. |
Atenção antes de ir para produção
- Callback: envie no nível superior do corpo da requisição
"callback": {"url": "https://..."}para ser notificado automaticamente no estado final. - Salve imediatamente:
output[0].urlé um endereço temporário; baixe e guarde no seu armazenamento assim que receber, não o trate como link permanente. - A paleta é direcionamento, não bloqueio: se o prompt citar cores que conflitam com colors, o resultado pode misturar as duas; para seguir estritamente as cores, não cite outras cores no prompt.
- Flash→V4.1 só troca o model: os demais parâmetros permanecem iguais e a ideia de composição é reaproveitada diretamente.
Perguntas frequentes
Os parâmetros dos dois modelos são iguais?
Totalmente iguais. Só troque o campo model, sem nenhuma alteração no código.
Onde configurar o parâmetro colors?
Apenas via API. O Playground ainda não oferece os parâmetros colors e background_color.
O colors garante que só as cores especificadas serão usadas?
Não. É um direcionamento forte: a imagem tende a ficar dentro desse conjunto de cores, mas não é um bloqueio rígido.
Quantas imagens por vez?
1 por vez. Para várias, envie mais tarefas ou entre na fila.
Quantas imagens com $10?
Flash custa $0.01 por imagem, então $10 geram 1.000 imagens. Falhas não são cobradas.
Próximo passo: use o prompt NORTH BEAN para gerar uma imagem na página do modelo; quando precisar das cores da marca, adicione colors à requisição da API; para modelos de cenário, veja o guia completo de prompts.
Artigos relacionados
Ver todos os artigos →-
Tutorial
Como chamar hailuo-2.3-fast/image-to-video pela API HiAPI: curl e Python na prática
A primeira requisição executável do nível rápido e econômico de geração de vídeo a partir de imagem — do ID do modelo ao download do MP4
-
Tutorial
Como chamar hailuo-2.3/text-to-video pela API HiAPI: curl, Python e exemplos de requisição executáveis
-
Tutorial
Usar Kandinsky 6.0 Pro text-to-video na HiAPI: tutorial de curl e Python
Demonstração prática com foco na requisição: montar a chamada de prompt para clipe de vídeo, enviar a requisição, consultar o status de conclusão e baixar o resultado