> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.governanceaicore.com/code-examples/python/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.governanceaicore.com/_mcp/server. # Python Examples > Python code examples for GovernanceAI API # Python Examples Integrate GovernanceAI with Python applications. ## Installation ```bash pip install requests python-dotenv ``` ## Basic Setup ```python import requests import os from dotenv import load_dotenv load_dotenv() API_KEY = os.getenv('GOVERNANCEAI_API_KEY') ORG_ID = os.getenv('GOVERNANCEAI_ORG_ID') BASE_URL = 'https://api.governanceai.com/v1' headers = { 'Authorization': f'Bearer {API_KEY}', 'Content-Type': 'application/json' } ``` ## Evaluate Guardrails ```python def evaluate_guardrails(user_message, user_id): """Evaluate a message against guardrails""" payload = { "messages": [ {"role": "user", "content": user_message} ], "context": { "org_id": ORG_ID, "user_id": user_id } } response = requests.post( f'{BASE_URL}/guardrails/evaluate', headers=headers, json=payload ) if response.status_code == 200: result = response.json() return { 'decision': result['decision'], 'risk_score': result.get('risk_score', 0), 'violations': result.get('policy_violations', []) } else: raise Exception(f"API error: {response.status_code}") # Usage result = evaluate_guardrails("My credit card is 4532-1111-2222-3333", "user_123") print(f"Decision: {result['decision']}") print(f"Risk Score: {result['risk_score']}") ``` ## Create Policy ```python def create_policy(policy_name, guardrail_ids): """Create a new policy""" payload = { "name": policy_name, "guardrail_ids": guardrail_ids, "scope": "organization", "enforcement": { "mode": "blocking", "log_violations": True } } response = requests.post( f'{BASE_URL}/policies', headers=headers, json=payload ) return response.json() # Usage policy = create_policy( "Production Safety", ["guardrail_pii", "guardrail_toxic"] ) print(f"Policy created: {policy['policy_id']}") ``` ## Run Scan ```python def run_scan(scan_type, repositories): """Run a code scan""" payload = { "scan_type": scan_type, "repositories": repositories } response = requests.post( f'{BASE_URL}/scans', headers=headers, json=payload ) scan = response.json() return scan['scan_id'] # Usage scan_id = run_scan("code_scan", ["repo_1", "repo_2"]) print(f"Scan started: {scan_id}") ``` ## Error Handling ```python def make_request(method, endpoint, data=None): """Make API request with error handling""" try: if method == 'GET': response = requests.get(f'{BASE_URL}{endpoint}', headers=headers) elif method == 'POST': response = requests.post(f'{BASE_URL}{endpoint}', headers=headers, json=data) if response.status_code == 401: raise ValueError("Invalid API key") elif response.status_code == 403: raise PermissionError("Insufficient permissions") elif response.status_code >= 500: raise RuntimeError("Server error") return response.json() except requests.RequestException as e: print(f"Network error: {e}") return None ``` ## Next Steps * **[Node.js Examples](/code-examples/node-js)** - JavaScript code * **[API Patterns](/code-examples/api-patterns)** - Common patterns * **[Quick Start](../05-quick-start.mdx)** - First API call > Python code examples for GovernanceAI API