Python Integration
Complete examples for integrating PrompTick agents in Python applications.
Installation
pip install requests
Basic Example
import requests
import os
import time
from typing import Dict, Any
PROMPTICK_API_KEY = os.getenv('PROMPTICK_API_KEY')
AGENT_ID = 'agent_abc123'
BASE_URL = 'https://api.promptick.ai/api/v1'
def execute_agent(variables: Dict[str, str]) -> str:
"""Execute agent and wait for result. Returns the generated output string."""
# Kick off execution (returns 202 Accepted immediately)
response = requests.post(
f'{BASE_URL}/agents/{AGENT_ID}/execute',
headers={
'Authorization': f'Bearer {PROMPTICK_API_KEY}',
'Content-Type': 'application/json',
},
json={'variables': variables},
)
response.raise_for_status()
execution_id = response.json()['executionId']
print(f'Execution started: {execution_id}')
# Poll for result
return poll_for_result(AGENT_ID, execution_id)
def poll_for_result(agent_id: str, execution_id: str, max_attempts: int = 30) -> str:
"""Poll execution status until completed. Returns the output string."""
for _ in range(max_attempts):
response = requests.get(
f'{BASE_URL}/agents/{agent_id}/executions/{execution_id}',
headers={'Authorization': f'Bearer {PROMPTICK_API_KEY}'},
)
response.raise_for_status()
data = response.json()
if data['status'] == 'completed':
return data['output']
if data['status'] == 'failed':
raise Exception(data.get('error', 'Execution failed'))
# status == 'processing' — wait and retry
time.sleep(2)
raise TimeoutError('Execution timeout')
# Usage
if __name__ == '__main__':
output = execute_agent({
'product_name': 'Smart Watch Pro',
'target_audience': 'fitness enthusiasts',
})
print('Output:', output)
With Retry Logic
import time
from requests.exceptions import HTTPError
def execute_with_retry(variables: Dict[str, str], max_retries: int = 3) -> str:
"""Execute with exponential backoff retry on rate limits."""
for i in range(max_retries):
try:
return execute_agent(variables)
except HTTPError as e:
if e.response.status_code == 429:
delay = 2 ** i
print(f'Rate limited. Retrying in {delay}s...')
time.sleep(delay)
continue
raise
raise Exception('Max retries exceeded')
Flask Integration
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/generate-description', methods=['POST'])
def generate_description():
try:
data = request.json
output = execute_agent({
'product_name': data['productName'],
'features': data['features'],
})
return jsonify({'description': output})
except Exception as e:
return jsonify({'error': str(e)}), 500
if __name__ == '__main__':
app.run(port=5000)