import requests
import time
API_KEY = "your_api_key"
BASE_URL = "https://api.gumloop.com/api/v1"
HEADERS = {
"Content-Type": "application/json",
"Authorization": f"Bearer {API_KEY}"
}
def send_message(gummie_id: str, message: str, user_id: str, interaction_id: str = None) -> dict:
"""Send a message to an agent, optionally continuing an existing conversation."""
payload = {
"gummie_id": gummie_id,
"message": message,
"user_id": user_id,
}
if interaction_id:
payload["interaction_id"] = interaction_id
response = requests.post(f"{BASE_URL}/start_agent", headers=HEADERS, json=payload)
response.raise_for_status()
return response.json()
def wait_for_completion(interaction_id: str, user_id: str) -> dict:
"""Poll until the interaction completes or fails."""
while True:
response = requests.get(
f"{BASE_URL}/agent_status/{interaction_id}",
headers=HEADERS,
params={"user_id": user_id}
)
response.raise_for_status()
result = response.json()
if result["state"] == "COMPLETED":
return result
elif result["state"] == "FAILED":
raise RuntimeError(f"Agent failed: {result.get('error_message')}")
time.sleep(2)
# Turn 1: Start a new conversation
start = send_message(
gummie_id="abc123DEFghiJKL",
message="Find all open support tickets from Acme Corp",
user_id="your_user_id"
)
interaction_id = start["interaction_id"]
result = wait_for_completion(interaction_id, "your_user_id")
print(f"Turn 1: {result['response']}")
# Turn 2: Continue the conversation
send_message(
gummie_id="abc123DEFghiJKL",
message="Now draft a summary email to send to the account manager",
user_id="your_user_id",
interaction_id=interaction_id # reuse the same interaction
)
result = wait_for_completion(interaction_id, "your_user_id")
print(f"Turn 2: {result['response']}")