Pular para o conteúdo principal
Esta página apresenta exemplos de código para casos de uso comuns da API. Todos os exemplos usam variáveis de ambiente para armazenar credenciais — defina-as uma vez e todos os exemplos estarão prontos para copiar e colar. Para ver os esquemas completos de requisição e resposta, consulte a página de referência de API de cada endpoint.

Configuração

Configure estas variáveis de ambiente antes de executar qualquer exemplo:
# Obrigatório: sua Chave de API do usuário de serviço (começa com cog_)
export DEVIN_API_KEY="cog_your_key_here"

# Obrigatório: seu ID de organização (encontre-o em Configurações → Usuários de Serviço)
export DEVIN_ORG_ID="your_org_id"
Encontre o ID da sua organização na página Configurações → Usuários de serviço.

Exemplos de curl

Esses exemplos funcionam diretamente no terminal após definir as variáveis de ambiente acima.
curl -X POST "https://api.devin.ai/v3/organizations/$DEVIN_ORG_ID/sessions" \
  -H "Authorization: Bearer $DEVIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "Create a Python script that analyzes CSV data"}'
curl "https://api.devin.ai/v3/organizations/$DEVIN_ORG_ID/sessions" \
  -H "Authorization: Bearer $DEVIN_API_KEY"
export SESSION_ID="your_session_id"

curl -X POST "https://api.devin.ai/v3/organizations/$DEVIN_ORG_ID/sessions/$SESSION_ID/messages" \
  -H "Authorization: Bearer $DEVIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message": "Please also add unit tests"}'
curl -X POST "https://api.devin.ai/v3/organizations/$DEVIN_ORG_ID/knowledge/notes" \
  -H "Authorization: Bearer $DEVIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Coding standards",
    "trigger_description": "When writing code in this repo",
    "body": "Use TypeScript strict mode. Follow the existing code style."
  }'
curl "https://api.devin.ai/v3/enterprise/organizations" \
  -H "Authorization: Bearer $DEVIN_API_KEY"
# Usa timestamps Unix — por exemplo: de 1º a 31 de jan de 2025
curl "https://api.devin.ai/v3/enterprise/consumption/daily?time_after=1735689600&time_before=1738368000" \
  -H "Authorization: Bearer $DEVIN_API_KEY"

Exemplos em Python

import os
import requests

API_KEY = os.environ["DEVIN_API_KEY"]
ORG_ID = os.environ["DEVIN_ORG_ID"]
BASE_URL = "https://api.devin.ai/v3"

response = requests.post(
    f"{BASE_URL}/organizations/{ORG_ID}/sessions",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    },
    json={
        "prompt": "Create a Python script that analyzes CSV data"
    }
)
response.raise_for_status()

session = response.json()
print(f"Session created: {session['session_id']}")
print(f"URL: {session['url']}")
import os
import time
import requests

API_KEY = os.environ["DEVIN_API_KEY"]
ORG_ID = os.environ["DEVIN_ORG_ID"]
BASE_URL = "https://api.devin.ai/v3"
SESSION_ID = os.environ.get("SESSION_ID", "your_session_id")

while True:
    response = requests.get(
        f"{BASE_URL}/organizations/{ORG_ID}/sessions/{SESSION_ID}",
        headers={"Authorization": f"Bearer {API_KEY}"}
    )
    response.raise_for_status()
    session = response.json()

    status = session["status"]
    print(f"Status: {status}")

    # Status terminais: "exit" (concluído), "error", "suspended"
    if status in ("exit", "error", "suspended"):
        break

    time.sleep(10)
Automatize em múltiplas organizações:
import os
import requests

API_KEY = os.environ["DEVIN_API_KEY"]
BASE_URL = "https://api.devin.ai/v3"

# Obter todas as organizações
orgs_response = requests.get(
    f"{BASE_URL}/enterprise/organizations",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
orgs_response.raise_for_status()
organizations = orgs_response.json()["items"]

# Criar uma sessão em cada organização
for org in organizations:
    session_response = requests.post(
        f"{BASE_URL}/organizations/{org['org_id']}/sessions",
        headers={
            "Authorization": f"Bearer {API_KEY}",
            "Content-Type": "application/json"
        },
        json={
            "prompt": f"Run daily health check for {org['name']}"
        }
    )

    if session_response.ok:
        session = session_response.json()
        print(f"Created session for {org['name']}: {session['session_id']}")
    else:
        print(f"Failed for {org['name']}: {session_response.status_code}")
import os
import requests
from datetime import datetime, timedelta, timezone

API_KEY = os.environ["DEVIN_API_KEY"]
BASE_URL = "https://api.devin.ai/v3"

# Últimos 7 dias como timestamps Unix
now = datetime.now(timezone.utc)
seven_days_ago = now - timedelta(days=7)

params = {
    "time_after": int(seven_days_ago.timestamp()),
    "time_before": int(now.timestamp()),
    "first": 100,
}

all_logs = []
while True:
    response = requests.get(
        f"{BASE_URL}/enterprise/audit-logs",
        headers={"Authorization": f"Bearer {API_KEY}"},
        params=params,
    )
    response.raise_for_status()
    data = response.json()

    all_logs.extend(data["items"])
    print(f"Fetched {len(data['items'])} logs (total: {len(all_logs)})")

    if not data.get("has_next_page"):
        break
    params["after"] = data["end_cursor"]

for log in all_logs:
    ts = datetime.fromtimestamp(log["created_at"], tz=timezone.utc).isoformat()
    actor = log.get("service_user_id") or log.get("user_id") or "system"
    print(f"{ts} - {log['action']} (actor={actor})")
import os
import requests

API_KEY = os.environ["DEVIN_API_KEY"]
ORG_ID = os.environ["DEVIN_ORG_ID"]
BASE_URL = "https://api.devin.ai/v3"

try:
    response = requests.get(
        f"{BASE_URL}/organizations/{ORG_ID}/sessions",
        headers={"Authorization": f"Bearer {API_KEY}"}
    )
    response.raise_for_status()
    data = response.json()
except requests.exceptions.HTTPError as e:
    if e.response.status_code == 401:
        print("Chave de API inválida ou expirada")
    elif e.response.status_code == 403:
        print("Usuário de serviço não possui a permissão necessária")
    elif e.response.status_code == 429:
        print("Limite de taxa excedido — aguarde e tente novamente")
    else:
        print(f"Erro de API: {e.response.status_code} {e.response.text}")

Suporte

Precisa de ajuda?

Para dúvidas sobre a API ou para relatar problemas, envie um e-mail para support@cognition.ai