Skip to main content
Esta página ofrece ejemplos de código para casos de uso comunes de la API v1.

Ejemplos rápidos

import os
import requests
import time

DEVIN_API_KEY = os.getenv("DEVIN_API_KEY")

# Crear una nueva sesión
response = requests.post(
    "https://api.devin.ai/v1/sessions",
    headers={"Authorization": f"Bearer {DEVIN_API_KEY}"},
    json={
        "prompt": "Revisar el PR #249",
        "idempotent": True
    }
)

print("Respuesta:\n"+ str(response.json()))
session_id = response.json()["session_id"]

# Supervisar el estado de la sesión
while True:
    status = requests.get(
        f"https://api.devin.ai/v1/sessions/{session_id}",
        headers={"Authorization": f"Bearer {DEVIN_API_KEY}"}
    ).json()
    print("Estado:\n" + str(status))
    if status["status_enum"] in ["blocked", "finished"]:
        break
    time.sleep(5)
import os
import requests

DEVIN_API_KEY = os.getenv("DEVIN_API_KEY")

# Upload a file
with open("data.csv", "rb") as f:
    response = requests.post(
        "https://api.devin.ai/v1/attachments",
        headers={"Authorization": f"Bearer {DEVIN_API_KEY}"},
        files={"file": f}
    )
file_url = response.text

# Create a session to process the file
response = requests.post(
    "https://api.devin.ai/v1/sessions",
    headers={"Authorization": f"Bearer {DEVIN_API_KEY}"},
    json={
        "prompt": f"Analiza los datos del archivo adjunto.\n\nATTACHMENT:\"{file_url}\""
    }
)

print(str(response.json()))
import os
import requests

DEVIN_API_KEY = os.getenv("DEVIN_API_KEY")

# Send a message to an active session
requests.post(
    f"https://api.devin.ai/v1/sessions/{session_id}/message",
    headers={"Authorization": f"Bearer {DEVIN_API_KEY}"},
    json={
        "message": "Asegúrate de escribir pruebas unitarias cuando hayas terminado."
    }
)
Los secretos de sesión te permiten proporcionar credenciales temporales o API keys que solo están disponibles durante una única sesión y no se almacenan como secretos de tu organización.
import os
import requests

DEVIN_API_KEY = os.getenv("DEVIN_API_KEY")

# Crear una sesión con secretos específicos de la sesión
response = requests.post(
    "https://api.devin.ai/v1/sessions",
    headers={"Authorization": f"Bearer {DEVIN_API_KEY}"},
    json={
        "prompt": "Despliega la aplicación en el entorno de staging",
        "session_secrets": [
            {
                "key": "DEPLOY_API_KEY",
                "value": "your-temporary-deploy-key",
                "sensitive": True
            },
            {
                "key": "STAGING_URL",
                "value": "https://staging.example.com",
                "sensitive": False
            }
        ]
    }
)

print(response.json())
Notas:
  • Las claves secretas deben seguir las convenciones de nomenclatura de variables de entorno (comenzar con una letra o guion bajo, seguido de letras, números o guiones bajos)
  • El campo sensitive toma el valor true de forma predeterminada si no se especifica
  • Los secretos de sesión solo están disponibles en la sesión en la que se crean y no se almacenan entre los secretos de la organización
A continuación se muestra un ejemplo completo que demuestra cómo usar la API de Devin para analizar repositorios de GitHub. Este ejemplo muestra:
  • Autenticación y manejo de errores
  • Creación y supervisión de sesiones
  • Procesamiento de resultados estructurados
  • Gestión adecuada de recursos con async/await
import os
import aiohttp
import asyncio
from typing import List, Dict

API_KEY = os.getenv("DEVIN_API_KEY")
API_BASE = "https://api.devin.ai/v1"

async def count_stars(session: aiohttp.ClientSession, repo_url: str) -> int:
    """Count stars for a GitHub repository using Devin."""
    # Create a new Devin session
    async with session.post(
        f"{API_BASE}/sessions",
        json={"prompt": f"Cuenta las estrellas del repositorio de GitHub: {repo_url}"}
    ) as response:
        session_data = await response.json()
        session_id = session_data["session_id"]
        print(f"Created session {session_id} for {repo_url}")
        print(f"URL: {session_data['url']}")

    # Poll for results with exponential backoff
    backoff = 1
    print("Polling for results...")
    while True:
        async with session.get(
            f"{API_BASE}/sessions/{session_id}"
        ) as response:
            response_json = await response.json()
            if response_json["status_enum"] in ["blocked", "finished"]:
                return response_json["structured_output"].get("star_count", 0)
        await asyncio.sleep(min(backoff, 30))
        backoff *= 2

async def main():
    """Main function to analyze GitHub repositories."""
    headers = {"Authorization": f"Bearer {API_KEY}"}
    async with aiohttp.ClientSession(headers=headers) as session:
        # Example repositories to analyze
        repos = [
            "https://github.com/openai/openai-python",
            "https://github.com/anthropics/anthropic-sdk-python"
        ]
        
        # Count stars for each repository
        for repo in repos:
            stars = await count_stars(session, repo)
            print(f"{repo}: {stars} stars")

if __name__ == "__main__":
    asyncio.run(main())

Ejemplos avanzados

Pruebas de QA automatizadas

Descubre cómo usamos Devin para realizar pruebas de control de calidad (QA) en el propio Devin. Automatiza pruebas de extremo a extremo usando las capacidades de navegador de Devin.

Revisiones automatizadas de PR

Aprende cómo integrar Devin con GitHub Actions para realizar revisiones automáticas de pull requests (PR).

Soporte

¿Necesitas ayuda?

Si tienes preguntas sobre la API o quieres reportar algún problema, envía un correo a support@cognition.ai