Migration Guides
Step-by-step guides for migrating between isA API versions.
API Versioning Strategy
isA uses path-based versioning (/api/v1/, /api/v2/). When breaking changes are introduced:
- The old version continues to work for a deprecation period (minimum 6 months)
- Migration guides are published here
- The changelog notes the deprecation timeline
Chat API: Legacy Format to Structured Format
What Changed
The inference endpoint now supports tools, response_format, and stream as first-class parameters instead of embedding them in input_data.
Before (Legacy)
import requests
response = requests.post("https://api.isagent.io/api/v1/invoke", json={
"input_data": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello"},
],
"task": "chat",
"service_type": "text",
"model": "gpt-4o",
"provider": "openai",
"stream": False,
"temperature": 0.7,
"max_tokens": 4096,
})After (New Format)
import requests
response = requests.post("https://api.isagent.io/api/v1/chat/completions", json={
"model": "gpt-4o",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello"},
],
"temperature": 0.7,
"max_tokens": 4096,
"tools": [
{"type": "web_search", "web_search": {"max_results": 5}}
],
"response_format": {
"type": "json_schema",
"json_schema": {"name": "response", "schema": {"type": "object"}}
},
})Migration Steps
- Change endpoint from
/api/v1/invoketo/api/v1/chat/completions - Rename
input_datatomessages - Remove
task,service_type,provider(auto-detected from model ID) - Add
toolsarray for built-in tools (web_search, file_search) - Use
response_formatfor structured outputs instead ofresponseFormat: "json"
Compatibility
The unified /api/v1/invoke endpoint remains supported and is the preferred endpoint when you need isA-specific routing fields such as provider, service_type, or task.
Agent Config: v1 to v2
What Changed
Agent configurations gained execution_profiles for A2A deployment and routing_hints for dynamic routing.
Before
{
"name": "support-bot",
"model": "gpt-4o",
"system_prompt": "You are a support agent.",
"mode": "REACTIVE",
"tools": ["search_kb", "create_ticket"]
}After
{
"name": "support-bot",
"model": "gpt-4o",
"system_prompt": "You are a support agent.",
"mode": "REACTIVE",
"tools": ["search_kb", "create_ticket"],
"execution_profiles": {
"default": {
"environment": "cloud_pool",
"max_turns": 10,
"timeout_seconds": 300
}
},
"routing_hints": {
"domains": ["support", "billing"],
"priority": 1
}
}Migration Steps
- Add
execution_profiles.defaultwith your preferred environment - Optionally add
routing_hintsfor multi-agent routing - Existing configs without these fields continue to work with defaults
Authentication: Token Format Update
What Changed
API keys now use the isa_ prefix for identification. Existing keys without the prefix continue to work.
Before
curl -H "Authorization: Bearer sk_abc123..." https://api.isagent.io/api/v1/modelsAfter
curl -H "Authorization: Bearer isa_abc123..." https://api.isagent.io/api/v1/modelsMigration Steps
- Generate new API keys in the Console (they auto-get the
isa_prefix) - Update your environment variables with the new key
- Old keys continue to work — no hard cutoff
MCP: Direct REST Calls to the Agent SDK Transport
What Changed
The supported hosted Agent SDK path uses the MCP streamable-HTTP transport at
POST /mcp. Configure the base URL and let the SDK construct the transport
path. Do not derive or publish versioned REST routes for api.isagent.io.
Supported Agent SDK Path
export ISA_MCP_URL=https://api.isagent.io
export ISA_MCP_API_KEY='isa_...'from isa_agent_sdk import execute_tool
result = await execute_tool(
tool_name="web_search",
tool_args={"query": "isA platform"},
)
if result.tool_error:
raise RuntimeError(result.tool_error)
print(result.tool_result_value)The SDK removes a trailing /mcp from ISA_MCP_URL when necessary and sends
the protocol request to POST /mcp. ISA_MCP_API_KEY is attached only to the
active request. MCP_SERVER_URL remains a legacy, lower-priority alias. For
identity-scoped tools, pass only the verified principal through
execute_tool(user_id=...).
Migration Steps
- Upgrade
isa-agent-sdkto a release containing the hosted MCP fixes. - Configure the hosted base URL and a scoped MCP key through the environment.
- Replace hand-built hosted MCP URLs with
execute_tool()calls. - Check
result.tool_errorand retaintool_result_valuefor diagnostics.
SDK Updates
Python SDK
# Check current version
pip show isa-agent-sdk
# Upgrade to latest
pip install --upgrade isa-agent-sdkTypeScript SDK
# Check current version
npm list @isa/core
# Upgrade to latest
npm install @isa/core@latestBreaking Changes by Version
| SDK Version | Change | Migration |
|---|---|---|
| 2.0.0 | query() renamed to chat() | Find/replace query → chat |
| 2.0.0 | ISAAgentOptions → ChatOptions | Update type imports |
| 1.5.0 | stream default changed to true | Add stream: false if you need sync |