Exemplos de código e casos de uso comuns da Devin API
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.
Configure estas variáveis de ambiente antes de executar qualquer exemplo:
Copiar
Perguntar à IA
# 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.
# Usa timestamps Unix — por exemplo: de 1º a 31 de jan de 2025curl "https://api.devin.ai/v3/enterprise/consumption/daily?time_after=1735689600&time_before=1738368000" \ -H "Authorization: Bearer $DEVIN_API_KEY"
import osimport timeimport requestsAPI_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)
Fluxo de trabalho com várias organizações (Enterprise)
Automatize em múltiplas organizações:
Copiar
Perguntar à IA
import osimport requestsAPI_KEY = os.environ["DEVIN_API_KEY"]BASE_URL = "https://api.devin.ai/v3"# Obter todas as organizaçõesorgs_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çãofor 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}")
Recuperação paginada de log de auditoria (Enterprise)
Copiar
Perguntar à IA
import osimport requestsfrom datetime import datetime, timedelta, timezoneAPI_KEY = os.environ["DEVIN_API_KEY"]BASE_URL = "https://api.devin.ai/v3"# Últimos 7 dias como timestamps Unixnow = 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})")
Tratamento de erros
Copiar
Perguntar à IA
import osimport requestsAPI_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}")