Skip to content

Referencia de API

URL base

txt
https://api.pixapi.ai

Headers compartidos

HeaderObligatorioDescripción
AuthorizationBearer $PIXAPI_KEY
Content-TypeUsa application/json para peticiones de imagen y vídeo.

Las peticiones de modelo de Pixapi siguen nombres de campo compatibles con OpenAI. Usa model, prompt, n, size y controles opcionales del modelo como quality. El formato de petición compatible con el antiguo Nano Banana solo está documentado en Formato de transición heredado.

Modos síncrono y asíncrono

Las peticiones de imagen soportan los endpoints síncronos estándar compatibles con OpenAI: POST /v1/images/generations y POST /v1/images/edits.

El trabajo de imagen de larga duración también puede usar endpoints asíncronos dedicados bajo /v1/async/*. La generación de vídeo es solo asíncrona y debe enviarse a través de POST /v1/async/videos/generations. Pixapi devuelve un ID de tarea inmediatamente. Consulta GET /v1/tasks/{id} hasta que la tarea alcance completed o failed.

Carga de trabajoEndpoint síncronoEndpoint asíncrono
Texto a imagenPOST /v1/images/generationsPOST /v1/async/images/generations
Edición de imágenesPOST /v1/images/editsPOST /v1/async/images/edits
Carga de trabajoEndpoint solo asíncrono
Generación de vídeoPOST /v1/async/videos/generations

No uses ?async=true ni "async": true. Consulta Tareas asíncronas de medios para el patrón completo de integración.

Ejemplos de petición

bash
curl https://api.pixapi.ai/v1/images/generations \
  -H "Authorization: Bearer $PIXAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3-pro-image-preview",
    "prompt": "A cinematic product photo of a ceramic coffee cup",
    "n": 1,
    "size": "1:1"
  }'
py
import os
import requests

response = requests.post(
    "https://api.pixapi.ai/v1/images/generations",
    headers={
        "Authorization": f"Bearer {os.environ['PIXAPI_KEY']}",
        "Content-Type": "application/json",
    },
    json={
        "model": "gemini-3-pro-image-preview",
        "prompt": "A cinematic product photo of a ceramic coffee cup",
        "n": 1,
        "size": "1:1",
    },
)

response.raise_for_status()
result = response.json()
print(result["data"][0]["url"])
js
const response = await fetch('https://api.pixapi.ai/v1/images/generations', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.PIXAPI_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'gemini-3-pro-image-preview',
    prompt: 'A cinematic product photo of a ceramic coffee cup',
    n: 1,
    size: '1:1',
  }),
});

if (!response.ok) {
  throw new Error(await response.text());
}

const result = await response.json();
console.log(result.data?.[0]?.url ?? result);
go
package main

import (
  "bytes"
  "fmt"
  "io"
  "net/http"
  "os"
)

func main() {
  body := []byte(`{
    "model": "gemini-3-pro-image-preview",
    "prompt": "A cinematic product photo of a ceramic coffee cup",
    "n": 1,
    "size": "1:1"
  }`)

  req, err := http.NewRequest(
    "POST",
    "https://api.pixapi.ai/v1/images/generations",
    bytes.NewBuffer(body),
  )
  if err != nil {
    panic(err)
  }
  req.Header.Set("Authorization", "Bearer "+os.Getenv("PIXAPI_KEY"))
  req.Header.Set("Content-Type", "application/json")

  resp, err := http.DefaultClient.Do(req)
  if err != nil {
    panic(err)
  }
  defer resp.Body.Close()

  result, _ := io.ReadAll(resp.Body)
  fmt.Println(string(result))
}
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

class PixapiExample {
  public static void main(String[] args) throws Exception {
    String body = """
      {
        "model": "gemini-3-pro-image-preview",
        "prompt": "A cinematic product photo of a ceramic coffee cup",
        "n": 1,
        "size": "1:1"
      }
      """;

    HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("https://api.pixapi.ai/v1/images/generations"))
      .header("Authorization", "Bearer " + System.getenv("PIXAPI_KEY"))
      .header("Content-Type", "application/json")
      .POST(HttpRequest.BodyPublishers.ofString(body))
      .build();

    HttpResponse<String> response = HttpClient.newHttpClient()
      .send(request, HttpResponse.BodyHandlers.ofString());

    System.out.println(response.body());
  }
}
php
<?php
$payload = json_encode([
  "model" => "gemini-3-pro-image-preview",
  "prompt" => "A cinematic product photo of a ceramic coffee cup",
  "n" => 1,
  "size" => "1:1",
]);

$ch = curl_init("https://api.pixapi.ai/v1/images/generations");
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer " . getenv("PIXAPI_KEY"),
    "Content-Type: application/json",
  ],
  CURLOPT_POSTFIELDS => $payload,
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

Generación de imágenes

http
POST /v1/images/generations

Genera una o más imágenes a partir de un prompt usando campos de petición compatibles con OpenAI.

CampoTipoObligatorioDescripción
modelstringID del modelo de imagen, como gemini-3-pro-image-preview o gpt-image-2. Usa IDs canónicos gemini-* para peticiones Gemini.
promptstringPrompt de texto que describe la imagen deseada.
nnumberNoNúmero de imágenes a devolver. El valor predeterminado es 1 cuando se omite.
sizestringNoForma de salida. Los modelos de imagen Gemini usan relaciones de aspecto como 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16 o 16:9; los modelos GPT Image usan auto, tamaños predefinidos o valores personalizados WIDTHxHEIGHT.
qualitystringNoNivel de calidad cuando está soportado, como low, medium, high o auto.

Edición de imágenes

http
POST /v1/images/edits

Edita una o más imágenes de entrada usando campos JSON compatibles con OpenAI. El campo image solo acepta URLs de imágenes alojadas.

CampoTipoObligatorioDescripción
modelstringID de modelo con capacidad de edición, como gemini-3-pro-image-preview o gpt-image-2. Usa IDs canónicos gemini-* para peticiones Gemini.
promptstringInstrucción de texto que describe la edición.
imagestring o string[]URL de imagen de entrada. Envía un array de URLs cuando el modelo soporte varias referencias. Los uploads de archivo y los datos base64 no están soportados.
nnumberNoNúmero de imágenes a devolver.
sizestringNoForma de salida. Los modelos de imagen Gemini usan relaciones de aspecto como 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16 o 16:9; los modelos GPT Image usan auto, tamaños predefinidos o valores personalizados WIDTHxHEIGHT.
qualitystringNoNivel de calidad cuando está soportado.
json
{
  "model": "gemini-3-pro-image-preview",
  "prompt": "Place the product on a warm studio background",
  "image": "https://cdn.example.com/product.png",
  "n": 1,
  "size": "1:1"
}

Las respuestas de imagen exitosas siguen la estructura de imagen de OpenAI:

json
{
  "created": 1766880000,
  "data": [
    {
      "url": "https://cdn.pixapi.ai/generated/image.png"
    }
  ]
}

Las respuestas de imagen siempre devuelven las URLs de los recursos generados en data[].url.

Envíos asíncronos de medios

http
POST /v1/async/images/generations
POST /v1/async/images/edits
POST /v1/async/videos/generations

Envía el trabajo de medios de larga duración como una tarea en segundo plano. Los endpoints asíncronos de imagen aceptan los mismos campos de petición que los endpoints de generación y edición de imagen correspondientes. La generación de vídeo solo está disponible a través del endpoint asíncrono de vídeo.

Los envíos de vídeo usan un payload JSON de estilo OpenAI:

CampoTipoObligatorioDescripción
modelstringID del modelo de vídeo, como veo o wan.
promptstringPrompt de texto que describe la escena y el movimiento.
durationnumberNoDuración solicitada del vídeo, en segundos.
sizestringNoRelación de aspecto de salida. Veo usa 16:9 por defecto y soporta 9:16 para vídeo vertical.
input_imagestringNoURL opcional de imagen de entrada para imagen a vídeo.
json
{
  "status": "submitted",
  "id": "task_01KPQ7J7DWB7QZ3WCEK3YVPBRA",
  "progress": 0,
  "created_at": 1703884800,
  "model": "gemini-3.1-flash-image-preview"
}
CampoDescripción
statussubmitted después de que Pixapi acepta la tarea.
idTask id usado con GET /v1/tasks/{id}.
progressValor entero de progreso de 0 a 100.
created_atTimestamp Unix del momento en que se envió la tarea.
modelID del modelo de la petición.

Tareas de medios

http
GET /v1/tasks/{id}

Recupera una tarea asíncrona de imagen o vídeo.

json
{
  "id": "xxx",
  "status": "completed",
  "credits_cost": 1.5,
  "model": "sora-2",
  "progress": 100,
  "result": {
    "type": "video",
    "data": [
      {
        "url": "https://xxx.xxx"
      }
    ]
  },
  "created": 1763088289,
  "completed": 1763088308
}
CampoDescripción
idTask id devuelto por la petición asíncrona de creación.
statussubmitted, processing, completed, or failed.
credits_costCréditos cobrados después de completar la tarea.
modelID del modelo usado por la tarea.
progressValor entero de progreso de 0 a 100.
result.typeTipo de medio de salida, como image o video.
result.dataElementos de medios generados. Cada elemento incluye una url cuando está disponible.
createdTimestamp Unix del momento en que se creó la tarea.
completedTimestamp Unix del momento en que se completó la tarea.

Formato de error

json
{
  "error": {
    "code": 400,
    "message": "xxx",
    "type": "invalid_request_error"
  }
}

Listar modelos

http
GET /v1/models

Devuelve los IDs de modelo y las capacidades disponibles para la cuenta actual.

Las respuestas de lista de modelos usan IDs de modelo canónicos. Prefiere los IDs gemini-* devueltos para las peticiones de generación y edición de Gemini.

json
{
  "object": "list",
  "data": [
    {
      "id": "gemini-3-pro-image-preview",
      "object": "model",
      "category": "image",
      "capabilities": ["text-to-image", "image-to-image"]
    }
  ]
}