Connecting Multiple APIs
Real agent workflows often require data from multiple APIs. The agent orchestrates these APIs in sequence, using results from one API as inputs to the next.
8 min•By Priygop Team•Updated 2026
Multi-API Orchestration Example
Multi-API Orchestration Example
# Agent orchestrating 3 APIs: CRM, Orders, and Email
# Goal: Find all overdue orders for a customer and send a summary email
def run_overdue_orders_agent(customer_id: str):
"""
Step 1: Get customer contact details from CRM API
Step 2: Get their orders from the Orders API
Step 3: Filter for overdue orders
Step 4: Send a summary email via the Email API
"""
# Simulated API tools
def crm_get_customer(customer_id):
return {"status": "success",
"name": "Alice Johnson",
"email": "alice@example.com"}
def orders_list(customer_id, status="overdue"):
return {"status": "success", "count": 2, "orders": [
{"id": "ORD-100", "total": 199.99, "due": "2024-01-10"},
{"id": "ORD-104", "total": 49.00, "due": "2024-01-12"},
]}
def email_send(to, subject, body):
print(f"[EMAIL] To: {to} | Subject: {subject}")
return {"status": "success", "sent_to": to}
# Step 1
customer = crm_get_customer(customer_id)
if customer["status"] != "success":
return {"status": "error", "step": "crm", "error": customer["error"]}
# Step 2
orders = orders_list(customer_id)
if orders["status"] != "success" or orders["count"] == 0:
return {"status": "complete", "message": "No overdue orders found"}
# Step 3 - build summary
summary = "\n".join([
f" - {o['id']}: $" + str(o['total']) + f" (due {o['due']})"
for o in orders["orders"]
])
# Step 4 - send email
result = email_send(
to=customer["email"],
subject=f"Overdue Orders - {orders['count']} items",
body=f"Hello {customer['name']},\n\nYour overdue orders:\n{summary}"
)
return {"status": "complete", "customer": customer["email"],
"orders_notified": orders["count"]}
outcome = run_overdue_orders_agent("C789")
print(outcome)