Documentación de la API de Tinify para HTTP
Selecciona el lenguaje
La API de Tinify te permite comprimir y optimizar imágenes AVIF, JPEG XL, WebP, JPEG y PNG. Está diseñada como un servicio REST. Esta página describe la API HTTP directa. También mantenemos bibliotecas de cliente en varios lenguajes que facilitan mucho la interacción con la API de Tinify.
La API está alojada en api.tinify.com
Instalación
Para seguir los ejemplos siguientes, debes tener instalado curl. Compruébalo con:
curl --versionSi no está instalado, consulta las instrucciones oficiales de instalación:
Autenticación
Para usar la API, debes proporcionar tu clave API. Puedes obtener una clave API registrándote con tu nombre y dirección de correo electrónico. ¡Mantén siempre en secreto tu clave API! Realiza tus solicitudes desde tu servidor, no desde una página web: la API no acepta solicitudes que los navegadores envíen desde otros sitios web, y una página web revelaría tu clave.
La autenticación en la API se realiza con HTTP Basic Auth. Todas las solicitudes requieren un encabezado Authorization que contenga la cadena de autenticación api:YOUR_API_KEY codificada en Base64, donde YOUR_API_KEY es la clave que encontrarás en la página de tu cuenta API.
Todas las solicitudes deben realizarse a través de una conexión HTTPS cifrada, con TLS 1.2 o una versión posterior.
Comprimir imágenes
Puedes subir cualquier imagen AVIF, JPEG XL, WebP, JPEG o PNG a la API de Tinify para comprimirla. Detectaremos automáticamente el tipo de imagen y la optimizaremos con el motor de TinyPNG o TinyJPG, según corresponda. También puedes subir imágenes HEIC, que se comprimen en formato JPEG. La compresión comenzará en cuanto subas un archivo o proporciones la URL de la imagen.
Las imágenes pueden tener hasta 500 MB y 256 megapíxeles, y como máximo 150 000 píxeles de ancho o de alto. La imagen comprimida está disponible durante 8 horas después de que la subas, para que puedas descargarla, redimensionarla, convertirla o almacenarla.
Ejemplo de subida desde un archivo
Puedes subir un archivo local. Los datos del POST contienen el binario de la imagen.
Solicitud HTTP
POST /shrink HTTP/1.1
Host: api.tinify.com
Authorization: Basic YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1
[binary]Respuesta HTTP
HTTP/1.1 201 Created
Compression-Count: 1
Location: https://api.tinify.com/output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp
Content-Type: application/json
{
"input": {
"size": 207565,
"type": "image/jpeg"
},
"output": {
"size": 46480,
"type": "image/jpeg",
"width": 530,
"height": 300,
"ratio": 0.2239,
"url": "https://api.tinify.com/output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp"
}
}Por ejemplo, si tienes un archivo llamado unoptimized.jpg en el directorio actual:
curl https://api.tinify.com/shrink \
--user api:YOUR_API_KEY \
--data-binary @unoptimized.jpg \
--dump-header /dev/stdoutEjemplo de subida desde una URL
También puedes proporcionar una URL de tu imagen en lugar de tener que subirla. La API acepta un cuerpo JSON con la URL de la imagen como ubicación source.
Solicitud HTTP
POST /shrink HTTP/1.1
Host: api.tinify.com
Authorization: Basic YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1
Content-Type: application/json
{
"source": {
"url": "https://tinypng.com/images/panda-happy.png"
}
}Respuesta HTTP
HTTP/1.1 201 Created
Compression-Count: 1
Location: https://api.tinify.com/output/cc754aqye6299pggptshe175hdaskg0h
Content-Type: application/json
{
"input": {
"size": 75553,
"type": "image/png"
},
"output": {
"size": 30734,
"type": "image/png",
"width": 400,
"height": 400,
"ratio": 0.4068,
"url": "https://api.tinify.com/output/cc754aqye6299pggptshe175hdaskg0h"
}
}Por ejemplo, si tienes https://tinypng.com/images/panda-happy.png como origen:
curl https://api.tinify.com/shrink \
--user api:YOUR_API_KEY \
--header "Content-Type: application/json" \
--data '{"source": {"url": "https://tinypng.com/images/panda-happy.png"} }' \
--dump-header /dev/stdoutEjemplo de solicitud de descarga
La imagen comprimida se puede obtener usando la URL del encabezado Location del paso anterior.
Solicitud HTTP
GET /output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp HTTP/1.1
Host: api.tinify.com
Authorization: Basic YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Respuesta HTTP
HTTP/1.1 200 OK
Compression-Count: 1
Image-Width: 530
Image-Height: 300
Content-Type: image/jpeg
Content-Length: 46480
[binary]Por ejemplo, puedes guardar la imagen comprimida en un archivo llamado optimized.jpg y abrirlo:
curl https://api.tinify.com/output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp \
--user api:YOUR_API_KEY \
--output optimized.jpg
open optimized.jpgRedimensionar imágenes
Usa la API para crear versiones redimensionadas de las imágenes que has subido. Al dejar que la API se encargue del redimensionamiento, no tienes que escribir ese código tú mismo y solo tendrás que subir tu imagen una vez. Las imágenes redimensionadas se comprimirán de forma óptima y tendrán un aspecto bonito y nítido.
También puedes aprovechar el recorte inteligente para crear miniaturas que se centren en las áreas visualmente más importantes de tu imagen.
El redimensionamiento cuenta como una compresión adicional. Por ejemplo, si subes una sola imagen y obtienes la versión optimizada más 2 versiones redimensionadas, contará como 3 compresiones en total.
Ejemplo de solicitud de redimensionamiento
Puedes redimensionar una imagen usando la URL que se devolvió en el encabezado Location después de la compresión. Se debe proporcionar un cuerpo de solicitud JSON junto con un encabezado Content-Type: application/json.
Solicitud HTTP
POST /output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp HTTP/1.1
Host: api.tinify.com
Authorization: Basic YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1
Content-Type: application/json
{
"resize": {
"method": "fit",
"width": 150,
"height": 100
}
}Respuesta HTTP
HTTP/1.1 200 OK
Compression-Count: 2
Content-Type: image/jpeg
Image-Width: 150
Image-Height: 85
Content-Length: 12594
[binary]Por ejemplo, para guardar la imagen redimensionada y comprimida en un archivo llamado thumbnail.jpg:
curl https://api.tinify.com/output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp \
--user api:YOUR_API_KEY \
--header "Content-Type: application/json" \
--data '{ "resize": { "method": "fit", "width": 150, "height": 100 } }' \
--dump-header /dev/stdout --silent \
--output thumbnail.jpgOpciones de la solicitud
El method describe la forma en que se redimensionará tu imagen. Están disponibles los siguientes métodos:
- scale
Reduce la imagen proporcionalmente. Debes proporcionar un ancho o un alto de destino, pero no ambos. La imagen escalada tendrá exactamente el ancho o el alto indicado.

- fit
Reduce la imagen proporcionalmente para que quepa dentro de las dimensiones indicadas. Debes proporcionar tanto un ancho como un alto. La imagen escalada no superará ninguna de estas dimensiones.

- cover
Escala la imagen proporcionalmente y la recorta si es necesario para que el resultado tenga exactamente las dimensiones indicadas. Debes proporcionar tanto un ancho como un alto. Qué partes de la imagen se recortan se determina automáticamente. Un algoritmo inteligente determina las áreas más importantes de tu imagen.

- thumb
Una implementación más avanzada de cover que también detecta imágenes de objetos recortados sobre fondos lisos. La imagen se reduce al ancho y al alto que indiques. Si se detecta una imagen con un objeto independiente, añadirá más espacio de fondo donde sea necesario o recortará las partes poco importantes.
Si las dimensiones de destino son mayores que las dimensiones originales, la imagen no se ampliará. La ampliación se evita para proteger la calidad de tus imágenes. Esto significa que cover puede devolver una imagen más pequeña que las dimensiones de destino, mientras que thumb sigue devolviendo una imagen de objeto recortado con las dimensiones de destino, añadiendo fondo a su alrededor.
Convertir imágenes
Puedes usar la API para convertir tus imágenes al tipo de imagen que desees. Actualmente, Tinify admite la conversión entre AVIF, JPEG XL, WebP, JPEG y PNG. Si indicas más de un tipo de imagen en tu solicitud de conversión, se te devolverá la versión más pequeña.
Convertir una imagen cuenta como una compresión adicional.
Ejemplo de solicitud de conversión
Solicitud HTTP
POST /output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp HTTP/1.1
Host: api.tinify.com
Authorization: Basic YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1
Content-Type: application/json
{
"convert": { "type": "image/webp" }
}Respuesta HTTP
HTTP/1.1 200 OK
Compression-Count: 2
Content-Type: image/webp
Image-Width: 530
Image-Height: 300
Content-Length: 46480
[binary]Por ejemplo, para guardar una imagen PNG o JPEG comprimida como archivo WebP llamado panda-sticker.webp:
curl https://api.tinify.com/output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp \
--user api:YOUR_API_KEY \
--header "Content-Type: application/json" \
--data '{ "convert": { "type": "image/webp"} }' \
--dump-header /dev/stdout \
--output panda-sticker.webpImágenes con transparencia
Para convertir una imagen con fondo transparente a JPEG, que no admite transparencia, especifica con el objeto transform un color de fondo que sustituya la transparencia. Sin él, se omite JPEG cuando solicitas más de un tipo de imagen, y si solicitas solo JPEG, la solicitud falla con un error 400 Bad Request.
Ejemplo de solicitud de conversión y transformación
Si quieres convertir una imagen con fondo transparente en una con fondo sólido, especifica una propiedad background en el objeto transform. Si se proporciona esta propiedad, se rellenará el fondo de la imagen transparente.
Solicitud HTTP
POST /output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp HTTP/1.1
Host: api.tinify.com
Authorization: Basic YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1
Content-Type: application/json
{
"convert" : {
"type": "image/jpeg"
},
"transform": {
"background": "#000000"
}
}Respuesta HTTP
HTTP/1.1 200 OK
Compression-Count: 2
Content-Type: image/jpeg
Image-Width: 530
Image-Height: 300
Content-Length: 46480
[binary]Por ejemplo, si tienes una imagen con fondo transparente y quieres guardarla como JPEG:
curl https://api.tinify.com/output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp \
--user api:YOUR_API_KEY \
--header "Content-Type: application/json" \
--data '{ "convert" : {"type": "image/jpeg"}, "transform": {"background": "#000000"}}' \
--dump-header /dev/stdout \
--output panda-sticker.jpgOpciones de la solicitud
Puedes proporcionar las siguientes opciones para convertir tu imagen:
- convert
Los tipos de imagen que desees. Están disponibles las siguientes opciones como tipo:
- Un tipo de imagen, especificado como cadena
"image/webp". - Varios tipos de imagen, especificados como array
["image/webp", "image/jxl", "image/avif"]. Se devolverá el más pequeño de los tipos de imagen indicados. - El comodín
"*/*"devuelve el más pequeño de los tipos de imagen compatibles con Tinify, actualmente WebP, JPEG y PNG.
- Un tipo de imagen, especificado como cadena
- transform
El objeto transform especifica las transformaciones estilísticas que se aplicarán a tu imagen. Incluye una propiedad background para rellenar el fondo de una imagen transparente. Están disponibles las siguientes opciones para especificar un color de fondo:
- Un valor hexadecimal. Color de fondo personalizado mediante el valor hexadecimal de seis dígitos del color, por ejemplo:
"#000000". No se admiten valores de tres dígitos como"#000". "white"o"black". Solo se admiten como cadenas los colores blanco y negro.
Debes especificar un color de fondo si quieres convertir una imagen con fondo transparente a un tipo de imagen que no admita transparencia (como JPEG).
- Un valor hexadecimal. Color de fondo personalizado mediante el valor hexadecimal de seis dígitos del color, por ejemplo:
Conservar los metadatos
Puedes solicitar que se copien metadatos específicos de la imagen subida a la versión comprimida. Actualmente se admite conservar la información de derechos de autor (copyright), la ubicación GPS (location) y la fecha de creación (creation). Conservar metadatos aumenta el tamaño del archivo comprimido, por lo que solo deberías conservar los metadatos que sea importante mantener.
Conservar metadatos no contará como una compresión adicional. Sin embargo, en segundo plano la imagen se volverá a crear con los metadatos adicionales.
Ejemplo de solicitud de subida
Primero debes subir la imagen original, de forma similar a los ejemplos anteriores.
Solicitud HTTP
POST /shrink HTTP/1.1
Host: api.tinify.com
Authorization: Basic YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1
[binary]Respuesta HTTP
HTTP/1.1 201 Created
Compression-Count: 1
Location: https://api.tinify.com/output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp
Content-Type: application/json
{
"output": {
"size": 45974,
"type": "image/jpeg"
}
}Por ejemplo, si tienes un archivo llamado unoptimized.jpg en la carpeta actual:
curl https://api.tinify.com/shrink \
--user api:YOUR_API_KEY \
--data-binary @unoptimized.jpg \
--dump-header /dev/stdoutEjemplo de solicitud de descarga con metadatos
Ahora puedes descargar la versión comprimida de la imagen con la información de derechos de autor y la fecha de creación. Especifica la URL que se devolvió en el encabezado Location en el paso anterior y añade las instrucciones JSON de preserve para conservar los derechos de autor y la fecha de creación, como se indica a continuación.
Solicitud HTTP
POST /output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp HTTP/1.1
Host: api.tinify.com
Authorization: Basic YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1
Content-Type: application/json
{
"preserve": ["copyright", "creation"]
}Respuesta HTTP
HTTP/1.1 200 OK
Compression-Count: 1
Content-Type: image/jpeg
Image-Width: 530
Image-Height: 300
Content-Length: 46480
[binary]Ten en cuenta que el Content-Length será algo mayor que el size de salida del primer paso.
El siguiente ejemplo muestra cómo puedes guardar la imagen comprimida en un archivo llamado optimized-copyright.jpg en el que se han conservado los metadatos de derechos de autor.
curl https://api.tinify.com/output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp \
--user api:YOUR_API_KEY \
--header "Content-Type: application/json" \
--data '{ "preserve": ["copyright", "creation"] }' \
--dump-header /dev/stdout \
--output optimized-copyright.jpgOpciones de la solicitud
Puedes proporcionar las siguientes opciones para conservar metadatos específicos. No se añadirá ningún metadato si los metadatos solicitados no están presentes en la imagen subida.
- copyright
Conserva cualquier información de derechos de autor. Esto incluye la etiqueta de copyright EXIF (JPEG), la etiqueta de derechos XMP (PNG), así como un indicador o una URL de copyright de Photoshop. Utiliza hasta 90 bytes adicionales, más la longitud de los datos de derechos de autor.
- creation
Conserva cualquier fecha u hora de creación. Es el momento en que se creó originalmente la imagen o la foto. Esto incluye la etiqueta EXIF de fecha y hora original (JPEG) o la hora de creación XMP (PNG). Utiliza unos 70 bytes adicionales.
- location
Conserva cualquier dato de ubicación GPS que describa dónde se tomó la imagen o la foto. Esto incluye las etiquetas EXIF de latitud GPS y longitud GPS. Los datos de ubicación solo se pueden conservar en imágenes AVIF, JPEG XL, WebP y JPEG, no en imágenes PNG. Utiliza unos 130 bytes adicionales.
Guardar en Amazon S3
Puedes pedir a la API de Tinify que guarde las imágenes comprimidas directamente en tu Amazon S3. Esta función es útil si usas S3 para alojar imágenes, ya que elimina la necesidad de descargarlas a tu servidor y subirlas manualmente a S3. Una solicitud que almacena una imagen cuenta como una sola compresión adicional, incluso cuando también redimensiona o convierte la imagen.
Ejemplo de solicitud a S3
Puedes almacenar una imagen comprimida en S3 usando la URL que se devolvió en el encabezado Location. La solicitud que indica que el archivo se almacene en S3 debe incluir un cuerpo JSON con la información del bucket y un encabezado Content-Type: application/json.
Solicitud HTTP
POST /output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp HTTP/1.1
Host: api.tinify.com
Authorization: Basic YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1
Content-Type: application/json
{
"store" : {
"service": "s3",
"aws_access_key_id": "AKIAIOSFODNN7EXAMPLE",
"aws_secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-west-1",
"path": "example-bucket/my-images/optimized.jpg"
}
}Respuesta HTTP
HTTP/1.1 200 OK
Compression-Count: 2
Image-Width: 530
Image-Height: 300
Location: https://s3.us-west-1.amazonaws.com/example-bucket/my-images/optimized.jpg
Content-Type: application/json
{
"status": "success"
}Por ejemplo, para guardar la imagen comprimida en un archivo llamado my-images/optimized.jpg en un bucket llamado example-bucket:
curl https://api.tinify.com/output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp \
--user api:YOUR_API_KEY \
--dump-header /dev/stdout --silent \
--header "Content-Type: application/json" \
--data '{
"store" : {
"service": "s3",
"aws_access_key_id": "AKIAIOSFODNN7EXAMPLE",
"aws_secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-west-1",
"headers": {
"Cache-Control": "public, max-age=31536000"
},
"path": "example-bucket/my-images/optimized.jpg"
}
}'Opciones de la solicitud
Debes proporcionar las siguientes opciones para guardar una imagen en Amazon S3:
- service
Especifica
s3para almacenar en Amazon S3.
- aws_access_key_id, aws_secret_access_key
Tu ID de clave de acceso de AWS y tu clave de acceso secreta. Son las credenciales de una cuenta de usuario de Amazon AWS. Descubre cómo obtenerlas en la documentación de Amazon. El usuario debe tener los permisos correctos; consulta los detalles más abajo.
- region
La región de AWS en la que se encuentra tu bucket de S3.
- path
La ruta en la que quieres almacenar la imagen, incluido el nombre del bucket. La ruta debe indicarse con el siguiente formato:
<bucket>/<path>/<filename>.
Los siguientes ajustes son opcionales:
- headers (experimental)
Puedes establecer los encabezados
Cache-Control,Content-DispositionyExpiresde la imagen guardada. UsaCache-Controlpara controlar cómo el navegador almacena en caché la imagen, por ejemplo:public, max-age=31536000. La lista completa de directivas se encuentra en MDN Web Docs.Expiresdebe ser una fecha en formato RFC 2822, por ejemplo:Fri, 01 Jan 2027 00:00:00 GMT.
- acl (opcional)
Establece un valor opcional de lista de control de acceso (ACL) para gestionar la accesibilidad de los objetos. De forma predeterminada, los objetos se establecen como
public-read. Usano-aclpara no enviar ninguna ACL, algo que exigen los buckets que tienen las ACL deshabilitadas. Los buckets de S3 nuevos tienen las ACL deshabilitadas de forma predeterminada. Para obtener más información sobre las opciones de ACL, consulta la documentación de AWS sobre ACL predefinidas.El usuario que corresponde a tu ID de clave de acceso de AWS debe tener el permiso
PutObjecten las rutas de los objetos que quieras crear, y el permisoPutObjectAclsalvo que usesno-acl.
Ejemplo de política de acceso a S3
Si quieres crear un usuario con acceso limitado específicamente para la API de Tinify, puedes usar la siguiente política de ejemplo como punto de partida:
{
"Statement": {
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::example-bucket/*"
]
}
}Guardar en Google Cloud Storage
Puedes indicar a la API de Tinify que guarde las imágenes comprimidas directamente en Google Cloud Storage. Si usas GCS para alojar tus imágenes, te ahorras la molestia de descargar las imágenes a tu servidor y subirlas tú mismo a GCS. Una solicitud que almacena una imagen cuenta como una sola compresión adicional, incluso cuando también redimensiona o convierte la imagen.
Antes de poder almacenar una imagen en GCS, tendrás que generar un token de acceso con una cuenta de servicio.
Las imágenes se almacenan con acceso público de lectura, mediante la ACL predefinida publicRead. Esto no funciona con los buckets que tienen acceso uniforme a nivel de bucket, que no admiten ACL, ni con los que tienen la prevención de acceso público, que rechazan las ACL públicas. Una política de la organización puede imponer cualquiera de los dos ajustes.
Ejemplo de solicitud a GCS
Puedes almacenar una imagen comprimida en GCS usando la URL que se devolvió en el encabezado Location. La solicitud que indica que el archivo se almacene en GCS debe incluir un cuerpo JSON con la información del bucket y un encabezado Content-Type: application/json.
Solicitud HTTP
POST /output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp HTTP/1.1
Host: api.tinify.com
Authorization: Basic YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1
Content-Type: application/json
{
"store" : {
"service": "gcs",
"gcp_access_token": "YOUR_GCP_TOKEN_HERE",
"path": "example-bucket/my-images/optimized.jpg"
}
}Respuesta HTTP
HTTP/1.1 200 OK
Compression-Count: 2
Image-Width: 530
Image-Height: 300
Location: https://storage.googleapis.com/example-bucket/my-images/optimized.jpg
Content-Type: application/json
{
"status": "success"
}Por ejemplo, para guardar la imagen comprimida en un archivo llamado my-images/optimized.jpg en un bucket llamado example-bucket:
curl https://api.tinify.com/output/2xnsp7jn34e5t16047pvf1xa5f9ty2zp \
--user api:YOUR_API_KEY \
--dump-header /dev/stdout --silent \
--header "Content-Type: application/json" \
--data '{
"store" : {
"service": "gcs",
"gcp_access_token": "EXAMPLE_TOKEN_Ag_0HvsglgriGU_EXAMPLE_TOKEN",
"headers": {
"Cache-Control": "public, max-age=31536000"
},
"path": "example-bucket/my-images/optimized.jpg"
}
}'Opciones de la solicitud
Debes proporcionar las siguientes opciones para guardar una imagen en Google Cloud Storage:
- service
Especifica
gcspara almacenar en Google Cloud Storage.
- gcp_access_token
El token de acceso para autenticarte en Google Cloud Platform. Descubre cómo generar uno en la documentación de autenticación de Google.
- path
La ruta en la que quieres almacenar la imagen, incluido el nombre del bucket. La ruta debe indicarse con el siguiente formato:
<bucket>/<path>/<filename>.
Los siguientes ajustes son opcionales:
- headers (experimental)
Puedes establecer los encabezados
Cache-ControlyContent-Dispositionde la imagen guardada. UsaCache-Controlpara controlar cómo el navegador almacena en caché la imagen, por ejemplo:public, max-age=31536000. La lista completa de directivas se encuentra en MDN Web Docs.
Guardar en almacenamiento compatible con S3
Aunque la API de Tinify no ofrece una solución integrada para guardar las imágenes directamente en proveedores de almacenamiento compatibles con S3 distintos de Amazon, puedes guardar tus imágenes usando el ejemplo para el lenguaje de desarrollo que hayas elegido.
La API de S3 la utilizan proveedores de almacenamiento como DigitalOcean Spaces, Backblaze, G-Core Storage, Wasabi, CenturyLink Object Storage, Filebase y muchos otros.
Elige un lenguaje en la parte superior de la página para ver el código de ejemplo.
La documentación detallada sobre cómo usar la API de S3 se encuentra aquí.
Guardar en Microsoft Azure
Aunque la API de Tinify no ofrece una solución integrada para guardar las imágenes directamente en el almacenamiento de Microsoft Azure, puedes guardar tus imágenes usando el ejemplo para el lenguaje de desarrollo que hayas elegido.
Elige un lenguaje en la parte superior de la página para ver el código de ejemplo.
La documentación detallada sobre cómo usar la API de almacenamiento de Azure se encuentra aquí.
Gestión de errores
La API de Tinify utiliza códigos de estado HTTP para indicar si una solicitud se ha realizado correctamente o no. Los códigos de estado del rango 2xx indican que se ha realizado correctamente. Los códigos de estado del rango 4xx indican que hubo un problema con tu solicitud. Los códigos de estado del rango 5xx indican un problema temporal con la API de Tinify.
Los errores más habituales son:
400 Bad Request: la solicitud no es válida, por ejemplo, por una opción desconocida o porque la imagen no se puede decodificar o supera los límites. Modifica la solicitud antes de volver a intentarla.401 Unauthorized: falta la clave API o no es válida.404 Not Found: la URL de salida no existe o ha caducado. Las URL de salida están disponibles durante 8 horas después de que subas la imagen.415 Unsupported Media Type: el archivo no es de un tipo de imagen que admita la API.429 Too Many Requests: se ha alcanzado tu límite mensual de compresiones o estás haciendo solicitudes demasiado rápido. Elmessageindica cuál de los dos casos es. En el primero, espera hasta el siguiente mes natural o actualiza tu suscripción; en el segundo, añade algo de retraso entre solicitudes consecutivas. La respuesta no incluye ningún encabezadoRetry-After.5xx: un problema temporal con la API de Tinify. Puedes volver a intentar la solicitud sin riesgo al cabo de unos minutos.
Ejemplo de respuesta de error
Si se produce un error, el cuerpo HTTP contendrá los detalles del error en formato JSON. El message contendrá una breve descripción legible por humanos.
Solicitud HTTP
POST /shrink HTTP/1.1
Host: api.tinify.comRespuesta HTTP
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"error": "Unauthorized",
"message": "Credentials are invalid."
}Número de compresiones
El servicio web lleva la cuenta del número de compresiones que has realizado. La mayoría de las respuestas HTTP incluyen el número de compresiones realizadas este mes.
Ejemplo de respuesta
En la mayoría de las respuestas está presente el encabezado Compression-Count, que contiene el número de compresiones realizadas con esta clave API durante el mes natural en curso (UTC).
Solicitud HTTP
POST /shrink HTTP/1.1
Host: api.tinify.com
Authorization: Basic YXBpOmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1
[binary]Respuesta HTTP
HTTP/1.1 201 Created
Compression-Count: 12
[...]Cada subida cuenta como una compresión, salvo que no se pueda reducir más el tamaño del archivo. Si vuelves a subir la misma imagen con la misma clave API, no cuenta durante las 8 horas siguientes a la subida que sí contó. Una solicitud que redimensiona, convierte o almacena la imagen comprimida cuenta como una compresión más, incluso cuando hace varias de estas operaciones a la vez. No cuentan la descarga de la imagen comprimida ni la conservación de metadatos. Tu límite mensual se aplica a todas las claves API de tu cuenta en conjunto, por lo que, si tienes más de una clave, el recuento de cada clave puede ser inferior al total de tu cuenta.
Obtén tu clave API
Puedes obtener tu clave API en https://tinypng.com/developers
¿Necesitas ayuda? ¿Comentarios?
Siempre estamos aquí para ayudarte, así que si te quedas atascado, escríbenos a support@tinify.com. También es el lugar perfecto para enviarnos todas tus sugerencias y comentarios.