Início rápido
Comece criando sua chave de API
Toda solicitação neste guia precisa de uma. Criar uma chave leva segundos.
Crie sua chave de APIQuatro etapas para seu primeiro modelo 3D, usando a API REST da Meshy.
Usando um assistente de codificação com IA? Veja nossa página de Integração de IA — instale o MCP server da Meshy para acesso via chamadas de ferramentas a partir do Claude Code, Cursor, Windsurf e outras ferramentas compatíveis com MCP, ou aponte um agente de chat simples para llms.txt.
1Obtenha sua chave de API
Crie uma chave de API na página API Keys na Plataforma de Desenvolvedores — você não poderá visualizá-la novamente após esta tela, então guarde-a em um local seguro. Toda solicitação se autentica com um token Bearer no cabeçalho Authorization — veja Autenticação.
Criar e gerenciar chaves de API requer um plano pago. Contas gratuitas recebem uma chave dedicada e integrada para testes no Playground, mas não podem criar ou gerenciar suas próprias chaves.

Dica de segurança: evite colar sua chave diretamente em scripts — armazene-a como uma variável de ambiente: export MESHY_API_KEY="msy_...".
2Faça sua primeira solicitação de Imagem para 3D
Exporte sua chave e, em seguida, crie sua primeira tarefa com Imagem para 3D. Está trabalhando a partir de um prompt de texto ou de várias fotos em vez disso? Veja Texto para 3D ou Multi-imagem para 3D.
Export your key
export MESHY_API_KEY="<your-api-key>"
Execute isso no seu terminal (Terminal no macOS, Prompt de Comando ou PowerShell no Windows) — não em um navegador.
Todo exemplo abaixo usa esta foto — substitua por sua própria image_url para tentar algo diferente.

Request
curl https://api.meshy.ai/openapi/v1/image-to-3d \
-X POST \
-H "Authorization: Bearer ${MESHY_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://docs.meshy.ai/images/api/quick-start/source-photo.webp"
}'
3Verifique o status da tarefa
As solicitações retornam um ID de tarefa imediatamente. Consulte o mesmo endpoint periodicamente até que status seja SUCCEEDED — substitua <task_id> abaixo pelo ID retornado na etapa 2.
Request
curl https://api.meshy.ai/openapi/v1/image-to-3d/<task_id> \
-H "Authorization: Bearer ${MESHY_API_KEY}"
Response — SUCCEEDED
{
"id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"status": "SUCCEEDED",
"progress": 100,
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.fbx?Expires=***"
},
"thumbnail_url": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/preview.png?Expires=***",
"task_error": {
"message": ""
}
}
A consulta periódica não é do seu estilo? Use streaming SSE ou um webhook para ser notificado no momento em que uma tarefa terminar.
4Baixe seu modelo
Obtenha o modelo em model_urls na resposta acima. Cada formato (GLB, FBX, OBJ, USDZ, STL) é uma URL assinada e com tempo limitado — ou pule a linha de comando e cole a URL diretamente na barra de endereços do seu navegador para baixá-la.
Download
curl -L "<model_urls.glb from the response above>" -o model.glb

Os arquivos são retidos por 3 dias em planos que não sejam Enterprise — veja Retenção de recursos.
Juntando tudo
Prefere um único script que faça tudo — criar, consultar, baixar?
Full script
import axios from 'axios';
import fs from 'fs';
const headers = { Authorization: `Bearer ${process.env.MESHY_API_KEY}` };
const imageUrl = 'https://docs.meshy.ai/images/api/quick-start/source-photo.webp';
// 1. Create the task
const { data: created } = await axios.post(
'https://api.meshy.ai/openapi/v1/image-to-3d',
{ image_url: imageUrl },
{ headers },
);
const taskId = created.result;
// 2. Poll until it finishes
let task;
while (true) {
const { data } = await axios.get(`https://api.meshy.ai/openapi/v1/image-to-3d/${taskId}`, { headers });
task = data;
if (task.status === 'SUCCEEDED' || task.status === 'FAILED') break;
await new Promise((resolve) => setTimeout(resolve, 5000));
}
// 3. Download the result (only if the task succeeded)
if (task.status !== 'SUCCEEDED') {
throw new Error(`Task ${task.status}: ${task.task_error?.message || 'unknown error'}`);
}
const { data: model } = await axios.get(task.model_urls.glb, { responseType: 'arraybuffer' });
fs.writeFileSync('model.glb', model);
console.log('Saved model.glb');
Explore fluxos de trabalho comuns
Personagem pronto para jogos
Faça o rig de uma malha humanoide com um esqueleto para que ela esteja pronta para animação na Unity ou na Unreal.
Learn more →Recurso lowpoly
Defina model_type como lowpoly em Imagem para 3D para obter uma malha limpa e pronta para jogos.
Modelo para impressão 3D
Converta um modelo finalizado em um arquivo 3MF multicolorido, pronto para fatiar e imprimir.
Learn more →Próximos passos
- Prefere uma interface visual? Abra a Plataforma de Desenvolvedores — execute solicitações no Playground, acompanhe o uso e os registros de solicitações, e gerencie webhooks.
- Explore a referência completa da API para conhecer todos os endpoints.
- Confira Preços, Limites de Taxa e Erros antes de ir para produção.
- Acompanhe o registro de alterações para atualizações e correções de bugs.
- Tem feedback ou está enfrentando problemas? Participe da nossa comunidade no Discord — adoraríamos ouvir você!