Documentação para desenvolvedores

Troque uma linha.
Use GPT, Claude, 3D e mídia.

A CentopeIA funciona com os SDKs oficiais da OpenAI, da Anthropic e do Replicate, e com a API de modelos 3D. Você só aponta o cliente para o nosso endereço e usa a sua chave CentopeIA. Todo o resto continua igual.

Integrando com um assistente de IA ou IDE? Conecte o nosso servidor MCP direto no Cursor, Claude ou VS Code, ou cole este prompt para o assistente ler a documentação para IA.
app.py
  client = OpenAI(
-     api_key="sk-proj-...",
+     api_key="sk-ctp-...",
+     base_url="https://jukepix.centopeia.io/openai/v1",
  )

  client.chat.completions.create(...)  # igual
Nenhuma outra mudança no seu código
Início rápido

Comece em 3 passos

Do zero à primeira resposta em poucos minutos. Escolha o provedor e a linguagem: os exemplos se ajustam.

  1. 1

    Guarde a sua chave

    O nosso time entrega uma chave sk-ctp-... para cada aplicação. Ela é exibida uma única vez: salve em uma variável de ambiente, nunca no código.

    .env
    CENTOPEIA_API_KEY=sk-ctp-...
  2. 2

    Instale o SDK oficial

    Nada de biblioteca nova: use exatamente o SDK que você já conhece.

    Terminal
    pip install openai anthropic replicate requests
  3. 3

    Aponte para a CentopeIA e chame o modelo

    Informe a chave e o endereço base. A partir daqui, é a API de sempre do GPT.

    import os
    from openai import OpenAI
    
    client = OpenAI(
        api_key=os.environ["CENTOPEIA_API_KEY"],
        base_url="https://jukepix.centopeia.io/openai/v1",
    )
    
    resposta = client.chat.completions.create(
        model="gpt-5.5",
        max_completion_tokens=500,
        messages=[{"role": "user", "content": "Diga olá em uma frase."}],
    )
    print(resposta.choices[0].message.content)

Pronto. A mesma chave funciona para GPT e Claude. O consumo aparece por chave no painel da sua empresa e é cobrado em reais.

Atalho

Integre só com variáveis de ambiente

Os SDKs oficiais leem a chave e o endereço base direto do ambiente. Com estas quatro linhas, o seu projeto passa a usar a CentopeIA sem tocar no código.

.env
# Os SDKs oficiais leem estas variáveis sozinhos
OPENAI_API_KEY=sk-ctp-...
OPENAI_BASE_URL=https://jukepix.centopeia.io/openai/v1

ANTHROPIC_API_KEY=sk-ctp-...
ANTHROPIC_BASE_URL=https://jukepix.centopeia.io/anthropic
from openai import OpenAI
from anthropic import Anthropic

gpt = OpenAI()        # já aponta para a CentopeIA
claude = Anthropic()  # idem

Ideal para projetos que já usam OpenAI ou Anthropic: troque as variáveis no deploy e pronto.

GPT

Usando os modelos da OpenAI

Endereço base: https://jukepix.centopeia.io/openai/v1. Todos os exemplos abaixo partem do cliente configurado no passo 3.

Responses API

A interface mais recente da OpenAI para texto e ferramentas.

resposta = client.responses.create(
    model="gpt-5.5",
    input="Explique o que é uma API em duas frases.",
    max_output_tokens=500,
)
print(resposta.output_text)

Respostas em tempo real (streaming)

Receba o texto à medida que é gerado. O último pedaço da transmissão traz o resumo de consumo, por isso confira se há conteúdo antes de ler.

stream = client.chat.completions.create(
    model="gpt-5.5",
    max_completion_tokens=500,
    messages=[{"role": "user", "content": "Conte uma história curta."}],
    stream=True,
)
for chunk in stream:
    if chunk.choices:  # o último pedaço traz apenas o consumo
        print(chunk.choices[0].delta.content or "", end="", flush=True)

Embeddings

Gere vetores para busca semântica, recomendação e RAG.

resultado = client.embeddings.create(
    model="text-embedding-3-small",
    input=["CentopeIA", "IA em reais"],
)
vetor = resultado.data[0].embedding
print(len(vetor))

Geração de imagens

Crie imagens a partir de texto com o gpt-image-2.5-sunburst, o modelo de imagem mais detalhado da OpenAI. A imagem volta em base64, pronta para salvar.

import base64
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["CENTOPEIA_API_KEY"],
    base_url="https://jukepix.centopeia.io/openai/v1",
)

resposta = client.images.generate(
    model="gpt-image-2.5-sunburst",
    prompt=(
        "Suíte de luxo em um hotel 5 estrelas nos Alpes Suíços, "
        "janelas panorâmicas com vista para montanhas nevadas, "
        "lareira acesa, madeira nobre e pedra, luz quente ao entardecer, "
        "fotografia de arquitetura hiper-realista"
    ),
    size="1536x864",  # 16:9, largura e altura múltiplas de 16
    quality="high",   # low, medium, high, xhigh ou max
    n=1,
)

with open("suite_alpes.png", "wb") as arquivo:
    arquivo.write(base64.b64decode(resposta.data[0].b64_json))
print("Imagem salva em suite_alpes.png")
Tamanho

Escolha qualquer formato: largura e altura múltiplas de 16, lado maior de até 3840 px e proporção de até 3:1.

1024x1024QuadradoPosts e avatares
1536x86416:9Banners e capas
864x15369:16Stories e telas de celular
1536x10243:2Fotografia
3840x21604K 16:9Telas grandes e impressão
Qualidade

Mais qualidade traz mais detalhe, com mais tempo de geração e custo maior.

lowmediumhighxhighmax
Modelos
  • gpt-image-2.5-sunburstMáximo detalhe, ideal para fotorrealismo
  • gpt-image-2.5-flareOs mesmos recursos, com geração mais rápida
  • gpt-image-2Geração anterior, com low, medium e high

Um tamanho fora dessas regras, como 1600x900 (900 não é múltiplo de 16), é recusado antes da geração e não gera custo. Para 16:9, use 1536x864 ou 2560x1440.

Modelos disponíveis

for modelo in client.models.list():
    print(modelo.id)
Claude

Usando os modelos da Anthropic

Endereço base: https://jukepix.centopeia.io/anthropic. O SDK completa o caminho /v1 sozinho; em chamadas diretas (cURL), use https://jukepix.centopeia.io/anthropic/v1.

Respostas em tempo real (streaming)

with client.messages.stream(
    model="claude-sonnet-5-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Conte uma história curta."}],
) as stream:
    for texto in stream.text_stream:
        print(texto, end="", flush=True)

Contagem de tokens

Saiba o tamanho de uma mensagem antes de enviá-la. Esta chamada não gera custo de modelo.

contagem = client.messages.count_tokens(
    model="claude-sonnet-5-5",
    messages=[{"role": "user", "content": "Quantos tokens tem esta frase?"}],
)
print(contagem.input_tokens)
Mídia e 3D

Modelos 3D, imagens, vídeos e áudio

Tarefas que levam de segundos a minutos: você cria a tarefa, recebe um identificador e consulta até ficar pronta. A cobrança é pelo que a tarefa produz e sai do mesmo saldo da empresa. Tarefas que falham não são cobradas.

Modelo 3D a partir de uma imagem

Endereço base: https://jukepix.centopeia.io/meshy/openapi/v1, compatível com a API da Meshy. Envie a imagem como URL pública ou data URI. O resultado traz o modelo em GLB, FBX, OBJ e USDZ em model_urls, disponível por 3 dias. Para várias fotos do mesmo objeto, use multi-image-to-3d com image_urls.

import base64, os, sys, time
import requests

BASE = "https://jukepix.centopeia.io/meshy/openapi/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['CENTOPEIA_API_KEY']}"}

# Foto do objeto (JPG, PNG ou WebP, até 20 MB). Também aceita uma URL pública HTTPS.
with open("foto.png", "rb") as arquivo:
    imagem = "data:image/png;base64," + base64.b64encode(arquivo.read()).decode()

r = requests.post(f"{BASE}/image-to-3d", headers=HEADERS, json={
    "image_url": imagem,
    "ai_model": "meshy-6-lite",   # rascunho rápido: 5 créditos
    "should_texture": False,      # True gera textura (mais créditos)
})
if not r.ok:
    sys.exit(f"Erro {r.status_code} ({r.json().get('code')}): {r.json().get('message')}")
tarefa = r.json()["result"]

while True:
    t = requests.get(f"{BASE}/image-to-3d/{tarefa}", headers=HEADERS).json()
    print(t.get("status"), t.get("progress"), "%")
    if t.get("status") in ("SUCCEEDED", "FAILED", "CANCELED"):
        break
    time.sleep(5)

if t["status"] == "SUCCEEDED":
    print("Modelo GLB:", t["model_urls"]["glb"])  # baixe em até 3 dias
else:
    print("A tarefa não foi concluída:", t.get("task_error", {}).get("message"))

Imagem, vídeo, áudio e modelos abertos

Use o SDK oficial do Replicate com o endereço https://jukepix.centopeia.io/replicate/v1. Os modelos liberados para sua empresa, com preços em reais, ficam na aba Modelos do painel. Envie arquivos de entrada como URL ou data URI; webhooks não são aceitos, então consulte a predição ou use o cabeçalho Prefer: wait.

import os
import urllib.request
import replicate

client = replicate.Client(
    api_token=os.environ["CENTOPEIA_API_KEY"],
    base_url="https://jukepix.centopeia.io/replicate",
)

links = client.run(
    "black-forest-labs/flux-schnell",
    input={"prompt": "Uma centopeia verde lendo um livro, ilustração"},
    use_file_output=False,  # devolve os links dos arquivos gerados
)
urllib.request.urlretrieve(links[0], "imagem.webp")  # o link expira: guarde o arquivo
print("Imagem salva em imagem.webp")

Tarefas longas: vídeo e transcrição

Crie a predição, guarde o id e espere o resultado. Os arquivos gerados ficam disponíveis por 1 hora: baixe e guarde no seu armazenamento.

import os
import replicate

client = replicate.Client(
    api_token=os.environ["CENTOPEIA_API_KEY"],
    base_url="https://jukepix.centopeia.io/replicate",
)

# Tarefas longas (vídeo, transcrição): crie, guarde o id e espere o resultado.
predicao = client.models.predictions.create(
    model="bytedance/seedance-1-lite",
    input={"prompt": "Drone sobrevoando uma floresta ao amanhecer", "duration": 5},
)
predicao.wait()
print(predicao.status, predicao.output)  # links dos arquivos: baixe em até 1 hora

Modelos disponíveis

Use o identificador do modelo na chamada. Os parâmetros de input são os mesmos da página de cada modelo no Replicate. Os liberados para sua empresa, com preço em reais, aparecem na aba Modelos do painel.

Categoria Modelos Para que serve
Modelos 3D image-to-3dmulti-image-to-3d Modelo 3D (GLB, FBX, OBJ, USDZ) a partir de uma ou várias fotos
Imagens black-forest-labs/flux-schnellgoogle/nano-bananabytedance/sdxl-lightning-4step Gerar e editar imagens a partir de texto
Vídeos wan-video/wan-2.2-i2v-fastprunaai/p-videobytedance/seedance-1-lite Vídeos curtos a partir de texto ou imagem
Texto (modelos abertos) meta/meta-llama-3-8b-instructmeta/meta-llama-3-70b-instructmeta/meta-llama-3-8b Conversa e geração de texto com Llama 3
Ampliar e restaurar imagens nightmareai/real-esrgantencentarc/gfpgansczhou/codeformer Aumentar a resolução e recuperar rostos
Remover fundo 851-labs/background-removerlucataco/remove-bgcjwbw/rembg Recortar o objeto principal de uma imagem
Transcrever áudio openai/whispervaibhavs10/incredibly-fast-whispervictor-upmeet/whisperx Fala para texto, com marcação de tempo e falantes
Gerar fala minimax/speech-02-turbojaaari/kokoro-82mlucataco/xtts-v2 Texto para áudio com vozes naturais
Ecossistema

Funciona com os frameworks que você usa

Qualquer ferramenta que aceite um endereço base personalizado para OpenAI ou Anthropic funciona com a CentopeIA.

LangChainPython
Python
from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic

gpt = ChatOpenAI(
    model="gpt-5.5",
    api_key=CHAVE_CENTOPEIA,
    base_url="https://jukepix.centopeia.io/openai/v1",
    max_tokens=500,
)
claude = ChatAnthropic(
    model="claude-sonnet-5-5",
    api_key=CHAVE_CENTOPEIA,
    base_url="https://jukepix.centopeia.io/anthropic",
    max_tokens=1024,
)
print(claude.invoke("Olá!").content)
Vercel AI SDKNode.js
Node.js
import { createOpenAI } from "@ai-sdk/openai";
import { createAnthropic } from "@ai-sdk/anthropic";
import { generateText } from "ai";

const openai = createOpenAI({
  apiKey: process.env.CENTOPEIA_API_KEY,
  baseURL: "https://jukepix.centopeia.io/openai/v1",
});
const anthropic = createAnthropic({
  apiKey: process.env.CENTOPEIA_API_KEY,
  baseURL: "https://jukepix.centopeia.io/anthropic/v1",
});

const { text } = await generateText({
  model: anthropic("claude-sonnet-5-5"),
  maxOutputTokens: 500,
  prompt: "Olá!",
});
Servidor MCP & Assistentes

Servidor MCP (Model Context Protocol): conecte Claude, Cursor, VS Code, ChatGPT e outros projetos

O servidor MCP nativo da CentopeIA implementa a especificação oficial Model Context Protocol (transporte HTTP/SSE). Com ele, assistentes de código e chat acessam os modelos da plataforma (texto, imagem, embeddings, vídeo, áudio e 3D), consultam preços em tempo real, gerenciam chaves, acompanham o saldo da empresa e operam com as permissões do seu papel. Você também pode conectar seus próprios agentes, pipelines ou projetos externos usando qualquer cliente MCP oficial.

Endereço do servidor
https://jukepix.centopeia.io/mcp
Claude e ChatGPTConector OAuth

No Claude: Configurações, Conectores, Adicionar conector personalizado. No ChatGPT: Configurações, Aplicativos e conectores, modo desenvolvedor, novo conector com autenticação OAuth. Cole o endereço acima e autorize pelo navegador com um clique.

Claude CodeTerminal
Terminal
claude mcp add --transport http centopeia https://jukepix.centopeia.io/mcp
Cursor~/.cursor/mcp.json
mcp.json
{
  "mcpServers": {
    "centopeia": {
      "url": "https://jukepix.centopeia.io/mcp"
    }
  }
}
VS Code.vscode/mcp.json
mcp.json
{
  "servers": {
    "centopeia": {
      "type": "http",
      "url": "https://jukepix.centopeia.io/mcp"
    }
  }
}

Ferramentas disponíveis no servidor MCP

Quando conectado via MCP, seu assistente ou aplicação ganha acesso a estas ferramentas padronizadas:

Grupo Ferramentas
Usar modelos gerar_texto, gerar_imagem, gerar_embeddings, chamar_api, criar_tarefa_midia, consultar_tarefa_midia, cancelar_tarefa_midia
Integração listar_modelos, detalhes_do_modelo, exemplo_de_codigo, documentacao, diagnosticar_erro, verificar_configuracao
Chaves listar_chaves, criar_chave, ajustar_chave, revogar_chave
Saldo ver_saldo, ver_extrato, ver_consumo, recarregar_pix, pix_fixo, ajustar_teto_diario
Equipe listar_equipe, convidar_membro, alterar_membro, remover_membro

Para scripts, agentes customizados ou ferramentas sem login pelo navegador, gere um token pessoal sk-ctp-mcp-... no painel e envie no cabeçalho Authorization: Bearer <token>.

  • Ações que não têm volta, recargas Pix e chamadas a modelos acima de R$ 1,00 pedem confirmação em duas etapas: o assistente mostra um resumo e só executa depois que você concordar.
  • Chaves novas e senhas provisórias chegam por um link seguro de uso único, válido por 10 minutos, nunca pelo chat.
  • O uso de modelos pelos assistentes respeita um teto diário por pessoa (padrão R$ 5,00), ajustável por Owner e Admin, além dos limites da chave escolhida.
  • Tudo o que cada assistente faz fica registrado na aba Assistentes de IA.
Referência

Endereços, autenticação e endpoints

Autenticação

Envie a chave em qualquer um dos cabeçalhos. Os SDKs fazem isso por você.

Authorization: Bearer sk-ctp-... x-api-key: sk-ctp-...
Tamanho máximo

Cada requisição pode ter até 32 MB.

Privacidade

Não guardamos o conteúdo das suas mensagens. Registramos apenas o modelo e os tokens usados, para a cobrança.

Modelo Endpoint Para que serve
GPT POST/openai/v1/chat/completions Conversas e completions
GPT POST/openai/v1/responses Responses API
GPT POST/openai/v1/embeddings Vetores para busca e RAG
GPT POST/openai/v1/images/generations Geração de imagens por texto
GPT GET/openai/v1/models Modelos disponíveis
Claude POST/anthropic/v1/messages Mensagens com o Claude
Claude POST/anthropic/v1/messages/count_tokens Contagem de tokens
Claude GET/anthropic/v1/models Modelos disponíveis
3D POST/meshy/openapi/v1/image-to-3d Modelo 3D a partir de uma imagem
3D POST/meshy/openapi/v1/multi-image-to-3d Modelo 3D a partir de 1 a 4 fotos
3D GET/meshy/openapi/v1/image-to-3d/{id} Situação e arquivos da tarefa
Mídia POST/replicate/v1/models/{dono}/{nome}/predictions Imagem, vídeo, áudio e modelos abertos
Mídia GET/replicate/v1/predictions/{id} Situação e resultado
Mídia POST/replicate/v1/predictions/{id}/cancel Cancelar
MCP POST/mcp Servidor Model Context Protocol (OAuth 2.1 e token pessoal)

Recursos que armazenam dados no provedor, como arquivos, batches e respostas salvas, não estão disponíveis. Assim, nada do que você envia fica guardado fora da sua aplicação. Em mídia e 3D, cada tarefa só pode ser consultada pela empresa que a criou, e os resultados expiram (1 hora para mídia, 3 dias para 3D).

Orçamento

Chaves com limite de gasto

Se a sua chave ou empresa tem um limite mensal, cada chamada é conferida antes de chegar ao modelo. Para isso, alguns cuidados simples:

  • Informe sempre o limite de saída. max_completion_tokens no Chat Completions, max_output_tokens na Responses API e max_tokens no Claude.
  • Ferramentas do tipo função. Function calling funciona normalmente; ferramentas hospedadas pelo provedor não.
  • Conversas enviadas a cada chamada. Mande o histórico em messages ou input, em vez de previous_response_id ou conversation.
  • Imagens com tamanho e qualidade. Use size e quality explícitos e até uma imagem por chamada em streaming.
  • Mídia e 3D cobram pelo que foi produzido. O custo máximo estimado é reservado ao criar a tarefa. Tarefas que falham não são cobradas. Sem saldo para a reserva, a criação retorna 402.

O valor máximo da chamada é reservado no início e ajustado ao consumo real no fim. Você nunca paga pela reserva, só pelo que foi usado.

Erros

Quando algo dá errado

Os erros seguem o mesmo formato de cada provedor, então os SDKs lançam as exceções que você já trata hoje.

Status O que significa O que fazer
400 Faltou o limite de saída ou uma opção não é aceita. Inclua max_tokens (ou equivalente) e revise os parâmetros.
401 Chave inválida ou revogada. Confira a variável de ambiente ou peça uma nova chave.
402 Saldo insuficiente para iniciar uma tarefa de mídia ou 3D. Recarregue os créditos da empresa ou ajuste o limite da chave.
403 Provedor ou serviço não habilitado, ou saldo de créditos / limite da chave atingido. Fale com o nosso time para recarregar os créditos, ajustar o limite da chave ou liberar o serviço.
404 Endpoint, modelo ou tarefa não disponível. Use um dos endpoints e modelos listados. Tarefas só podem ser consultadas pela empresa que as criou.
409 Modelo ainda não liberado para chaves com limite. Escolha outro modelo ou fale com o nosso time.
413 Requisição acima de 32 MB. Reduza o conteúdo enviado.
429 Muitas chamadas simultâneas. Os SDKs tentam de novo sozinhos. Aguarde alguns segundos.
503 Indisponibilidade temporária. Tente novamente. O cabeçalho Retry-After indica quando.
import openai

try:
    resposta = client.chat.completions.create(...)
except openai.AuthenticationError:
    print("Confira a chave CentopeIA configurada.")
except openai.PermissionDeniedError as erro:
    print(erro.message)  # ex.: saldo de créditos ou limite da chave atingido
except openai.RateLimitError:
    print("Muitas chamadas ao mesmo tempo. Tente de novo em instantes.")
Segurança

Boas práticas

Uma chave por aplicação

Se uma precisar sair de uso, só ela é revogada. As outras seguem funcionando.

Chave só no servidor

Nunca coloque a chave no navegador ou em apps mobile. Chame a API a partir do seu backend.

Variáveis de ambiente

Guarde a chave em variáveis ou em um gerenciador de segredos, fora do repositório.

Limite de saída sempre

Definir o máximo de tokens deixa o custo previsível e as respostas mais rápidas.

Guarde o resultado

Imagens, vídeos, áudios e modelos 3D expiram. Baixe o arquivo assim que a tarefa terminar.

Ainda não tem uma chave?

Entre na lista de espera. Nosso time cadastra a sua empresa e entrega as chaves.

Catálogo atualizado

Modelos publicados, parâmetros e exemplos compartilham a mesma revisão. Seu painel mostra os modelos habilitados para sua empresa.

Um catálogo. Uma chave. Saldo em reais.

O saldo permanece em reais. O preço é fixado no início de cada chamada.

0 de 0 modelos

Saldo e conversão

Recargas permanecem em reais. Novas chamadas usam a referência USDT/BRL e o preço vigentes na admissão. A cotação fica preservada até a conclusão, inclusive em tarefas demoradas. Consulte o extrato no painel.