curl --request POST 'https://api.voicecheap.ai/v1/actions/images_list' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"limit":20}'
const input = {
limit: 20,
};
const response = await fetch('https://api.voicecheap.ai/v1/actions/images_list', {
method: 'POST',
headers: {
'x-api-key': process.env.VOICECHEAP_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify(input),
});
const body = await response.json();
if (!response.ok) throw new Error(body.code + ': ' + body.message);
console.log(body);
import os
import requests
response = requests.post(
"https://api.voicecheap.ai/v1/actions/images_list",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={"limit": 20},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
{
"data": {
"items": [
{
"generationId": "6224018c7635dcb933ce5c8f7804aea73738dd1c",
"status": "completed",
"aspectRatio": "square",
"width": 1024,
"height": 1024,
"referenceImageCount": 1,
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"expiresAt": 1792749600000
}
],
"nextCursor": null
}
}
Imágenes
Listar imágenes generadas
Lista las imágenes generadas por la cuenta conectada, de la más reciente a la más antigua. Incluye el estado, las dimensiones y la caducidad; usa nextCursor para la página siguiente.
POST
/
v1
/
actions
/
images_list
curl --request POST 'https://api.voicecheap.ai/v1/actions/images_list' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"limit":20}'
const input = {
limit: 20,
};
const response = await fetch('https://api.voicecheap.ai/v1/actions/images_list', {
method: 'POST',
headers: {
'x-api-key': process.env.VOICECHEAP_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify(input),
});
const body = await response.json();
if (!response.ok) throw new Error(body.code + ': ' + body.message);
console.log(body);
import os
import requests
response = requests.post(
"https://api.voicecheap.ai/v1/actions/images_list",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={"limit": 20},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
{
"data": {
"items": [
{
"generationId": "6224018c7635dcb933ce5c8f7804aea73738dd1c",
"status": "completed",
"aspectRatio": "square",
"width": 1024,
"height": 1024,
"referenceImageCount": 1,
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"expiresAt": 1792749600000
}
],
"nextCursor": null
}
}
Lista las imágenes generadas por la cuenta conectada, de la más reciente a la más antigua. Incluye el estado, las dimensiones y la caducidad; usa nextCursor para la página siguiente.
Permisos necesarios:
POST https://api.voicecheap.ai/v1/actions/images_list
Autenticación y permisos
string
requerido
Envía una clave de API de VoiceCheap en esta cabecera. También se admite Authorization: Bearer con la misma clave de API. Los tokens de acceso OAuth
solo se aceptan en MCP, no en este endpoint REST.
images:read.
Se requiere una suscripción de pago activa. Los permisos no cambian los roles del equipo, la propiedad de los recursos, los créditos multimedia ni los límites del plan.
Parámetros
integer
Valor entero.Mínimo: 1. Máximo: 100. Valor predeterminado: 20.
string
El nextCursor de la página anterior.Longitud mínima: 1. Longitud máxima: 512.
Esquema completo de entrada
Esquema completo de entrada
El JSON Schema siguiente conserva los nombres exactos de los campos, los tipos anidados, los valores predeterminados, los límites y los valores aceptados que expone el descubrimiento. Las reglas adicionales entre campos se indican en las notas de la operación.
{
"type": "object",
"properties": {
"limit": {
"default": 20,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "The nextCursor from the previous page.",
"type": "string",
"minLength": 1,
"maxLength": 512
}
},
"additionalProperties": false
}
Ejemplos de solicitud
Sustituye los identificadores de recursos y las claves multimedia de los ejemplos por valores devueltos para tu cuenta. Mantén el identificador de solicitud al reintentar la misma modificación.curl --request POST 'https://api.voicecheap.ai/v1/actions/images_list' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"limit":20}'
const input = {
limit: 20,
};
const response = await fetch('https://api.voicecheap.ai/v1/actions/images_list', {
method: 'POST',
headers: {
'x-api-key': process.env.VOICECHEAP_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify(input),
});
const body = await response.json();
if (!response.ok) throw new Error(body.code + ': ' + body.message);
console.log(body);
import os
import requests
response = requests.post(
"https://api.voicecheap.ai/v1/actions/images_list",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={"limit": 20},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
Respuesta
Una primera ejecución correcta devuelve HTTP 200 con el resultado de la operación en data. Una repetición puede devolver el estado de la solicitud guardada en su lugar. El ejemplo muestra una respuesta admitida, no todos los campos opcionales. Una página de metadatos de imágenes generadas por la aplicación del usuario conectado, con los más recientes primero. Un historial vacío devuelve items: [] y nextCursor: null.{
"data": {
"items": [
{
"generationId": "6224018c7635dcb933ce5c8f7804aea73738dd1c",
"status": "completed",
"aspectRatio": "square",
"width": 1024,
"height": 1024,
"referenceImageCount": 1,
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"expiresAt": 1792749600000
}
],
"nextCursor": null
}
}
Campos del resultado
| Campo | Descripción |
|---|---|
data.items | Array de objetos de metadatos de imágenes. |
data.items[].generationId | Identificador que se debe pasar sin cambios a images_get o images_download. |
data.items[].status | pending, completed, failed o expired. La caducidad tiene prioridad sobre el estado guardado. |
data.items[].aspectRatio | square, landscape o portrait. |
data.items[].width | Ancho de salida en píxeles, o null antes de que las dimensiones estén disponibles. |
data.items[].height | Altura de salida en píxeles, o null antes de que las dimensiones estén disponibles. |
data.items[].referenceImageCount | Número de imágenes de referencia usadas: 0 o 1. |
data.items[].createdAt | Hora de creación en milisegundos Unix. |
data.items[].updatedAt | Hora de la última actualización en milisegundos Unix. |
data.items[].expiresAt | Tiempo en milisegundos Unix a partir del cual no se puede descargar la imagen generada. |
data.nextCursor | Cursor opaco de la página siguiente, o null si no hay más páginas disponibles. |
Notas de la operación
- Requiere images:read. limit tiene el valor predeterminado 20 y debe ser un entero de 1 a 100. cursor es opcional y está limitado a 512 caracteres.
- Pasa nextCursor sin cambios como cursor para la siguiente página. nextCursor es null al final; el orden usa la hora de creación y el identificador de generación en orden descendente.
- Esta acción usa las creaciones y cargas propias del usuario conectado, también cuando la credencial está conectada en un contexto de equipo.
- Los registros exponen los estados pending, completed, failed o expired. Las dimensiones pueden ser null para las generaciones incompletas o fallidas. Los metadatos pueden indicar expired antes de que la limpieza elimine un registro; esto no permite descargar la imagen.
- Solo las imágenes generadas por la aplicación pertenecen a este historial. Usa images_download para obtener los datos de la imagen; los historiales no incluyen bytes de imagen ni URL de vista previa.
Uso
Cada invocación correcta consume una llamada mensual de API/MCP. También se aplican los créditos multimedia y las cuotas de generación propias de la operación.Errores
| Estado HTTP | Código | Significado o solución |
|---|---|---|
| 400 | CREDENTIAL_IN_QUERY | Se han proporcionado credenciales en un parámetro de consulta access_token o api_key. Envía las credenciales en las cabeceras. |
| 400 | INVALID_CURSOR | cursor no es un cursor de historial válido; usa el nextCursor devuelto por la página anterior. |
| 400 | VALIDATION_ERROR | Falta un argumento, tiene un valor no compatible, supera su límite o no forma parte del esquema de entrada estricto. |
| 401 | API_KEY_EXPIRED | La clave API ha caducado. |
| 401 | INVALID_API_KEY | Proporciona una clave de API válida que no haya caducado. |
| 401 | INVALID_CREDENTIAL | La cabecera Authorization tiene un formato incorrecto o entra en conflicto con x-api-key. |
| 401 | MISSING_CREDENTIAL | No se proporcionó ninguna credencial de cabecera utilizable o superaba 4096 caracteres. |
| 401 | USER_NOT_FOUND | La cuenta de la credencial ya no existe. |
| 403 | AMBIGUOUS_TEAM_API_KEY | El usuario de la credencial pertenece a más de un equipo, por lo que el contexto de facturación es ambiguo. |
| 403 | INSUFFICIENT_SCOPE | Concede todos los permisos necesarios o elige otra credencial. |
| 403 | INTEGRATION_PLAN_UNSUPPORTED | No se han podido verificar los límites de integración de la cuenta. |
| 403 | SUBSCRIPTION_REQUIRED | Usa una suscripción de pago activa. |
| 403 | TEAM_OWNER_NOT_FOUND | No se pudo encontrar la cuenta del propietario efectivo del equipo. |
| 429 | INTEGRATION_MONTHLY_LIMIT_REACHED | Espera al restablecimiento mensual o cambia de plan. |
| 429 | INTEGRATION_RATE_LIMIT_REACHED | Espera el tiempo indicado en Retry-After cuando esté presente y aplica esperas progresivas. |
| 500 | INTERNAL_ERROR | Comprueba el estado de la solicitud guardada y el historial del recurso antes de decidir si reintentas una modificación. |
| 503 | SERVER_RESTARTING | El servidor se está reiniciando. Reinténtalo en breve y conserva el mismo identificador de solicitud para una modificación. |
{
"code": "INSUFFICIENT_SCOPE",
"message": "This credential does not permit the requested action.",
"status": 403,
"details": {
"requiredScopes": ["images:read"]
}
}
¿Esta página le ayudó?

