Skip to main content

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)