Skip to content

Desenvolvimento

Este guia mostra o fluxo padrão compatível com OpenAI para integrar a Pixapi em sua aplicação.

1. Crie uma chave de API

Abra o painel da Pixapi e crie uma chave em Configurações -> Chaves de API. Armazene o valor no ambiente do seu servidor:

bash
PIXAPI_KEY=sk_...

Não exponha esta chave em código do lado do navegador.

2. Escolha um modelo

Comece com um dos IDs de modelo abaixo:

Caso de usoID do modeloEndpoint
Geração e edição rápida de imagensgemini-2.5-flash-image/v1/images/generations, /v1/images/edits
Geração de imagens Gemini equilibradagemini-3.1-flash-image-preview/v1/images/generations, /v1/images/edits
Geração de imagens Gemini de alta fidelidadegemini-3-pro-image-preview/v1/images/generations, /v1/images/edits
Geração e edição de imagens GPTgpt-image-2/v1/images/generations, /v1/images/edits
Geração de vídeoveo/v1/async/videos/generations

3. Envie uma requisição

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;

4. Execute requisições longas assincronamente

Para imagens grandes e edições de imagens, use o endpoint assíncrono que corresponde ao endpoint de imagem. A geração de vídeo é apenas assíncrona.

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

A Pixapi retorna um task id com status: "submitted" e progress: 0. Consulte GET /v1/tasks/{id} a partir do seu backend até que a tarefa chegue a completed ou failed. Consulte Tarefas Assíncronas de Mídia para o ciclo completo.

5. Lide com status e erros

Respostas de imagem bem-sucedidas usam payloads data[] no estilo OpenAI. Requisições com falha incluem código de status HTTP, mensagem e tipo de erro legível por máquina.

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

Consulte Erros para a lista de erros comuns.

Para apps voltados ao usuário, direcione error.type === "insufficient_credits" para Créditos ou Cobrança, para que os usuários resolvam o problema sem sair do fluxo do produto.

6. Mantenha chamadas voltadas ao usuário atrás do seu backend

Para aplicativos de navegador, direcione as chamadas da Pixapi através de sua própria rota de API:

txt
Navegador -> Seu backend -> Pixapi

Isso protege sua chave de API e permite adicionar limites de taxa por usuário, logs de uso e validação específica de produto antes de gastar créditos. Revise o saldo e o histórico em Créditos antes do lançamento.