Saltar a contenido

API - Documentación

PhotoILike proporciona un servicio de API REST que permite a las compañías integrar los servicios en sus propios sistemas. En esta documentación encontrará las instrucciones necesarias para que esta integración se realice de la forma más sencilla posible. Si aun así tiene alguna duda o problema, no dude en contactar con nosotros a través de este enlace.

Client-key

Para los clientes finales, PhotoILike dispone de un Software as a Service en https://app.photoilike.com. Sin embargo, las empresas que requieran dar soporte a varios clientes, pueden integrar nuestros servicios dentro de sus propias implementaciones.

PhotoILike proporciona una manera directa de trabajar con múltiples usuarios a través de client-keys, teniendo cada usuario final un client-key único. PhotoILike permite crear tantos client-keys como sean necesarios y estos deben ser utilizados para cada uno de los recursos que se soliciten.

Cantidad máxima de peticiones simultáneas

La mayoría de las peticiones que se pueden realizar al API de PhotoILike deben ir acompañadas de un client-key y tienen un límite por segundo. La siguiente tabla muestra la cantidad máxima de peticiones por segundo que se pueden realizar por client-key.

Recurso Límite
score 5/sg
label 5/sg
sort 10/sg

El resto de peticiones no tienen por qué ir acompañadas de un client-key, pero también tienen un límite por segundo. La siguiente tabla muestra la cantidad de peticiones que se pueden realizar en esos casos.

Recurso Limite
client key 5/sg

Código de errores

Se utilizan los código HTTP para definir los errores de una petición que no se resuelve de forma satisfactoria. A continuación se muestran los distintos tipos de errores que se pueden producir al utilizar nuestra API, aunque si tiene alguna duda siempre puede contactar con el equipo de PhotoILike a través de este enlace.

Errores en el lado del cliente

Código HTTP Significado
400 Petición incorrecta.
Este error suele aparecer cuando un parámetro que se ha introducido no es correcto, se han introducido parámetros no esperados o falta algún parámetro por introducir.
401 No se ha autenticado correctamente.
402 Se han agotado todos los créditos disponibles.
403 No dispone de los permisos adecuados para poder llevar a cabo la petición solicitada.
404 No se encuentra el recurso solicitado.
405 El método solicitado no está disponible.
408 La url de la que se intenta obtener el recurso a procesar tarda demasiado tiempo.
411 El servidor que contiene la imagen a procesar no devuelve información sobre su tamaño.
413 La petición solicitada tiene un tamaño muy grande.
415 El formato en el que se envió la petición no está soportado.
429 Se han realizado muchas peticiones consecutivas.
Los parámetros X-RateLimit en las cabeceras indican el estado actual de las peticiones.

Errores en el lado del servidor

Desde PhotoILike trabajamos duro para que no se produzca ningún error en nuestros servidores, pero por razones que escapan a nuestro control se podría producir alguno de los siguientes:

Código HTTP Significado
500 Se ha producido un error interno en el servidor y no ha podido procesar la petición.
502 El acceso a los servicios se está configurando y aún no está disponible.
503 El servicio no está disponible en ese momento.
504 El servidor esta tardando más tiempo del esperado en resolver la petición.

Recomendaciones

Numerosos componentes de una red, como los servidores DNS, los conmutadores o los balanceadores de carga, entre otros, pueden generar errores en cualquier punto de la vida de una solicitud determinada. La técnica habitual para abordar estas respuestas de error en un entorno de red consiste es implementar los reintentos en la aplicación cliente. Esta técnica aumenta la confiabilidad de la aplicación y reduce los costos operativos para el desarrollador.

Por ese motivo es necesario que al usar cualquier API, sea de PhotoILike o cualquier otra, se reintenten las solicitudes originales que reciban errores de servidor (5xx) o limitación. Sin embargo, los errores de cliente (4xx)1 indican que es preciso revisar la solicitud para corregir el problema antes de reintentar la petición.

Una forma sencilla de realizar los intentos es la utilización de algoritmos de backoff exponencial y jitter para los que existen implementaciones disponibles para varios lenguajes2.


  1. Ante los errores 408 y 429 se puede reintentar la petición porque pueden ser un fallo temporal. En el ejemplo del error 408 es debido a que la URL desde la que se intenta obtener la imagen tarda mucho tiempo en responder lo que indica que puede estar saturado en un instante determinado y que más adelante en el tiempo no esté saturada y responda con normalidad. En cuanto al error 429, se debe a que se están haciendo muchas peticiones simultáneas, lo que por definición indica que en un breve periodo de tiempo se pueden volver a realizar peticiones. 

  2. Algunas librerías disponibles con la implementación: