API de generación de imagenes IA - Documentación técnica
Una API para generar imagenes con los modelos de generacion ZPK-ULTRA y Dalle-3
Esta API permite generar imagenes mediante IA en los modelos Zpk-Ultra de ZPK Systems, o bien mediante el modelo Dalle-3 de OpenAI.
A diferencia de la API de OpenAI, la API de ZPK permite usar ambos modelos de generación sin los limites de máximo de imagenes establecidos en la API de OpenAi y además soporta callbacks si no desea mantener la comunicación HTTP abierta durante largos periodos de tiempo.
Esta API no soporta la generación de contenido para adultos ni la generación de contenido visual que pueda resultar violento o ofensivo.
Conectando a la API
Servidor y protocolos para la conexión
Servidor: | https://zpk.systems |
---|---|
Esquema: | HTTPS, solo conexiones seguras SSL. |
Protocolo: |
JSON recomendado
Enviando un JSON en el body del request, y especificando una cabecera Content-Type: application/json en el request Si envia ficheros como imágenes o documentos, estos deberán estar codificados en base64. Form-Data no recomendado
Formato usado en los formularios web, no recomendado. Al enviar una solicitud tipo form_data puede enviar todos los campos como parámetros POST separados. Sin embargo si la solicitud es muy grande recomendamos que envie el contenido de la peticion en un único campo de texto llamado _json (con un guión bajo). Este parametro especial sera procesado por nuestro backend como si se tratase de una solicitud JSON habitual. |
El servidor dónde enviar las solicitudes es https://zpk.systems mediante una conexión HTTPS segura.
El tipo de comunicación recomendado es JSON, en cuyo caso especificaremos en la conexión un Content-Type: application/json, y enviaremos el body de la solicitud como un string JSON válido.
Generando imagenes
Parámetro | Descripción | ||||
---|---|---|---|---|---|
application_id |
alfanumérico requerido Una id de aplicación, puede obtener la id de una aplicación haciendo click en 'detalles' en su panel |
||||
api_key |
alfanumérico requerido La API KEY de la aplicación que efectúa la llamada a esta API, puede obtenerla en su panel, haciendo click en 'detalles' de una aplicación |
||||
prompt |
string requerido Una descripción de la imagen a generar |
||||
model |
string opcional, por defecto: zpk-ultra El modelo a usar para la generación de imagenes zpk-ultra El modelo de generación de ZPK Systems, con un 10% mas de acierto que dalle-3 dall-e-3 El modelo de generación de Open-ai, ligeramente mas económico que zpk ultra, y más economico que en la API de Openai |
||||
num |
integer opcional, por defecto: 1 El número de imagenes a generar con este prompt. Se soporta un máximo de 20 imagenes. |
||||
unique_request_id |
string opcional / requerido en conexiones hold Un string de hasta 16 caracteres identificando esta petición a la API. Si este string no es facilitado, los servidores de ZPK generarán un identificador único para esta petición. |
||||
callback_url |
string opcional Una dirección URL a la que notificar la generación de las imagenes de esta petición, vea: callbacks. |
||||
connection_type |
string opcional, por defecto: fast El tipo de conexión a la API, fast (recomendado) o hold (no recomendado) La generación de imagenes es una tarea que puede requerir cierto tiempo en los servidores de ZPK, esto provoca que la generación pueda demorarse una media de 30 segundos. Usar conexiones largas mediante el método HOLD suele provocar problemas de conectividad, ya que muchos proveedores estan actualmente finalizando de modo automático las conexiones que superan un tiempo de espera establecido. Nuestra recomendación es que use el método fast, que además le proporcionará información mas precisa sobre el tiempo de espera de generación de una imagen. Conexión fastSi establece una conexión de tipo fast, se lanzará la orden de generación y se devolverá una respuesta inmediatamente, la conexión finalizará casi instantaneámente, retornando el control a su aplicación. Cuando la conexión se cierre retornará un unique_request_id generado por los servidores de ZPK, si no lo facilitó usted en el request, y retornará también un tiempo aproximado de generacion wait_time en segundos. Transcurrido ese tiempo puede realizar una conexión al endpoint de recogida de imagenes solicitando las imagenes de esa petición específica. Se retornará una lista de las imagenes ya generadas, y en caso de que no esten ya todas generadas usted deberá consultar nuevamente el valor de wait_time para volver a realizar la consulta. Tenga en cuenta que si esta usando PHP nuestro SDK gestiona automáticamente las conexiones y los tiempos de espera, facilitando la integración. Conexión holdAl efectuar este tipo de conexión debera obligatoriamente facilitar un unique_request_id a la API, de este modo si la conexión se interrumpe durante la generación de imagen, usted podrá volver a conectar a la API para solicitar las imagenes generadas. Si establece una conexión hold, la conexión a la API simplemente esperará hasta que la imagen sea generada, si por algun motivo la conexión es interrumpida, debera reconectar y solicitar la imagen generada anteriormente, vea como hacerlo aquí. |
||||
quality |
string opcional default: standard La calidad de la imagen final y el esfuerzo en la interpretación del prompt.
|
||||
style |
string opcional default: vivid El estilo para la generación de imagen.
|
||||
resolution |
string opcional default: 1024x1024 La resolución de la imagen a crear, se soportan las siguientes resoluciones para ambos modelos: 1024x1024 1024x1792 1792x1024 |
||||
unique_guard |
boleano opcional default: false El sistema de generación realizará un esfuerzo adicional par que la imagen generada sea única. Adicionalmente, se comprovará en las nuevas imagenes generadas por el modelo tanto para el usuario actual, como para cualquier usuario de ZPK que la imagen resultante de un prompt parecido no sea parecida a ninguna de las imagenes de esta solicitud en mas de un 90% de similaridad, adicionalmente ZPK no usará la imagen para entrenar ningún modelo de IA. Este parametro no afecta a la calidad final de la imágen generada. Coste adicional Solicitar unique_guard tiene un coste extra en la petición de 0,003 € por imagen. Esta opción es especialmente relevante si planea usar la imagen para reclamar derechos de autor sobre ella tras realizar pequeñas modificaciones, minimizando la posibilidad de generación de imagenes similares o idénticas |
Respuesta de solicitud de generación
Consultando el tiempo de espera
Estructura de una respuesta
El servidor retornará un JSON, con un boleano success si la solicitud de envío se procesó correctamente.
Adicionalmente en el JSON se retornará la lista de elementos images, y cada elemento contendrá el estado de de generación de la imagen y su tiempo de espera.
Como en el resto de las peticiones a APIS de ZPK Systems, se dispone un parámetro cost indicando el coste total de la solicitud a la API.
Parámetro | Descripción |
---|---|
success |
boleano
Un boleano con valor true si se pudo procesar su solicitud. O false, en caso de errores. |
unique_request_id |
string
Un string con un identificador único de esta solicitud, si usted no envió este parametro a la api, sera generado por nuestros sistemas. |
images |
array
Un array que contendrá todas las imagenes que usted solicitó, su estado, y su tiempo de espera si aún no fue generada. Consulte la siguiente tabla para detalles sobre los elementos de este array. |
cost |
float
El coste de la solicitud |
Parámetro | Descripción |
---|---|
num |
integer
El numero de imagen, 0 para la primera. |
generation_status |
string
El estado actual de la imagen, si esta siendo generada, si ya fue generada, o si ocurrió algun error durante su generación. Puede contenter: generated generating pending error |
wait_time |
integer
El numero de segundos que nuestro sistema estima que faltan para terminar de generar la imagen. En imagenes ya generadas será cero. |
error_id |
string
Un identificador de error si se detectó un problema durante la generación de imagenes. Actualmente solo hay dos posibles errores. CONTENT_POLICY_VIOLATION No se pudo generar la imagen porque el prompt o la imagen resultante del prompt parecen estar violando nuestra política de generación. Posiblemente contenido inadecuado, sexual, ofensivo, o violento. GENERAL_ERROR Ocurrió un error general, posible saturación de los servidores, reintente el envio de esa imagen en concreto transcurridos unos segundos. |
image_url |
string
Una dirección HTTPS dónde descargar la imagen generada. |
Ejemplo de respuesta con envío correcto.
En este ejemplo podemos ver la respuesta a la solicitud de generar dos imagenes donde nuestros sisteman han determinado un tiempo de generación aproximado de 32 segundos para una imágen, y 30 segundos para la otra imagen.
{
"success": true,
"unique_request_id": "ZPK983ujdsifoj38497",
"images": [
{
"num": 0,
"generation_status": "pending",
"wait_time": "27"
},
{
"num": 1,
"generation_status": "pending",
"wait_time": "27"
}
],
"cost": 0.003
}
Consultando las imagenes generadas
Tras la espera recomendada, nuestra aplicación podrá consultar el estado de imagenes de esta solicitud, consulte la siguiente sección.
Tenga en cuenta que si usó una conexión de tipo hold esta respuesta puede demorarse varios minutos en caso de solicitar muchas imagenes. La respuesta solo se retornará una vez todas las imagenes hayan sido procesadas.
Ejemplo de respuesta con error general
Ejemplo con un envío incorrecto que NO será procesado.
{
"success": false,
"errors": [
{
"id": "INVALID_PARAMETER",
"message": "promt has not been set",
"on": "prompt"
}
]
}
Consultando imagenes generadas
Acceda al estado de generación y descargue imagenes ya generadas
Después de solicitar la generación de imagenes, y mediante el unique_request_id retornado por la API usted debe esperar un tiempo prudencial para la generación de las imagenes del request.
Transcurrido este tiempo puede hacer una solicitud a este endpoint para consultar el estado de generación de las distintas imagenes solicitadas, y descargar aquellas que ya hayan sido generadas.
Parámetro | Descripción |
---|---|
application_id |
alfanumérico requerido Una id de aplicación, puede obtener la id de una aplicación haciendo click en 'detalles' en su panel |
api_key |
alfanumérico requerido La API KEY de la aplicación que efectúa la llamada a esta API, puede obtenerla en su panel, haciendo click en 'detalles' de una aplicación |
unique_request_id |
alfanumérico requerido El unique_request_id que se devolvió en la solicitud de generación. |
Estructura de respuesta
Parámetro | Descripción |
---|---|
success |
boleano
Un boleano con valor true si se pudo procesar su solicitud. O false, en caso de errores. |
images |
array de estado de imagenes
Un array que contendra una lista de las imagenes y su estado, vea la siguiente tabla donde se detalla la estructura de este array. |
Parámetro | Descripción |
---|---|
num |
integer
El numero de imagen, 0 para la primera. |
generation_status |
string
El estado actual de la imagen, si esta siendo generada, si ya fue generada, o si ocurrió algun error durante su generación. Puede contenter: generated generating pending error |
wait_time |
integer
El numero de segundos que nuestro sistema estima que faltan para terminar de generar la imagen. En imagenes ya generadas será cero. |
error_id |
string
Un identificador de error si se detectó un problema durante la generación de imagenes. Actualmente solo hay dos posibles errores. CONTENT_POLICY_VIOLATION No se pudo generar la imagen porque el prompt o la imagen resultante del prompt parecen estar violando nuestra política de generación. Posiblemente contenido inadecuado, sexual, ofensivo, o violento. GENERAL_ERROR Ocurrió un error general, posible saturación de los servidores, reintente el envio de esa imagen en concreto transcurridos unos segundos. |
image_url |
string
Una dirección HTTPS dónde descargar la imagen generada. |
Callbacks, funcionamiento
Reciba notificaciones de imagenes generadas en su servidor
Cuando una petición de generación incluye el parámetro callback_url los servidores de ZPK enviaran notificaciones del estado de las diferentes imagenes a la url indicada a medida que las imagenes son finalizadas.
Los envios se realizan a la url indicada por metodo POST y son de tipo JSON.
Precios de la generación de imagenes
Esta API se factura por demanda, y usted solo pagará según el número de mensajes analizados. No hay descuentos por volumen porque nuestra API tiene el mejor precio desde el primer request.
Modelo | Calidad | Resolución | Openai | ZPK |
---|---|---|---|---|
ZPK Ultra | Standard | 1024x1024 | - | 0,0380 € |
Standard | 1024x1792, 1792x1024 | - | 0,0780 € | |
HQ | 1024x1024 | - | 0,0780 € | |
HQ | 1024x1792, 1792x1024 | - | 0,1100 € | |
DALL·E 3 | Standard | 1024x1024 | 0,0400 € | 0,0390 € |
Standard | 1024x1792, 1792x1024 | 0,0800 € | 0,0790 € | |
HQ | 1024x1024 | 0,0800 € | 0,0790 € | |
HQ | 1024x1792, 1792x1024 | 0,1200 € | 0,1170 € |
Integración con PHP
SDK en PHP para generar imagenes con IA
ZPK-PHP es una librería de código abierto instalable mediante composer que le permitirá integrar nuestras APIs en su proyecto PHP con un mínimo esfuerzo.
Documentación del SDK para PHPInstalando ZPK-PHP con composer
composer require zpksystems/phpzpk
Ejemplo de request para generar imagenes
<?php
$application = new zpkApplication('app_id','api_key');
$generator = new zpkImageGenerator( $application );
// Create 3 images
$generator->setPrompt("ninja turtles eating pizza");
$generator->generate(3);
$generator->waitForGeneration();
foreach( $generator->images as $image ){
if( $image->isGenerated() ){
echo "Generated image, download url: ".$image->getDownloadUrl().PHP_EOL;
}else{
echo "Image cannot be generated. Error: ".$image->getErrorCode().PHP_EOL;
}
}
Regístrese para probar esta API
Regístrese para obtener crédito gratuito y probar esta y otras APIs de ZPK