2026.28 Public API / SDK Changes
2 min read
Public API
Updated Endpoints
tech Sub-agents in Spaces — Create Space, Update Space, and Get Space now support configuring and retrieving sub-agents (linked assistants) on a space, so integrators can build and wire up multi-agent setups entirely through the API.
New fields:
isSubAgent(boolean, optional) — marks this space as itself a sub-agent that can be exposed as a tool to a parent space.subAgentSettings(object, optional) — tool settings used when this space is exposed as a sub-agent:icon,name,displayName,selectionPolicy,isUserInitiatedOnly,isExclusive,configuration.subAgentIds(array of strings, optional, create/update only) — full replacement list of sub-agent assistant IDs linked to this parent space. Passing[]removes all sub-agents; omitting the field leaves existing links unchanged. Linked sub-agents that are hidden from the caller (no Use access) are preserved and not affected by the replacement.subAgents(array, read-only, returned on the space object) — each entry hasid,name,title,subtitle,explanation,isSubAgent, and asettingsOverrideobject holding the per-linkage settings.
Example
Create Space
curl --location 'https://api.uat1.unique.app/public/space' \
--header 'x-user-id: <user-id>' \
--header 'x-company-id: <company-id>' \
--header 'Authorization: Bearer <api-key>' \
--header 'x-app-id: <app-id>' \
--header 'x-api-version: 2026-03-01' \
--header 'Content-Type: application/json' \
--data '{
"name": "Customer Support Assistant",
"fallbackModule": "UniqueAi",
"modules": [{ "name": "UniqueAi", "weight": 10000 }],
"subAgentIds": ["assistant_axillgwgd211g15vladl3brs", "assistant_bm3kpqr9x7nt2wjcf8yhe4u"]
}'Update Space
curl --location --request PATCH 'https://api.uat1.unique.app/public/space/<space-id>' \
--header 'x-user-id: <user-id>' \
--header 'x-company-id: <company-id>' \
--header 'Authorization: Bearer <api-key>' \
--header 'x-app-id: <app-id>' \
--header 'x-api-version: 2026-03-01' \
--header 'Content-Type: application/json' \
--data '{
"subAgentIds": ["assistant_axillgwgd211g15vladl3brs"]
}'tech Auto-approve Elicitation in Message — added autoApproveElicitation to prevent SDK/automation calls from hanging forever.
New field:
autoApproveElicitation(boolean, optional, defaultfalse) — whentrue, automatically approves any MCP elicitation requests (tools configured asASK_FOR_CONFIRMATIONorASK_WITH_VALUES) triggered during the assistant run, instead of waiting indefinitely for a user response that will never come. Useful for non-interactive SDK/automation callers.
curl --location 'https://api.uat1.unique.app/public/space/message' \
--header 'x-user-id: <user-id>' \
--header 'x-company-id: <company-id>' \
--header 'Authorization: Bearer <api-key>' \
--header 'x-app-id: <app-id>' \
--header 'x-api-version: 2026-03-01' \
--header 'Content-Type: application/json' \
--data '{
"assistantId": "assistant_abc123",
"text": "Run the scheduled report workflow",
"autoApproveElicitation": true
}'SDK
Updated Functions
tech Sub-agents in Spaces — unique_sdk.Space.create_space / update_space — now accept isSubAgent, subAgentSettings, and subAgentIds to mark a space as a sub-agent and/or link sub-agents to a parent space.
Example
parent_space = unique_sdk.Space.update_space(
user_id=user_id,
company_id=company_id,
space_id="assistant_parent",
subAgentIds=["assistant_hjcdga64bkcjnhu4", "assistant_l9sv3d2q8bmnxk4p"],
)tech Sub-agents in Spaces — unique_sdk.Space.get_space / get_spaces — response now includes isSubAgent, subAgentSettings, and subAgents (each with a per-linkage settingsOverride).
Example
space = unique_sdk.Space.get_space(
user_id=user_id,
company_id=company_id,
space_id="assistant_parent",
)tech Auto-approve Elicitation in Message —unique_sdk.Space.create_message / create_message_async — now accept autoApproveElicitation (bool, optional)
Example
message = unique_sdk.Space.create_message(
user_id=user_id,
company_id=company_id,
assistantId="assistant_abc123",
text="Run the scheduled report workflow",
autoApproveElicitation=True,
)tech Auto-approve Elicitation in Message
Example
result = await send_message_and_wait_for_completion(
user_id=user_id,
company_id=company_id,
assistant_id="assistant_abc123",
text="Run the scheduled report workflow",
auto_approve_elicitation=True,
)