Inicio rápido
Comienza creando tu clave de API
Cada solicitud de esta guía necesita una. Crear una clave toma segundos.
Crea tu clave de APICuatro pasos para obtener tu primer modelo 3D, usando la API REST de Meshy.
¿Usas un asistente de codificación con IA? Consulta nuestra página de Integración con IA — instala el MCP server de Meshy para acceso mediante llamadas a herramientas desde Claude Code, Cursor, Windsurf y otras herramientas compatibles con MCP, o dirige un agente de chat simple a llms.txt.
1Obtén tu clave de API
Crea una clave de API desde la página API Keys en la Plataforma para Desarrolladores — no podrás volver a verla después de esta pantalla, así que guárdala en un lugar seguro. Cada solicitud se autentica con un token Bearer en el encabezado Authorization — consulta Autenticación.
Crear y gestionar claves de API requiere un plan de pago. Las cuentas gratuitas reciben una clave dedicada e integrada para pruebas en el Playground, pero no pueden crear ni gestionar sus propias claves.

Consejo de seguridad: evita pegar tu clave directamente en scripts — en su lugar, guárdala como una variable de entorno: export MESHY_API_KEY="msy_...".
2Realiza tu primera solicitud de Imagen a 3D
Exporta tu clave y luego crea tu primera tarea con Imagen a 3D. ¿Prefieres trabajar con un prompt de texto o con varias fotos? Consulta Texto a 3D o Multi-imagen a 3D.
Exporta tu clave
export MESHY_API_KEY="<your-api-key>"
Ejecuta esto en tu terminal (Terminal en macOS, Command Prompt o PowerShell en Windows) — no en un navegador.
Cada ejemplo a continuación usa esta foto — sustituye con tu propio image_url para probar 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"
}'
3Verifica el estado de la tarea
Las solicitudes devuelven un ID de tarea de inmediato. Consulta el mismo endpoint repetidamente hasta que status sea SUCCEEDED — reemplaza <task_id> a continuación con el ID devuelto en el paso 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": ""
}
}
¿Prefieres no hacer polling? Usa transmisión SSE o un webhook para recibir una notificación en el momento en que una tarea termine.
4Descarga tu modelo
Obtén el modelo desde model_urls en la respuesta anterior. Cada formato (GLB, FBX, OBJ, USDZ, STL) es una URL firmada y con tiempo limitado — o puedes omitir la línea de comandos y pegar la URL directamente en la barra de direcciones de tu navegador para descargarla.
Download
curl -L "<model_urls.glb from the response above>" -o model.glb

Los archivos se conservan durante 3 días en los planes que no son Enterprise — consulta Retención de recursos.
Júntalo todo
¿Prefieres un solo script que haga todo el proceso: crear, consultar, descargar?
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, headers: resHeaders } = await axios.get(`https://api.meshy.ai/openapi/v1/image-to-3d/${taskId}`, { headers });
task = data;
if (task.status === 'SUCCEEDED' || task.status === 'FAILED') break;
const waitSeconds = Number(resHeaders['retry-after']) || 5;
await new Promise((resolve) => setTimeout(resolve, waitSeconds * 1000));
}
// 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');
Explora flujos de trabajo comunes
Personaje listo para videojuegos
Añade un esqueleto a una malla humanoide para que esté lista para animarse en Unity o Unreal.
Learn more →Recurso lowpoly
Configura model_type como smart-topology en Imagen a 3D para obtener una malla limpia y lista para videojuegos.
Modelo para impresión 3D
Convierte un modelo terminado en un archivo 3MF multicolor, listo para laminar e imprimir.
Learn more →Próximos pasos
- ¿Prefieres una interfaz gráfica? Abre la Plataforma para Desarrolladores — ejecuta solicitudes en el Playground, haz seguimiento del uso y de los registros de solicitudes, y gestiona webhooks.
- Explora la referencia completa de la API para conocer cada endpoint.
- Aprende con ejemplos prácticos: sigue recetas paso a paso en el Cookbook y lee tutoriales e historias de desarrollo en el Blog para Desarrolladores.
- Revisa Precios, Límites de velocidad y Errores antes de pasar a producción.
- Consulta el registro de cambios para ver actualizaciones y correcciones de errores.
- ¿Tienes comentarios o problemas? Únete a nuestra comunidad de Discord — ¡nos encantaría saber de ti!