4. Integrar Novita AI: text-to-image e image-to-image en .NET 8

Curso Flutter y .NET 8 con Novita AI: índice completo paso a paso

0. Curso Flutter + .NET 8 + Novita AI: índice completo

1. Arquitectura Flutter + backend .NET 8 con Novita AI

2. Configurar entorno .NET 8 + Flutter + Firebase + Novita AI

3. Backend .NET 8: Auth Firebase y esqueleto API

4. Integrar Novita AI: text-to-image e image-to-image en .NET 8

5. Webhook Novita y procesamiento asíncrono

6. Firestore, modelos y endpoints de dominio

7. Flutter: login Google y configuración API

8. Flutter: subida de imagen y creación de invitaciones

9. Listado, estado y detalle de invitaciones

10. ControlNet completo en backend y Flutter

11. LLM con Novita: img2prompt y adaptación de prompts

12. Despliegue, checklist final y publicación WordPress

Bonus 01: vídeo con FFmpeg y flujo opcional

Bonus 02: importador de modelos Novita a Firestore

Bonus 03: Prompt Generator y administración básica

Bonus 03: Prompt Generator y administración básica

Actualizado: 20 de febrero de 2026.

En este capítulo conectas el backend con Novita para dos flujos:

  1. txt2img cuando no hay foto base.
  2. img2img cuando sí hay foto base.

Prerrequisitos

  1. Tener clonado o disponible codigo/ de esta serie.
  2. Contar con Firebase y Novita configurados para pruebas.
  3. Haber completado el capítulo anterior del curso.

Paso 1: Contrato de servicio

INovitaService expone:

  1. StartGenerationAsync(...)
  2. GetTaskAsync(taskId)
  3. GeneratePromptAsync(imageUrl)
  4. AdaptPromptAsync(prompt)

Paso 2: Endpoint correcto según input

Lógica aplicada:

  1. Si photoUrl existe: POST /v3/async/img2img
  2. Si no existe photoUrl: POST /v3/async/txt2img

Paso 3: Payload asíncrono

La request usa estructura:

  1. extra:
    • response_image_type
    • webhook.url
    • webhook.events = ["ASYNC_TASK_RESULT"]
  2. request:
    • model_name
    • prompt
    • width, height
    • negative_prompt
    • loras (opcional)

Paso 4: Respuesta y task_id

El backend no espera imagen final en el create; devuelve el task_id y guarda estado inicial en cola (TASK_STATUS_QUEUED).

Paso 5: Verificación local

cd codigo/backend
rg -n "txt2img|img2img|task_id|webhook" InvitaIA.Api/Services/NovitaService.cs -S

Comando de prueba (ejemplo)

curl -X POST http://localhost:56449/api/invitations/create \
  -H "Authorization: Bearer <firebase_id_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "style": "superhero",
    "format": "image",
    "orientation": "1:1",
    "modelBaseId": "<model-id>",
    "prompt": "niño con traje espacial, fondo galáctico"
  }'

Troubleshooting

  1. Error 400 de Novita: revisa model_name y estructura request.
  2. task_id vacío: la respuesta de Novita no trae formato esperado.
  3. Timeout HTTP: usa endpoint async y procesa por webhook.

FAQ corta

¿Dónde se decide txt2img vs img2img?

En NovitaService.StartGenerationAsync según exista photoUrl.

¿Se puede usar LoRA?

Sí, enviando loras con model_name y strength.

¿Se guarda imagen final aquí?

No. Solo se crea la tarea; la finalización ocurre en webhook/worker.

Fuente verificada

  • Código del curso:
    • codigo/backend/InvitaIA.Api/Services/NovitaService.cs
    • codigo/backend/InvitaIA.Api/Services/InvitationService.cs
  • Documentación oficial Novita:

Share this content:

Curso Flutter y .NET 8 con Novita AI: índice completo paso a paso

3. Backend .NET 8: Auth Firebase y esqueleto API 5. Webhook Novita y procesamiento asíncrono

David Cantón Nadales

David Cantón Nadales, ingeniero de software de Sevilla, España, es autor del bestseller Build Your own Metaverse with Unity. Reconocido como Microsoft MVP y Top Voices en Aplicaciones Móviles de LinkedIn. Con más de 20 años de experiencia, David ha liderado cientos proyectos a lo largo de su carrera, incluyendo videojuegos y aplicaciones de realidad virtual y aumentada con Oculus, Hololens, HTC Vive, DayDream y LeapMotion. Ha trabajado como Tech Lead en importantes multinacionales como Grupo Viajes El Corte Inglés y actualmente en SCRM Lidl del Grupo Schwarz. Fue embajador de la comunidad Samsung Dev Spain y organizador del Google Developers Group Sevilla. Durante el confinamiento por COVID-19, destacó como emprendedor social con la creación de Grita, una red social que facilitaba el apoyo psicológico entre personas. En 2022, ganó los Samsung Top Developers Awards.

Related Posts

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

You Missed

He creado Freeverso: una web de puzzles gratis para que los niños jueguen online

He creado Freeverso: una web de puzzles gratis para que los niños jueguen online

Ya disponible en Amazon: El libro que explica El Origen De Los Pueblos Andaluces

Ya disponible en Amazon: El libro que explica El Origen De Los Pueblos Andaluces

Ejercicio Misión Imposible en Batch para ASIR (con Bash y PowerShell)

Ejercicio Misión Imposible en Batch para ASIR (con Bash y PowerShell)

0. Curso Flutter + .NET 8 + Novita AI: índice completo

0. Curso Flutter + .NET 8 + Novita AI: índice completo

1. Arquitectura Flutter + backend .NET 8 con Novita AI

1. Arquitectura Flutter + backend .NET 8 con Novita AI

2. Configurar entorno .NET 8 + Flutter + Firebase + Novita AI

2. Configurar entorno .NET 8 + Flutter + Firebase + Novita AI