modelos

SpaceXAI: Grok Imagine Video

Markdown · JSON

SpaceXAI: Grok Imagine Video

Grok Imagine Video genera clips cortos a partir de texto, una imagen inicial o hasta siete referencias visuales. Su edición clásica también edita clips MP4 existentes y añade 2–10 segundos de continuación. La generación alcanza 720p con audio; la edición y la ampliación conservan el encuadre de origen dentro de sus propios límites.

Sobre el modelo

Esta descripción cubre las capacidades del modelo. Las entradas, salidas y opciones disponibles en Ailoot se indican a continuación para el método seleccionado.

Grok Imagine Video es la edición clásica de la familia de vídeo Grok Imagine. Su documentación actual del fabricante abarca generar un clip nuevo a partir de una instrucción, animar una imagen inicial, utilizar referencias visuales y modificar o continuar un vídeo existente. Estos flujos producen recursos diferentes: una escena nueva, una versión editada de material proporcionado o un vídeo que contiene el material original seguido de contenido nuevo. Elija el flujo según el material ya disponible y la parte del plano que deba cambiar.

Para un plano nuevo de texto a vídeo, describa el sujeto, el entorno, la acción visible, la cámara y el sonido. La generación estándar admite clips de 1–15 segundos, con salida de 480p o 720p y audio generado. Se documentan relaciones cuadradas, horizontales, verticales y más anchas, incluidas 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9 y 5:2. Un encargo original podría pedir un farolillo de papel que se mueva suavemente sobre un patio tranquilo mientras la cámara se desplaza lateralmente. La revisión útil comprueba si el movimiento, el encuadre y el sonido ambiental apoyan ese único plano.

En imagen a vídeo, la imagen fija proporcionada es el primer fotograma. Prepárela con el recorte, el sujeto y los detalles visibles previstos y después describa la acción que sigue. La salida sigue la relación de aspecto de la imagen. Una imagen inicial proporciona una composición exacta de apertura, mientras que referencia a vídeo utiliza imágenes para orientar las personas, los productos o el entorno en una escena recién compuesta. Mantener distintas esas dos funciones ayuda a evitar un inicio no deseado cuando el objetivo es colocar un objeto conocido en otro escenario.

El modelo clásico acepta hasta siete imágenes de referencia por solicitud guiada por referencias. Ese modo está limitado a diez segundos y 720p. Asigne a cada referencia una función clara e identifíquela por su posición en la lista, comenzando por <IMAGE_0>. Para una escena breve de producto, una referencia puede identificar el objeto y otra la localización deseada. Centre el encargo en la posición del objeto y en la acción principal del plano. El modo clásico de referencias utiliza su propia configuración; la versión completa 1.5 aporta los controles adicionales de voz seleccionada y fotogramas fijados.

La edición de vídeo recibe un clip existente y una instrucción que describe el cambio. El fabricante acepta originales MP4 con códecs compatibles como H.264, H.265 o AV1, de hasta 8.7 segundos. El resultado editado mantiene la duración y la relación de aspecto de origen y sigue su resolución hasta un máximo de 720p. Los controles personalizados de duración, relación de aspecto y resolución no se aplican a este flujo de edición. Prepare un original que ya tenga la composición y la sincronización necesarias para el uso final, de modo que la instrucción pueda concentrarse en la modificación visual prevista.

Un encargo original de edición podría cambiar el color de una bufanda conservando el rostro, el movimiento de la persona, el fondo y la cámara. Indique explícitamente esos elementos que se conservan junto con el cambio. El fabricante describe mantener el resto del original lo más fielmente posible, lo que constituye un objetivo útil para la revisión, en lugar de una garantía de que todos los píxeles permanezcan idénticos. Compare el resultado a lo largo de todo el clip, especialmente donde el objeto se mueve, cruza otro objeto o queda parcialmente oculto. El recurso final es el clip editado, no solo una imagen fija que muestra el color nuevo.

La ampliación de vídeo continúa desde el último fotograma de un MP4 existente. La duración documentada de origen es de 2–15 segundos; la parte añadida es de 2–10 segundos, con seis segundos como valor predeterminado. La duración de ampliación se refiere solo a la parte nueva. Un original de diez segundos seguido de cinco segundos de continuación produce un vídeo de quince segundos que contiene ambas partes. El resultado conserva la relación de aspecto y la resolución de origen dentro de un máximo de 720p. Prepare el momento final del original y describa lo que debe suceder después, como que el sujeto se gire hacia un objeto que se aproxima mientras la cámara continúa su movimiento actual.

Revise una ampliación alrededor del límite entre el original y el contenido nuevo. Compruebe la identidad del sujeto, la dirección del movimiento, el ritmo de cámara, la luz y el sonido para que la continuación encaje con la acción anterior. Si un clip termina en un punto visualmente incómodo, convierta ese límite en parte explícita del plan del siguiente plano. El montaje de escenas más largas es una decisión de edición: los límites de duración de generación, referencias, edición y ampliación del modelo son independientes, y el resultado total de una ampliación puede ser más largo que un clip estándar de generación nueva.

El flujo de vídeo del fabricante es asíncrono. Un identificador de solicitud permite seguir una tarea hasta que un resultado completado proporciona la ubicación del vídeo y su duración; las ubicaciones de salida son temporales. Conserve el resultado reproducible y sus materiales de origen al preparar una edición de producción. La versión completa Grok Imagine Video 1.5 ofrece generación nativa de 1080p y un anclaje más rico de imagen, voz y fotogramas, mientras que Lite sirve para trabajos sencillos con instrucciones o imagen inicial. La edición clásica sigue siendo útil cuando el material de partida ya es un vídeo que necesita una alteración o continuación dirigida.

Ailoot Ultra · Vídeo POST /v1/videos x-ai/grok-imagine-video

x-ai/grok-imagine-video

SpaceXAI /x-ai/grok-imagine-video

Primeros pasos

Grok Imagine Video genera clips cortos a partir de texto, una imagen inicial o hasta siete referencias visuales. Su edición clásica también edita clips MP4 existentes y añade 2–10 segundos de continuación. La generación alcanza 720p con audio; la edición y la ampliación conservan el encuadre de origen dentro de sus propios límites.

Entradas aceptadas
Texto · Imágenes
Resultados
Vídeo

Disponible en Ailoot · entradas y métodos

Ailoot Ultra · Vídeo POST /v1/videos
Tipos de entrada
text, image
Tipos de salida
video
Formato de salida
bytes MP4 originales; sin normalización ni transcodificación
CampoTipoRequisitoValores y límitesPredeterminado
CampomodelTipostringRequisitoObligatorioValores y límites
x-ai/grok-imagine-video
Predeterminado—
CampopromptTipostringRequisitoObligatorioValores y límitesPredeterminado—
CampodurationTipointegerRequisitoObligatorioValores y límites
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
Mínimo: 1
Máximo: 600
Predeterminado—
CamporesolutionTipostringRequisitoOpcionalValores y límites
480p, 720p
Predeterminado—
Campoaspect_ratioTipostringRequisitoOpcionalValores y límites
16:9, 9:16, 1:1, 4:3, 3:4, 3:2, 2:3
Predeterminado—
Campogenerate_audioTipobooleanRequisitoOpcionalValores y límites
false
Predeterminado—
Campoframe_imagesTipoarrayRequisitoOpcionalValores y límites
Número mínimo de elementos: 1
Número máximo de elementos: 1
Contenido de entrada: Lista de objetos de fotograma. Cada objeto contiene type=image_url, image_url con url y frame_type. Usa una URL HTTPS de imagen y establece frame_type en first_frame. Cada función de fotograma aparece como máximo una vez.
Claves exactas: type, image_url, frame_type
Condiciones: Estas claves describen cada objeto de fotograma; image_url solo contiene url. Omite frame_images para una solicitud que solo contenga texto.
Predeterminado—
Campoinput_referencesTipoarrayRequisitoOpcionalValores y límitesPredeterminado—
CamposizeTipostringRequisitoOpcionalValores y límites
854x480, 1280x720, 480x854, 720x1280, 480x480, 720x720, 640x480, 960x720, 480x640, 720x960, 720x480, 1080x720, 480x720, 720x1080
Patrón: ^[1-9][0-9]*x[1-9][0-9]*$
Predeterminado—
Campocallback_urlTipostringRequisitoOpcionalValores y límites
Patrón: ^https://
Predeterminado—
Camposession_idTipostringRequisitoOpcionalValores y límitesPredeterminado—
CampotraceTipoobjectRequisitoOpcionalValores y límitesPredeterminado—
CampouserTipostringRequisitoOpcionalValores y límitesPredeterminado—
Combinaciones de materiales de entrada

Texto a vídeo · Una instrucción escrita. · Obligatorio: model, prompt, duration

Proporciona prompt como texto y duration en segundos enteros. Elige una resolución compatible; añade una relación de aspecto o usa un tamaño enumerado.

model: Tipo: string · x-ai/grok-imagine-video

prompt: Tipo: string · Máximo de bytes UTF-8: 10.000 · Se requiere contenido distinto de espacios en blanco: Sí

Imagen a vídeo · Una instrucción escrita y una imagen del primer fotograma. · Obligatorio: model, prompt, duration, frame_images

frame_images es una lista. Cada objeto de fotograma incluye type, image_url y frame_type; image_url contiene url. Establece type en image_url. Usa first_frame. Cada función de fotograma aparece como máximo una vez. Proporciona una URL HTTPS pública de imagen para cada fotograma. Usa imágenes de fotogramas o referencias de imagen en una solicitud; no combines ambas. Elige una resolución compatible; añade una relación de aspecto o usa un tamaño enumerado.

Claves exactas: type, image_url, frame_type

model: Tipo: string · x-ai/grok-imagine-video

prompt: Tipo: string · Máximo de bytes UTF-8: 10.000 · Se requiere contenido distinto de espacios en blanco: Sí

Reference to video · Una instrucción escrita y referencias de imagen compatibles. · Obligatorio: model, prompt, duration, input_references

input_references es una lista de objetos. Establece type en image_url y utiliza el campo correspondiente que contiene url. Usa URL HTTPS públicas. Omite frame_images para seleccionar el modo de referencias. No combines referencias de imagen con imágenes de fotogramas. Elige una resolución compatible; añade una relación de aspecto o usa un tamaño enumerado.

model: Tipo: string · x-ai/grok-imagine-video

prompt: Tipo: string · Máximo de bytes UTF-8: 10.000 · Se requiere contenido distinto de espacios en blanco: Sí

Parámetros del método y ciclo de vida
ParámetroContrato
Parámetrocontent_typeContratoapplication/json
ParámetrorequiredContratomodel, prompt, duration
Parámetromaterial_typesContratotext, image
Parámetroadditional_propertiesContratofalse
Parámetrooptional_controlsContratoresolution, aspect_ratio, generate_audio, frame_images, input_references, size, callback_url, session_id, trace, user

Ciclo de vida: submit_once_poll_original

GET /v1/videos/{public_id}

GET /v1/videos/{public_id}/content

Planes

Cómo se calcula el cargo definitivo

Las tarifas mostradas estiman el coste antes de la generación. El cargo final se calcula a partir del coste registrado para la generación original. La duración medida del resultado y las cantidades previstas no constituyen la cantidad facturable final.

Las referencias tarifarias no añaden opciones a la solicitud. Los parámetros admitidos se indican en el método seleccionado.

Modo rápido
Sin especificar Cuando se selecciona el modo rápido
Modo flex
Sin especificar Cuando se selecciona el modo flex
Esfuerzo máximo de razonamiento
Sin especificar Cuando el esfuerzo máximo de razonamiento utiliza el ajuste predeterminado (default)

Tarifas estimadas para comparar

Precios por configuración

Relaciona cada cargo con las condiciones mostradas. Usa una tarifa para cada conjunto de configuraciones alternativas.

ConfiguraciónTabla de tarifasCantidad previstaUnidad de facturaciónCondiciones de facturaciónCargo
ConfiguraciónTarifas base por tokenTabla de tarifasTarifa baseCantidad prevista—Unidad de facturación—Condiciones de facturación—Cargo
Entrada · Tokens de entrada · Estimación solo para comparar — / 1K tokens
Salida · Tokens de salida · Estimación solo para comparar — / 1K tokens
Entrada · Lectura de caché · Estimación solo para comparar — / 1K tokens
Entrada · Escritura en caché · Estimación solo para comparar — / 1K tokens
Entrada · Escritura en caché, 1 hora · Estimación solo para comparar — / 1K tokens
ConfiguraciónImagen de entradaTabla de tarifas—Cantidad prevista—Unidad de facturaciónpor imagenCondiciones de facturaciónNo se declara ninguna condición adicional en esta clave de precios.Cargo
Entrada · Imagen de entrada · Estimación solo para comparar $0.004 por imagen
ConfiguraciónPrecio del vídeoTabla de tarifas—Cantidad prevista—Unidad de facturaciónpor segundo de vídeoCondiciones de facturaciónresolution: 480pCargo
Salida · Precio del vídeo · Estimación solo para comparar $0.1 por segundo de vídeo
ConfiguraciónPrecio del vídeoTabla de tarifas—Cantidad prevista—Unidad de facturaciónpor segundo de vídeoCondiciones de facturaciónresolution: 720pCargo
Salida · Precio del vídeo · Estimación solo para comparar $0.14 por segundo de vídeo
ConfiguraciónCoste estimado de generaciónTabla de tarifas—Cantidad previstaestimación para una generaciónUnidad de facturación—Condiciones de facturación—Cargo
Salida · Coste estimado de generación · Estimación solo para comparar $0.1 estimación previa a la generación

Esta estimación no es un cargo adicional ni una tarifa fija para la generación completada.

Ailoot reserva un importe estimado antes de la solicitud. Tras obtener el resultado, liquida el cargo definitivo según el uso medido. En las respuestas en flujo, la liquidación usa el registro de uso final. Cómo funcionan la reserva y la liquidación →

Detalles de la tarifa de referencia

Las tablas de referencia del modelo no cambian la selección del método, las estimaciones de coste ni los cargos. Los cargos aplicados usan las tarifas del método Ailoot seleccionado.

Referencias de precios de configuraciones de vídeo

Precios por configuración

Relaciona cada cargo con las condiciones mostradas. Usa una tarifa para cada conjunto de configuraciones alternativas.

ConfiguraciónCondiciones de facturaciónCargo
ConfiguraciónImagen de entradaCondiciones de facturaciónNo se declara ninguna condición adicional en esta clave de precios.Cargo
Entrada · Imagen de entrada $0.004 por imagen

Referencia de precios publicada para la configuración mostrada. Los cargos finales se calculan según la configuración realmente facturada.

ConfiguraciónPrecio del vídeoCondiciones de facturaciónresolution: 480pCargo
Salida · Precio del vídeo $0.1 por segundo de vídeo

Referencia de precios publicada para la configuración mostrada. Los cargos finales se calculan según la configuración realmente facturada.

ConfiguraciónPrecio del vídeoCondiciones de facturaciónresolution: 720pCargo
Salida · Precio del vídeo $0.14 por segundo de vídeo

Referencia de precios publicada para la configuración mostrada. Los cargos finales se calculan según la configuración realmente facturada.

Solicitudes de ejemplo

Ailoot Ultra · Vídeo

curl · crea un vídeo
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
from pathlib import Path
Path('request.json').write_text('{"aspect_ratio":"16:9","duration":8,"model":"x-ai/grok-imagine-video","prompt":"A serene mountain landscape at sunset","resolution":"720p"}', encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path('result.json').read_text())
print(json.dumps(r,ensure_ascii=False,indent=2))
print('Keep the complete JSON and response headers; do not resubmit an unknown creation.')
PY_RESULT

Recibir y guardar resultados

Ailoot Ultra · Vídeo

URL firmadas de contenido bajo tu titularidad

  • GET /v1/videos/{public_id}
  • GET /v1/videos/{public_id}/content
Consultar el estado de la tarea
Obtener el estado de la operación original con GET
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_STATUS_URL'
import json
from pathlib import Path
from urllib.parse import quote
r=json.loads(Path('result.json').read_text())
if not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')
Path('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))
PY_STATUS_URL
curl --fail-with-body --silent --show-error "$(cat status-url.txt)" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -D status-headers.txt -o status.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path('status.json').read_text())
print(json.dumps(r,ensure_ascii=False,indent=2))
print('Keep the complete JSON and response headers; do not resubmit an unknown creation.')
PY_RESULT
Otras consultas de contenido
Guarda todos los resultados completados que te pertenecen
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_ASSETS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path('status.json').read_text())
if r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')
if not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')
urls=[]
for i,u in enumerate(r.get('data',[])):
    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')
    urls.append((str(i),u))
for label,path in urls:
    u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)
    if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')
    target=Path('owned-'+label+'.bin')
    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)
print('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')
PY_ASSETS
Conserva todos los resultados completados

Guarda todos los vídeos completados o archivos recibidos; descarga cada URL de archivo que se haya devuelto.

Conserva todos los resultados reales bajo tu titularidad y los metadatos medidos que se devuelvan.

Si es necesario revisar la respuesta original

503 result_pending_check + originalid + X-Should-Retry:false; no repitas nunca la operación original

Campos de respuesta
CampoTipoSignificado
CampoindexTipointegerSignificadoPosición de este vídeo en la lista de resultados, empezando por cero.
Campocontent_urlTipostringSignificadoURL HTTPS firmada de descarga de este vídeo completado.
Camposha256Tipostring | nullSignificadoHuella SHA-256 de los bytes del vídeo original; null si no está disponible.
Camposize_bytesTipointeger | nullSignificadoTamaño del archivo de vídeo original en bytes; null si no está disponible.
Campoduration_msTipointeger | nullSignificadoDuración medida del vídeo en milisegundos; null si no está disponible.
CampowidthTipointeger | nullSignificadoAnchura del vídeo en píxeles; null si no está disponible.
CampoheightTipointeger | nullSignificadoAltura del vídeo en píxeles; null si no está disponible.
Campovideo_codecTipostring | nullSignificadoIdentificador del códec de vídeo; null si no se ha registrado.
Campohas_audioTipoboolean | nullSignificadoIndica si el vídeo contiene una pista de audio; null si no se ha medido.
Campoaudio_codecTipostring | nullSignificadoIdentificador del códec de audio; null cuando no se ha registrado ninguno.
Errores y siguientes pasos
RespuestaCondiciónSiguiente paso
Respuesta404 · not_found_errorCondiciónEl acceso al vídeo no está disponible o no se ha encontrado este ID de vídeo.Siguiente pasoComprueba el acceso al vídeo. Para un vídeo existente, usa su ID público original y la misma clave API.
Respuesta401 · authentication_errorCondiciónLa clave API no corresponde a la cuenta autenticada.Siguiente pasoComprueba tu clave API y el acceso de tu cuenta antes de enviar la solicitud.
Respuesta400 · invalid_request_errorCondiciónNo se ha podido leer la solicitud o el índice de descarga no es válido.Siguiente pasoCorrige el cuerpo de la solicitud. Para una descarga, elige un índice de salida devuelto por la tarea original.
Respuesta422 · price_unavailableCondiciónNo se puede calcular el precio de la configuración de vídeo seleccionada.Siguiente pasoElige una configuración de vídeo compatible y completa sus opciones obligatorias antes de enviar una solicitud corregida.
Respuesta422 · invalid_request_errorCondiciónUna entrada de vídeo o la tarea original de continuación no es válida.Siguiente pasoUsa entradas HTTPS válidas. Para continuar, usa el ID público de tu vídeo original completado con la misma clave API.
Respuesta402 · billing_errorCondiciónEl saldo disponible o los límites no permiten efectuar una reserva.Siguiente pasoComprueba tu saldo disponible y tus límites antes de enviar una nueva solicitud.
Respuesta503 · server_errorCondiciónLa verificación del vídeo, el almacenamiento o el acceso al servicio no están disponibles temporalmente.Siguiente pasoEspera a que el servicio esté disponible. Si ya tienes un ID de vídeo, comprueba esa tarea original en lugar de crear otra generación.
Respuesta503 · result_pending_checkCondiciónEs necesario comprobar el resultado del vídeo original y el cargo.Siguiente pasoConserva el ID de vídeo devuelto y comprueba esa tarea. No envíes una solicitud de generación sustitutiva mientras se esté comprobando.
Respuesta503 · owned_result_unavailableCondiciónLa descarga del vídeo existente no está disponible temporalmente.Siguiente pasoComprueba más tarde la misma tarea de vídeo y descarga su resultado existente. Una nueva generación crea una operación independiente.
Respuesta409 · video_not_readyCondiciónEl contenido del vídeo no se ha publicado.Siguiente pasoComprueba el estado de la tarea original. Descarga cuando indique completed; si indica failed, sigue su aviso de comprobación del cargo.

Alias

Alias del modelo

Ailoot Ultra x-ai/grok-imagine-video

Alias de rutas de métodos

Usa las rutas de método indicadas arriba.

ID de modelo relacionados

x-ai/grok-imagine-video

FAQ · SpaceXAI: Grok Imagine Video
¿Qué entradas y resultados están disponibles?

POST /v1/videos · x-ai/grok-imagine-video: text, image → video

¿Qué campos utiliza la solicitud?

POST /v1/videos · x-ai/grok-imagine-video: model, prompt, duration, resolution, aspect_ratio, generate_audio, frame_images, input_references, size, callback_url, session_id, trace, user

¿Qué límites se aplican?

POST /v1/videos · x-ai/grok-imagine-video: duration.minimum: 1; duration.maximum: 600; frame_images.max_items: 1; frame_images.min_items: 1

Más detalles

Conecta Ailoot a Claude Code, OpenCode, Hermes o tu aplicación.

La empresa y su cartera de proyectos

La empresa y su cartera de proyectos: millones de clientes; ventas por miles de millones al mes.

Compra tokens con descuento.

Ahorro por suscripción para trabajo habitual. Códigos promocionales: hasta el 50% al comprar tokens.

Suscripción
Elige un plan con descuento para tus peticiones habituales.
Código de hasta el 50%
Introduce el código al comprar. El precio se recalcula según la promoción vigente.
Gasto en el historial
Modelo, tokens e importe quedan guardados por cada petición.

Elegir suscripción · Consultar precios de modelos

Conecta la API al producto que vendes.

SaaS, aplicaciones y bots bajo la oferta y el acuerdo de licencia Ailoot. Solicita una licencia de reventa para redistribuir el acceso.

Aplicación comercial
Integra generación de texto, imágenes, vídeo y sonido en funciones de pago de tu servicio.
Licencia para revendedores
Envía descripción del proyecto y esquema de acceso. Solicita condiciones escritas de uso y reventa.
Documentos en la web
La oferta, el acuerdo de licencia y la política de datos están disponibles antes de conectar.

Solicitar licencia de reventa · Oferta y acuerdo de licencia