# 2026.28 Public API / SDK Changes

## 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 has `id`, `name`, `title`, `subtitle`, `explanation`, `isSubAgent`, and a `settingsOverride` object 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, default `false`) — when `true`, automatically approves any MCP elicitation requests (tools configured as `ASK_FOR_CONFIRMATION` or `ASK_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 Space** s — `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 Space** s — `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,
)
```
