Build

Construa com a API da 3M

Chat, geração de imagem, vídeo, objeto 3D e sites completos -- tudo por uma API HTTP simples, autenticada por chave de projeto.

Quickstart

Da conta à primeira chamada

passo 1Crie sua conta

Entre com email, Google ou Apple em auth.3mm.com.br.

passo 2Gere uma chave de projeto

Em Chaves, crie uma credencial com account_id, site_id e project_key próprios.

passo 3Faça a primeira chamada

Envie os 3 headers de autenticação para qualquer endpoint /api/v1/*.

Auth

Autenticação

Toda chamada pública leva três headers, obtidos ao criar uma credencial em platform.3mm.com.br/chaves.

x-3m-account-idIdentifica a conta dona do projeto.
x-3m-site-idIdentifica o projeto/site específico.
x-3m-project-keyA chave secreta do projeto -- nunca exponha no client.
Reference

Endpoints

POST/api/v1/chat

Chat geral com continuidade de sessão. Use sessionId/previousResponseId para manter contexto entre chamadas.

prompt (obrigatório)string -- Texto enviado ao assistente.
sessionIdstring -- Identificador da conversa, para manter o contexto entre chamadas.
previousResponseIdstring -- ID da resposta anterior, alternativa ao sessionId.
useKnowledgeboolean -- Se a 3M pode usar a base de conhecimento da conta na resposta.
request
{
  "prompt": "Resuma os pontos principais do meu plano de lançamento.",
  "sessionId": "sess_8f2a1c",
  "useKnowledge": true
}
response
{
  "id": "sess_8f2a1c",
  "message": "Aqui está o resumo...",
  "previousResponseId": "resp_91a2",
  "provider": "3m-chat"
}
POST/api/v1/image

Geração de imagem a partir de prompt, com opção de imagem de referência e proporção.

prompt (obrigatório)string -- Descrição da imagem desejada.
referenceImageUrlstring -- URL de uma imagem para usar como referência visual.
imageProviderstring -- Provedor de geração (deixe em branco para o padrão da conta).
imageAspectRatiostring -- Proporção do resultado: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9 ou 21:9.
request
{
  "prompt": "Banner promocional para uma loja de café artesanal, tons quentes.",
  "imageAspectRatio": "16:9"
}
response
{
  "id": "pred_5a91",
  "output": ["https://cdn.3mm.com.br/generated/5a91.png"],
  "predictionIds": ["pred_5a91"],
  "provider": "replicate:nano-banana",
  "status": "succeeded"
}
POST/api/v1/video

Geração de vídeo curto a partir de um prompt de texto.

prompt (obrigatório)string -- Descrição do vídeo desejado.
request
{
  "prompt": "Vídeo curto mostrando um produto girando em fundo neutro, 5 segundos."
}
response
{
  "id": "pred_c02e",
  "output": ["https://cdn.3mm.com.br/generated/c02e.mp4"],
  "predictionIds": ["pred_c02e"],
  "provider": "replicate:kling",
  "status": "processing"
}
POST/api/v1/object-3d

Geração de objeto 3D a partir de prompt e, opcionalmente, uma imagem de referência.

prompt (obrigatório)string -- Descrição do objeto desejado.
referenceImageUrlstring -- URL de uma imagem para usar como referência visual.
request
{
  "prompt": "Vaso de cerâmica minimalista para renderização em e-commerce.",
  "referenceImageUrl": "https://meusite.com/referencia.png"
}
response
{
  "id": "pred_11fa",
  "output": ["https://cdn.3mm.com.br/generated/11fa.glb"],
  "predictionIds": ["pred_11fa"],
  "provider": "replicate:object-3d",
  "status": "succeeded"
}
POST/api/v1/site

Geração de um pacote de site completo: seções, copy, código e preview.

prompt (obrigatório)string -- Descrição do site desejado (público, seções, tom).
request
{
  "prompt": "Site institucional para uma clínica odontológica, visual clean."
}
response
{
  "id": "site_77ab",
  "output": ["https://cdn.3mm.com.br/generated/site-77ab.zip"],
  "predictionIds": ["site_77ab"],
  "provider": "3m-site",
  "status": "succeeded"
}
Examples

Exemplos de código

curl
curl -X POST "https://www.3mm.com.br/api/v1/chat" \
  -H "Content-Type: application/json" \
  -H "x-3m-account-id: $THREEM_ACCOUNT_ID" \
  -H "x-3m-site-id: $THREEM_SITE_ID" \
  -H "x-3m-project-key: $THREEM_PROJECT_KEY" \
  -d '{"prompt":"Diga oi em uma frase."}'
javascript
const response = await fetch("https://www.3mm.com.br/api/v1/chat", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-3m-account-id": process.env.THREEM_ACCOUNT_ID,
    "x-3m-site-id": process.env.THREEM_SITE_ID,
    "x-3m-project-key": process.env.THREEM_PROJECT_KEY,
  },
  body: JSON.stringify({ prompt: "Diga oi em uma frase." }),
});

const data = await response.json();
console.log(data.message);
python
import os
import requests

response = requests.post(
    "https://www.3mm.com.br/api/v1/chat",
    headers={
        "Content-Type": "application/json",
        "x-3m-account-id": os.environ["THREEM_ACCOUNT_ID"],
        "x-3m-site-id": os.environ["THREEM_SITE_ID"],
        "x-3m-project-key": os.environ["THREEM_PROJECT_KEY"],
    },
    json={"prompt": "Diga oi em uma frase."},
)

print(response.json()["message"])
Errors

Códigos de erro

400Corpo da requisição ausente, prompt vazio ou parâmetro inválido.
401Credenciais de projeto ausentes ou inválidas (x-3m-account-id / x-3m-site-id / x-3m-project-key).
403Origem não autorizada para este projeto -- adicione o domínio em allowedOrigins na chave.
402Conta sem créditos suficientes para completar a chamada.
429Muitas chamadas em pouco tempo para a conta ou projeto.
500Falha inesperada ao processar a geração -- tente novamente.
Limites

Uso e créditos

Não há um limite fixo de requisições por minuto publicado -- o consumo é descontado em créditos por chamada, de acordo com o plano da conta. Acompanhe o saldo em tempo real em Billing e o tráfego por rota em Uso.

Server-side

Validando chamadas no seu backend

Se você expõe suas próprias rotas para outros consumidores, valide a credencial de projeto assim:

import {
  unauthorizedProjectApiClientResponse,
  verifyProjectApiClientRequest,
} from "@/lib/project-api-client-auth";

export async function POST(request: Request) {
  const auth = await verifyProjectApiClientRequest(request);

  if (!auth.ok) {
    return unauthorizedProjectApiClientResponse(auth.reason);
  }

  return Response.json({ ok: true, project: auth.client.label });
}
Guias completos

Para tutoriais, integrações e dúvidas frequentes, veja a documentação completa em docs.3mm.com.br.