> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# v2 Usage Examples

> Code examples and common use cases for the Enterprise API

This page provides code examples for common v2 Enterprise API use cases.

## Quick Examples

<AccordionGroup>
  <Accordion title="List Enterprise Members">
    ```python theme={null}
    import os
    import requests

    API_KEY = os.getenv("DEVIN_API_KEY")
    BASE_URL = "https://api.devin.ai/v2/enterprise"

    response = requests.get(
        f"{BASE_URL}/members",
        headers={"Authorization": f"Bearer {API_KEY}"}
    )

    data = response.json()
    for member in data["items"]:
        print(f"{member['email']} - {member['enterprise_role']}")
    ```
  </Accordion>

  <Accordion title="Create an Organization">
    ```python theme={null}
    import os
    import requests

    API_KEY = os.getenv("DEVIN_API_KEY")
    BASE_URL = "https://api.devin.ai/v2/enterprise"

    response = requests.post(
        f"{BASE_URL}/organizations",
        headers={
            "Authorization": f"Bearer {API_KEY}",
            "Content-Type": "application/json"
        },
        json={
            "display_name": "Engineering Team",
            "acu_limit": 1000
        }
    )

    org = response.json()
    print(f"Created organization: {org['org_id']}")
    ```
  </Accordion>

  <Accordion title="Get Consumption Metrics">
    ```python theme={null}
    import os
    import requests

    API_KEY = os.getenv("DEVIN_API_KEY")
    BASE_URL = "https://api.devin.ai/v2/enterprise"

    response = requests.get(
        f"{BASE_URL}/consumption/cycles",
        headers={"Authorization": f"Bearer {API_KEY}"}
    )

    cycles = response.json()
    for cycle in cycles:
        print(f"Cycle: {cycle['start']} to {cycle['end']}")
    ```
  </Accordion>

  <Accordion title="Get Session Insights">
    ```python theme={null}
    import os
    import requests

    API_KEY = os.getenv("DEVIN_API_KEY")
    BASE_URL = "https://api.devin.ai/v2/enterprise"

    response = requests.get(
        f"{BASE_URL}/sessions/insights",
        headers={"Authorization": f"Bearer {API_KEY}"},
        params={"limit": 50, "skip": 0}
    )

    data = response.json()
    for session in data["items"]:
        print(f"Session {session['session_id']}: {session['session_analysis']}")
    ```
  </Accordion>

  <Accordion title="Invite Members to Enterprise">
    ```python theme={null}
    import os
    import requests

    API_KEY = os.getenv("DEVIN_API_KEY")
    BASE_URL = "https://api.devin.ai/v2/enterprise"

    response = requests.post(
        f"{BASE_URL}/members/invite",
        headers={
            "Authorization": f"Bearer {API_KEY}",
            "Content-Type": "application/json"
        },
        json={
            "emails": ["user1@company.com", "user2@company.com"]
        }
    )

    result = response.json()
    print(f"Invited {result['invited_count']} members")
    ```
  </Accordion>

  <Accordion title="Get Audit Logs">
    ```python theme={null}
    import os
    import requests
    from datetime import datetime, timedelta

    API_KEY = os.getenv("DEVIN_API_KEY")
    BASE_URL = "https://api.devin.ai/v2/enterprise"

    after = (datetime.now() - timedelta(days=7)).date().isoformat()

    response = requests.get(
        f"{BASE_URL}/audit-logs",
        headers={"Authorization": f"Bearer {API_KEY}"},
        params={"after": after, "limit": 100}
    )

    logs = response.json()
    for log in logs["audit_logs"]:
        print(f"{log['audit_log_id']}: {log.get('action')}")
    ```
  </Accordion>

  <Accordion title="Manage Organization Permissions">
    ```python theme={null}
    import os
    import requests

    API_KEY = os.getenv("DEVIN_API_KEY")
    BASE_URL = "https://api.devin.ai/v2/enterprise"
    org_id = "your_org_id"

    response = requests.post(
        f"{BASE_URL}/organizations/{org_id}/git/permissions",
        headers={
            "Authorization": f"Bearer {API_KEY}",
            "Content-Type": "application/json"
        },
        json=[
            {
                "connection_id": "your_connection_id",
                "repo_url": "https://github.com/org/repo-name"
            }
        ]
    )

    result = response.json()
    print(f"Created permissions: {result['permission_ids']}")
    ```
  </Accordion>

  <Accordion title="Error Handling">
    ```python theme={null}
    import os
    import requests

    API_KEY = os.getenv("DEVIN_API_KEY")
    BASE_URL = "https://api.devin.ai/v2/enterprise"

    try:
        response = requests.get(
            f"{BASE_URL}/members",
            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("Invalid API key")
        elif e.response.status_code == 403:
            print("Insufficient permissions - Enterprise Admin required")
        elif e.response.status_code == 429:
            print("Rate limit exceeded - wait and retry")
        else:
            print(f"API error: {e}")
    ```
  </Accordion>
</AccordionGroup>

## Support

<Card title="Need Help?">
  For questions about the API or to report issues, email [support@cognition.ai](mailto:support@cognition.ai)
</Card>
