# Other API resources

Paths on this page are relative to <code>/api/liquidity-studio/v2</code>. Authentication and required headers vary by operation.

[API reference overview](/api-reference/overview/) · [OpenAPI download](/openapi/liquidity-operating-system-v2.openapi.json)

## Operations on this page

| Method | Path | Operation |
| --- | --- | --- |
| <code>GET</code> | <code>/public/discovery/search</code> | [searchDiscoveredProjects](#searchDiscoveredProjects) |
| <code>GET</code> | <code>/public/discovery/market/{id}</code> | [getDiscoveredProjectMarket](#getDiscoveredProjectMarket) |
| <code>GET</code> | <code>/public/discovery/capabilities</code> | [getMarketDiscoveryCapabilities](#getMarketDiscoveryCapabilities) |
| <code>GET</code> | <code>/workflows/context</code> | [getWorkflowContext](#getWorkflowContext) |
| <code>GET</code> | <code>/workflows/runs</code> | [listCompletedWorkflowRuns](#listCompletedWorkflowRuns) |
| <code>GET</code> | <code>/workflows/runs/{id}</code> | [getCompletedWorkflowRun](#getCompletedWorkflowRun) |
| <code>POST</code> | <code>/workflows/run</code> | [runWorkflowResearch](#runWorkflowResearch) |
| <code>GET</code> | <code>/virtuals-projects</code> | [listSavedVirtualsProjects](#listSavedVirtualsProjects) |
| <code>POST</code> | <code>/virtuals-projects</code> | [saveVirtualsProject](#saveVirtualsProject) |
| <code>GET</code> | <code>/virtuals-projects/{id}</code> | [getSavedVirtualsProject](#getSavedVirtualsProject) |
| <code>DELETE</code> | <code>/virtuals-projects/{id}</code> | [removeSavedVirtualsProject](#removeSavedVirtualsProject) |
| <code>GET</code> | <code>/partner-consent-options</code> | [getPartnerConsentOptions](#getPartnerConsentOptions) |
| <code>GET</code> | <code>/partner-preparation-contexts/{partnerId}</code> | [getPartnerPreparationContext](#getPartnerPreparationContext) |
| <code>GET</code> | <code>/partner-preparation-receipts/{partnerId}</code> | [getPartnerPreparationReceiptRecovery](#getPartnerPreparationReceiptRecovery) |
| <code>GET</code> | <code>/partner-preparations</code> | [listPartnerPreparations](#listPartnerPreparations) |
| <code>POST</code> | <code>/partner-preparations/{eventId}/import</code> | [importPartnerPreparation](#importPartnerPreparation) |
| <code>POST</code> | <code>/partner-preparations/{eventId}/decline</code> | [declinePartnerPreparation](#declinePartnerPreparation) |
| <code>GET</code> | <code>/partner-preparation-status/{partnerId}/{eventId}</code> | [getPartnerPreparationStatus](#getPartnerPreparationStatus) |
| <code>GET</code> | <code>/partner-domain-challenges</code> | [listPartnerDomainChallenges](#listPartnerDomainChallenges) |
| <code>POST</code> | <code>/partner-domain-challenges</code> | [createPartnerDomainChallenge](#createPartnerDomainChallenge) |
| <code>GET</code> | <code>/partner-domain-challenges/{id}</code> | [getPartnerDomainChallenge](#getPartnerDomainChallenge) |
| <code>GET</code> | <code>/partner-domain-challenges/{id}/status</code> | [getPartnerDomainStatus](#getPartnerDomainStatus) |
| <code>POST</code> | <code>/partner-domain-challenges/{id}/verify</code> | [verifyPartnerDomainChallenge](#verifyPartnerDomainChallenge) |
| <code>POST</code> | <code>/partner-domain-challenges/{id}/provision</code> | [provisionPartnerDomainChallenge](#provisionPartnerDomainChallenge) |
| <code>POST</code> | <code>/partner-domain-challenges/{id}/revoke</code> | [revokePartnerDomainChallenge](#revokePartnerDomainChallenge) |

<a id="searchDiscoveredProjects"></a>

## Search supported public Virtuals project identities

`GET /public/discovery/search`

Operation ID: <code>searchDiscoveredProjects</code>

**Authentication:** No authentication is required by this operation’s contract.

Anonymous provider-reported public market evidence. No issuer ownership, finalized onchain proof, trade execution, custody or publication authority is established.

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>q</code> | query | Yes | <code>string</code> | Min length: <code>2</code>; Max length: <code>200</code> |
| <code>page</code> | query | No | <code>integer</code> | Default: <code>1</code>; Minimum: <code>1</code>; Maximum: <code>100</code> |

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Search supported public Virtuals project identities | <code>application/json</code>: <code>object</code> |
| <code>default</code> | Invalid input, access denied, source/storage failure or deadline exceeded. Workspace authentication errors may use the shared API envelope; bounded route failures expose a message. Rate-limit responses may be plain text. | <code>application/json</code>: Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>; <code>text/plain</code>: <code>string</code>; <code>text/html</code>: <code>string</code> |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [MarketDiscoverySearch](/api-reference/schemas/market-discovery-search/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>application/json</code> body**

Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>oneOf&#91;3&#93;.error</code> | Yes | [ApiError](/api-reference/schemas/api-error/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>text/plain</code> body**

<code>string</code> — Format: <code>binary</code>

**<code>default</code> <code>text/html</code> body**

<code>string</code> — Format: <code>binary</code>

<a id="getDiscoveredProjectMarket"></a>

## Read provider-reported project pools and market figures

`GET /public/discovery/market/{id}`

Operation ID: <code>getDiscoveredProjectMarket</code>

**Authentication:** No authentication is required by this operation’s contract.

Anonymous provider-reported public market evidence. No issuer ownership, finalized onchain proof, trade execution, custody or publication authority is established.

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>id</code> | path | Yes | <code>integer</code> | Minimum: <code>1</code>; Maximum: <code>9007199254740991</code> |

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Read provider-reported project pools and market figures | <code>application/json</code>: <code>object</code> |
| <code>default</code> | Invalid input, access denied, source/storage failure or deadline exceeded. Workspace authentication errors may use the shared API envelope; bounded route failures expose a message. Rate-limit responses may be plain text. | <code>application/json</code>: Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>; <code>text/plain</code>: <code>string</code>; <code>text/html</code>: <code>string</code> |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [MarketDiscoveryEvidence](/api-reference/schemas/market-discovery-evidence/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>application/json</code> body**

Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>oneOf&#91;3&#93;.error</code> | Yes | [ApiError](/api-reference/schemas/api-error/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>text/plain</code> body**

<code>string</code> — Format: <code>binary</code>

**<code>default</code> <code>text/html</code> body**

<code>string</code> — Format: <code>binary</code>

<a id="getMarketDiscoveryCapabilities"></a>

## Read configured research capability availability

`GET /public/discovery/capabilities`

Operation ID: <code>getMarketDiscoveryCapabilities</code>

**Authentication:** No authentication is required by this operation’s contract.

Anonymous provider-reported public market evidence. No issuer ownership, finalized onchain proof, trade execution, custody or publication authority is established.

This operation declares no parameters.

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Read configured research capability availability | <code>application/json</code>: <code>object</code> |
| <code>default</code> | Invalid input, access denied, source/storage failure or deadline exceeded. Workspace authentication errors may use the shared API envelope; bounded route failures expose a message. Rate-limit responses may be plain text. | <code>application/json</code>: Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>; <code>text/plain</code>: <code>string</code>; <code>text/html</code>: <code>string</code> |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [MarketDiscoveryCapabilities](/api-reference/schemas/market-discovery-capabilities/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>application/json</code> body**

Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>oneOf&#91;3&#93;.error</code> | Yes | [ApiError](/api-reference/schemas/api-error/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>text/plain</code> body**

<code>string</code> — Format: <code>binary</code>

**<code>default</code> <code>text/html</code> body**

<code>string</code> — Format: <code>binary</code>

<a id="getWorkflowContext"></a>

## List authorized vault choices and saved-research availability

`GET /workflows/context`

Operation ID: <code>getWorkflowContext</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

Requires current interactive session and workspace membership; service credentials are not accepted unless an explicit service scope is declared. Research and directory bookmarks grant no signing, custody or execution authority.

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | Min length: <code>1</code>; Max length: <code>160</code> |

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | List authorized vault choices and saved-research availability | <code>application/json</code>: <code>object</code> |
| <code>default</code> | Invalid input, access denied, source/storage failure or deadline exceeded. Workspace authentication errors may use the shared API envelope; bounded route failures expose a message. Rate-limit responses may be plain text. | <code>application/json</code>: Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>; <code>text/plain</code>: <code>string</code>; <code>text/html</code>: <code>string</code> |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [WorkflowContext](/api-reference/schemas/workflow-context/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>application/json</code> body**

Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>oneOf&#91;3&#93;.error</code> | Yes | [ApiError](/api-reference/schemas/api-error/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>text/plain</code> body**

<code>string</code> — Format: <code>binary</code>

**<code>default</code> <code>text/html</code> body**

<code>string</code> — Format: <code>binary</code>

<a id="listCompletedWorkflowRuns"></a>

## List completed research saved for the current workspace and reader

`GET /workflows/runs`

Operation ID: <code>listCompletedWorkflowRuns</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

Requires current interactive session and workspace membership; service credentials are not accepted unless an explicit service scope is declared. Research and directory bookmarks grant no signing, custody or execution authority.

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | Min length: <code>1</code>; Max length: <code>160</code> |
| <code>cursor</code> | query | No | <code>string</code> | Pattern: <code>^&#91;A-Za-z0-9&#95;-&#93;+$</code>; Max length: <code>1024</code> |
| <code>limit</code> | query | No | <code>integer</code> | Default: <code>20</code>; Minimum: <code>1</code>; Maximum: <code>20</code> |

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | List completed research saved for the current workspace and reader | <code>application/json</code>: <code>object</code> |
| <code>default</code> | Invalid input, access denied, source/storage failure or deadline exceeded. Workspace authentication errors may use the shared API envelope; bounded route failures expose a message. Rate-limit responses may be plain text. | <code>application/json</code>: Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>; <code>text/plain</code>: <code>string</code>; <code>text/html</code>: <code>string</code> |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [CompletedWorkflowPage](/api-reference/schemas/completed-workflow-page/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>application/json</code> body**

Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>oneOf&#91;3&#93;.error</code> | Yes | [ApiError](/api-reference/schemas/api-error/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>text/plain</code> body**

<code>string</code> — Format: <code>binary</code>

**<code>default</code> <code>text/html</code> body**

<code>string</code> — Format: <code>binary</code>

<a id="getCompletedWorkflowRun"></a>

## Read one immutable research result saved for the current reader

`GET /workflows/runs/{id}`

Operation ID: <code>getCompletedWorkflowRun</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

Requires current interactive session and workspace membership; service credentials are not accepted unless an explicit service scope is declared. Research and directory bookmarks grant no signing, custody or execution authority.

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | Min length: <code>1</code>; Max length: <code>160</code> |
| <code>id</code> | path | Yes | <code>string</code> | Pattern: <code>^&#91;0-9a-f&#93;{64}$</code> |

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Read one immutable research result saved for the current reader | <code>application/json</code>: <code>object</code> |
| <code>default</code> | Invalid input, access denied, source/storage failure or deadline exceeded. Workspace authentication errors may use the shared API envelope; bounded route failures expose a message. Rate-limit responses may be plain text. | <code>application/json</code>: Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>; <code>text/plain</code>: <code>string</code>; <code>text/html</code>: <code>string</code> |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [CompletedWorkflowRun](/api-reference/schemas/completed-workflow-run/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>application/json</code> body**

Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>oneOf&#91;3&#93;.error</code> | Yes | [ApiError](/api-reference/schemas/api-error/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>text/plain</code> body**

<code>string</code> — Format: <code>binary</code>

**<code>default</code> <code>text/html</code> body**

<code>string</code> — Format: <code>binary</code>

<a id="runWorkflowResearch"></a>

## Complete a bounded read-only liquidity research question

`POST /workflows/run`

Operation ID: <code>runWorkflowResearch</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

Requires current interactive session and workspace membership; service credentials are not accepted unless an explicit service scope is declared. Research and directory bookmarks grant no signing, custody or execution authority. The JSON request is limited to 48 KiB. Up to six prior question/answer pairs provide conversational context, not evidence. New evidence is fetched server-side; successful production runs are saved for the current reader. AI output remains a proposal for human review.

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | Min length: <code>1</code>; Max length: <code>160</code> |

### Request body

Required: **yes**.

**<code>application/json</code>**

[WorkflowResearchRequest](/api-reference/schemas/workflow-research-request/)

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Complete a bounded read-only liquidity research question | <code>application/json</code>: <code>object</code> |
| <code>default</code> | Invalid input, access denied, source/storage failure or deadline exceeded. Workspace authentication errors may use the shared API envelope; bounded route failures expose a message. Rate-limit responses may be plain text. | <code>application/json</code>: Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>; <code>text/plain</code>: <code>string</code>; <code>text/html</code>: <code>string</code> |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [WorkflowResearchResponse](/api-reference/schemas/workflow-research-response/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>application/json</code> body**

Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>oneOf&#91;3&#93;.error</code> | Yes | [ApiError](/api-reference/schemas/api-error/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>text/plain</code> body**

<code>string</code> — Format: <code>binary</code>

**<code>default</code> <code>text/html</code> body**

<code>string</code> — Format: <code>binary</code>

<a id="listSavedVirtualsProjects"></a>

## List workspace Virtuals directory bookmarks

`GET /virtuals-projects`

Operation ID: <code>listSavedVirtualsProjects</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

Requires current interactive session and workspace membership; service credentials are not accepted unless an explicit service scope is declared. Research and directory bookmarks grant no signing, custody or execution authority.

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | Min length: <code>1</code>; Max length: <code>160</code> |
| <code>cursor</code> | query | No | <code>string</code> | Pattern: <code>^&#91;A-Za-z0-9&#95;-&#93;+$</code>; Max length: <code>1024</code> |
| <code>limit</code> | query | No | <code>integer</code> | Default: <code>20</code>; Minimum: <code>1</code>; Maximum: <code>20</code> |

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | List workspace Virtuals directory bookmarks | <code>application/json</code>: <code>object</code> |
| <code>default</code> | Invalid input, access denied, source/storage failure or deadline exceeded. Workspace authentication errors may use the shared API envelope; bounded route failures expose a message. Rate-limit responses may be plain text. | <code>application/json</code>: Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>; <code>text/plain</code>: <code>string</code>; <code>text/html</code>: <code>string</code> |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [SavedVirtualsProjectPage](/api-reference/schemas/saved-virtuals-project-page/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>application/json</code> body**

Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>oneOf&#91;3&#93;.error</code> | Yes | [ApiError](/api-reference/schemas/api-error/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>text/plain</code> body**

<code>string</code> — Format: <code>binary</code>

**<code>default</code> <code>text/html</code> body**

<code>string</code> — Format: <code>binary</code>

<a id="saveVirtualsProject"></a>

## Save an independently resolved Virtuals directory bookmark

`POST /virtuals-projects`

Operation ID: <code>saveVirtualsProject</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

Requires current interactive session and workspace membership; service credentials are not accepted unless an explicit service scope is declared. Research and directory bookmarks grant no signing, custody or execution authority. The JSON request is limited to 4 KiB and accepts only the selected Virtuals ID. Project identity is retrieved server-side; duplicate saves return the original record with replayed=true. This route uses native bookmark replay rather than an Idempotency-Key header.

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | Min length: <code>1</code>; Max length: <code>160</code> |

### Request body

Required: **yes**.

**<code>application/json</code>**

[SaveVirtualsProjectRequest](/api-reference/schemas/save-virtuals-project-request/)

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Save an independently resolved Virtuals directory bookmark | <code>application/json</code>: <code>object</code> |
| <code>default</code> | Invalid input, access denied, source/storage failure or deadline exceeded. Workspace authentication errors may use the shared API envelope; bounded route failures expose a message. Rate-limit responses may be plain text. | <code>application/json</code>: Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>; <code>text/plain</code>: <code>string</code>; <code>text/html</code>: <code>string</code> |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [SaveVirtualsProjectReceipt](/api-reference/schemas/save-virtuals-project-receipt/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>application/json</code> body**

Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>oneOf&#91;3&#93;.error</code> | Yes | [ApiError](/api-reference/schemas/api-error/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>text/plain</code> body**

<code>string</code> — Format: <code>binary</code>

**<code>default</code> <code>text/html</code> body**

<code>string</code> — Format: <code>binary</code>

<a id="getSavedVirtualsProject"></a>

## Read a workspace Virtuals directory bookmark

`GET /virtuals-projects/{id}`

Operation ID: <code>getSavedVirtualsProject</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

Requires current interactive session and workspace membership; service credentials are not accepted unless an explicit service scope is declared. Research and directory bookmarks grant no signing, custody or execution authority.

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | Min length: <code>1</code>; Max length: <code>160</code> |
| <code>id</code> | path | Yes | <code>integer</code> | Minimum: <code>1</code>; Maximum: <code>9007199254740991</code> |

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Read a workspace Virtuals directory bookmark | <code>application/json</code>: <code>object</code> |
| <code>default</code> | Invalid input, access denied, source/storage failure or deadline exceeded. Workspace authentication errors may use the shared API envelope; bounded route failures expose a message. Rate-limit responses may be plain text. | <code>application/json</code>: Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>; <code>text/plain</code>: <code>string</code>; <code>text/html</code>: <code>string</code> |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [SavedVirtualsProject](/api-reference/schemas/saved-virtuals-project/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>application/json</code> body**

Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>oneOf&#91;3&#93;.error</code> | Yes | [ApiError](/api-reference/schemas/api-error/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>text/plain</code> body**

<code>string</code> — Format: <code>binary</code>

**<code>default</code> <code>text/html</code> body**

<code>string</code> — Format: <code>binary</code>

<a id="removeSavedVirtualsProject"></a>

## Remove the exact reviewed Virtuals directory bookmark generation

`DELETE /virtuals-projects/{id}`

Operation ID: <code>removeSavedVirtualsProject</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

Requires current interactive session and workspace membership; service credentials are not accepted unless an explicit service scope is declared. Research and directory bookmarks grant no signing, custody or execution authority. Send expectedResourceVersion in the JSON body. If-Match and Idempotency-Key headers are not used by this route; a stale generation fails with 412.

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | Min length: <code>1</code>; Max length: <code>160</code> |
| <code>id</code> | path | Yes | <code>integer</code> | Minimum: <code>1</code>; Maximum: <code>9007199254740991</code> |

### Request body

Required: **yes**.

**<code>application/json</code>**

[RemoveVirtualsProjectRequest](/api-reference/schemas/remove-virtuals-project-request/)

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Remove the exact reviewed Virtuals directory bookmark generation | <code>application/json</code>: <code>object</code> |
| <code>default</code> | Invalid input, access denied, source/storage failure or deadline exceeded. Workspace authentication errors may use the shared API envelope; bounded route failures expose a message. Rate-limit responses may be plain text. | <code>application/json</code>: Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>; <code>text/plain</code>: <code>string</code>; <code>text/html</code>: <code>string</code> |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [RemoveVirtualsProjectReceipt](/api-reference/schemas/remove-virtuals-project-receipt/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>application/json</code> body**

Exactly one of: [WorkflowRequestError](/api-reference/schemas/workflow-request-error/); [WorkflowRateLimitError](/api-reference/schemas/workflow-rate-limit-error/); <code>object</code>

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>oneOf&#91;3&#93;.error</code> | Yes | [ApiError](/api-reference/schemas/api-error/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>default</code> <code>text/plain</code> body**

<code>string</code> — Format: <code>binary</code>

**<code>default</code> <code>text/html</code> body**

<code>string</code> — Format: <code>binary</code>

<a id="getPartnerConsentOptions"></a>

## Review the current partner declarations for this explicitly assigned issuer

`GET /partner-consent-options`

Operation ID: <code>getPartnerConsentOptions</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | — |
| <code>partnerId</code> | query | Yes | <code>string</code> | — |
| <code>partnerOrganizationId</code> | query | Yes | <code>string</code> | — |

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Current partner declarations and exact configuration generation | <code>application/json</code>: <code>object</code> |
| <code>403</code> | Issuer assignment or authority absent | No response body declared |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>ETag</code> | Yes | <code>string</code> | — |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [PartnerConsentOptions](/api-reference/schemas/partner-consent-options/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>403</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

<a id="getPartnerPreparationContext"></a>

## Read the exact current actor-scoped consent for preparing an issuer packet

`GET /partner-preparation-contexts/{partnerId}`

Operation ID: <code>getPartnerPreparationContext</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | — |
| <code>partnerId</code> | path | Yes | <code>string</code> | — |
| <code>issuerOrganizationId</code> | query | Yes | <code>string</code> | — |

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Current partner and consent generations | <code>application/json</code>: <code>object</code> |
| <code>403</code> | Current bilateral preparation authority absent | No response body declared |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>ETag</code> | Yes | <code>string</code> | — |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [PartnerPreparationContext](/api-reference/schemas/partner-preparation-context/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>403</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

<a id="getPartnerPreparationReceiptRecovery"></a>

## Recover the initiating partner actor's durable preparation receipt using its original operation key

`GET /partner-preparation-receipts/{partnerId}`

Operation ID: <code>getPartnerPreparationReceiptRecovery</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

Read-only recovery for the original authenticated actor and partner organization. Current organization membership, active partner configuration, named proposal-preparer declaration and active bilateral proposal-preparation grant are required. ACCEPTED requires a completed v2 Idempotency-Key-bound preparation operation with original HTTP 202 status and an immutable preparation event matching the actor, organization, partner and issuer target. Receipt consent and partner-generation metadata describe the committed event and may differ from the currently authorized consent. Missing, in-flight, failed, unsupported or unverifiable completions return UNRESOLVED. Neither state admits or retries a preparation. The response discloses no proposal packet or audit reason.

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | — |
| <code>partnerId</code> | path | Yes | <code>string</code> | — |
| <code>issuerOrganizationId</code> | query | Yes | <code>string</code> | — |
| <code>Idempotency-Key</code> | header | Yes | <code>string</code> | The exact Idempotency-Key header used for the original preparation POST; never a new recovery operation key. Min length: <code>8</code>; Max length: <code>160</code> |

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Verified committed receipt or unresolved operation; never evidence that a new preparation is safe | <code>application/json</code>: <code>object</code> |
| <code>400</code> | Missing or invalid original operation key or issuer target | No response body declared |
| <code>401</code> | Interactive authentication required | No response body declared |
| <code>403</code> | Current actor-scoped bilateral preparation authority absent | No response body declared |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [PartnerPreparationReceiptRecovery](/api-reference/schemas/partner-preparation-receipt-recovery/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>400</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>401</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>403</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

<a id="listPartnerPreparations"></a>

## Read consent-bound partner packets awaiting or completed in issuer review

`GET /partner-preparations`

Operation ID: <code>listPartnerPreparations</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | — |

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Issuer-owned preparation inbox | <code>application/json</code>: <code>object</code> |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | Array of [PartnerPreparationInboxEntry](/api-reference/schemas/partner-preparation-inbox-entry/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

<a id="importPartnerPreparation"></a>

## Import a current consent-bound partner packet as an approval-empty issuer proposal

`POST /partner-preparations/{eventId}/import`

Operation ID: <code>importPartnerPreparation</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>Idempotency-Key</code> | header | Yes | <code>string</code> | Min length: <code>8</code>; Max length: <code>160</code> |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | — |
| <code>eventId</code> | path | Yes | <code>string</code> | — |
| <code>If-Match</code> | header | Yes | <code>string</code> | Pattern: <code>^"&#91;^"&#92;&#92; &#93;+"$</code> |

### Request body

Required: **yes**.

**<code>application/json</code>**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>reason</code> | Yes | <code>string</code> | Min length: <code>3</code>; Max length: <code>500</code> |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Issuer-owned proposal and immutable import decision | <code>application/json</code>: <code>object</code> |
| <code>403</code> | Authority or current bilateral consent absent | No response body declared |
| <code>409</code> | Preparation already decided or unavailable | No response body declared |
| <code>412</code> | Consent generation changed | No response body declared |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [PartnerPreparationDecisionResult](/api-reference/schemas/partner-preparation-decision-result/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>403</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>409</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>412</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

<a id="declinePartnerPreparation"></a>

## Record an issuer decline of an exact current consent-bound partner packet

`POST /partner-preparations/{eventId}/decline`

Operation ID: <code>declinePartnerPreparation</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>Idempotency-Key</code> | header | Yes | <code>string</code> | Min length: <code>8</code>; Max length: <code>160</code> |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | — |
| <code>eventId</code> | path | Yes | <code>string</code> | — |
| <code>If-Match</code> | header | Yes | <code>string</code> | Pattern: <code>^"&#91;^"&#92;&#92; &#93;+"$</code> |

### Request body

Required: **yes**.

**<code>application/json</code>**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>reason</code> | Yes | <code>string</code> | Min length: <code>3</code>; Max length: <code>500</code> |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Immutable decline decision without a proposal import | <code>application/json</code>: <code>object</code> |
| <code>403</code> | Authority or current bilateral consent absent | No response body declared |
| <code>409</code> | Preparation already decided or unavailable | No response body declared |
| <code>412</code> | Consent generation changed | No response body declared |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [PartnerPreparationDecisionResult](/api-reference/schemas/partner-preparation-decision-result/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>403</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>409</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>412</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

<a id="getPartnerPreparationStatus"></a>

## Read partner-owned delivery and issuer review status for one exact packet

`GET /partner-preparation-status/{partnerId}/{eventId}`

Operation ID: <code>getPartnerPreparationStatus</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | — |
| <code>partnerId</code> | path | Yes | <code>string</code> | — |
| <code>eventId</code> | path | Yes | <code>string</code> | — |
| <code>issuerOrganizationId</code> | query | Yes | <code>string</code> | — |

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Reduced delivery and issuer decision state | <code>application/json</code>: <code>object</code> |
| <code>403</code> | Current partner actor or consent absent | No response body declared |
| <code>404</code> | Preparation absent | No response body declared |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [PartnerPreparationStatus](/api-reference/schemas/partner-preparation-status/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>403</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>404</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

<a id="listPartnerDomainChallenges"></a>

## List tenant-owned domain ownership and HTTPS onboarding challenges

`GET /partner-domain-challenges`

Operation ID: <code>listPartnerDomainChallenges</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

Returns at most 1000 challenges, newest first, in the current organization and optionally the selected partner. To read older challenges, pass the last returned challenge ID as beforeChallengeId while retaining the same partner filter. A page with fewer than 1000 entries ends traversal. An unknown cursor or a cursor outside the current organization or selected partner returns an empty array without disclosing its existence. This directory read neither verifies domain ownership nor admits a partner configuration.

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | — |
| <code>partnerId</code> | query | No | <code>string</code> | Restrict challenges to this partner in the current organization. Pattern: <code>^&#91;a-zA-Z0-9&#93;&#91;a-zA-Z0-9:&#95;-&#93;{2,159}$</code>; Min length: <code>3</code>; Max length: <code>160</code> |
| <code>beforeChallengeId</code> | query | No | <code>string</code> | Last challenge ID from the preceding page; return only older challenges in the same organization and partner filter. Format: <code>uuid</code> |

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Bounded domain challenge array in the current organization; no pagination metadata | <code>application/json</code>: <code>object</code> |
| <code>400</code> | Invalid partner ID or challenge cursor | No response body declared |
| <code>403</code> | Current organization domain administration authority absent | No response body declared |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | Array of [PartnerDomainChallenge](/api-reference/schemas/partner-domain-challenge/) | Max items: <code>1000</code> |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>400</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>403</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

<a id="createPartnerDomainChallenge"></a>

## Create an exact-host DNS ownership challenge for an approved domain verifier

`POST /partner-domain-challenges`

Operation ID: <code>createPartnerDomainChallenge</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>Idempotency-Key</code> | header | Yes | <code>string</code> | Min length: <code>8</code>; Max length: <code>160</code> |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | — |

### Request body

Required: **yes**.

**<code>application/json</code>**

[PartnerDomainChallengeCreateRequest](/api-reference/schemas/partner-domain-challenge-create-request/)

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>201</code> | Durable DNS TXT challenge and expiry | <code>application/json</code>: <code>object</code> |
| <code>503</code> | Approved signing provider unavailable | No response body declared |

**<code>201</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>201</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [PartnerDomainChallenge](/api-reference/schemas/partner-domain-challenge/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>503</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

<a id="getPartnerDomainChallenge"></a>

## Read one tenant-owned domain onboarding challenge

`GET /partner-domain-challenges/{id}`

Operation ID: <code>getPartnerDomainChallenge</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | — |
| <code>id</code> | path | Yes | <code>string</code> | — |

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Current domain challenge | <code>application/json</code>: <code>object</code> |
| <code>404</code> | Challenge absent in this organization | No response body declared |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [PartnerDomainChallenge](/api-reference/schemas/partner-domain-challenge/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>404</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

<a id="getPartnerDomainStatus"></a>

## Check current DNS ownership, routing and HTTPS readiness

`GET /partner-domain-challenges/{id}/status`

Operation ID: <code>getPartnerDomainStatus</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | — |
| <code>id</code> | path | Yes | <code>string</code> | — |

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Observed readiness with exact check time | <code>application/json</code>: <code>object</code> |
| <code>404</code> | Challenge absent in this organization | No response body declared |
| <code>503</code> | DNS or hostname provider unavailable | No response body declared |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [PartnerDomainStatus](/api-reference/schemas/partner-domain-status/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>404</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>503</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

<a id="verifyPartnerDomainChallenge"></a>

## Verify the exact DNS TXT response and obtain current signed domain evidence

`POST /partner-domain-challenges/{id}/verify`

Operation ID: <code>verifyPartnerDomainChallenge</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>Idempotency-Key</code> | header | Yes | <code>string</code> | Min length: <code>8</code>; Max length: <code>160</code> |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | — |
| <code>id</code> | path | Yes | <code>string</code> | — |

### Request body

Required: **yes**.

**<code>application/json</code>**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>reason</code> | Yes | <code>string</code> | Min length: <code>3</code>; Max length: <code>500</code> |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Verified challenge and signed evidence | <code>application/json</code>: <code>object</code> |
| <code>409</code> | DNS TXT response absent or challenge expired | No response body declared |
| <code>412</code> | Challenge state changed concurrently | No response body declared |
| <code>503</code> | DNS or approved signer unavailable | No response body declared |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [PartnerDomainChallenge](/api-reference/schemas/partner-domain-challenge/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>409</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>412</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>503</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

<a id="provisionPartnerDomainChallenge"></a>

## Provision a verified partner hostname through the configured HTTPS provider

`POST /partner-domain-challenges/{id}/provision`

Operation ID: <code>provisionPartnerDomainChallenge</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>Idempotency-Key</code> | header | Yes | <code>string</code> | Min length: <code>8</code>; Max length: <code>160</code> |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | — |
| <code>id</code> | path | Yes | <code>string</code> | — |

### Request body

Required: **yes**.

**<code>application/json</code>**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>reason</code> | Yes | <code>string</code> | Min length: <code>3</code>; Max length: <code>500</code> |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Current hostname provisioning state and required validation records | <code>application/json</code>: <code>object</code> |
| <code>409</code> | Current verified ownership absent | No response body declared |
| <code>412</code> | Challenge state changed concurrently | No response body declared |
| <code>503</code> | Hostname provisioning unavailable | No response body declared |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [PartnerDomainChallenge](/api-reference/schemas/partner-domain-challenge/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>409</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>412</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>503</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

<a id="revokePartnerDomainChallenge"></a>

## Revoke an unbound domain challenge and remove its managed hostname

`POST /partner-domain-challenges/{id}/revoke`

Operation ID: <code>revokePartnerDomainChallenge</code>

**Authentication:** <code>&#95;&#95;Host-klineo&#95;session</code> cookie (<code>sessionCookie</code>)

### Parameters

| Name | Location | Required | Type | Description and constraints |
| --- | --- | --- | --- | --- |
| <code>Idempotency-Key</code> | header | Yes | <code>string</code> | Min length: <code>8</code>; Max length: <code>160</code> |
| <code>x-klineo-organization-id</code> | header | Yes | <code>string</code> | — |
| <code>id</code> | path | Yes | <code>string</code> | — |

### Request body

Required: **yes**.

**<code>application/json</code>**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>reason</code> | Yes | <code>string</code> | Min length: <code>3</code>; Max length: <code>500</code> |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

### Responses

| Status | Description | Content type and schema |
| --- | --- | --- |
| <code>200</code> | Revoked challenge with signed evidence and hostname withdrawn | <code>application/json</code>: <code>object</code> |
| <code>409</code> | An active partner configuration still binds this domain | No response body declared |
| <code>412</code> | Challenge state changed concurrently | No response body declared |
| <code>503</code> | Managed hostname removal unavailable | No response body declared |

**<code>200</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>200</code> <code>application/json</code> body**

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>data</code> | Yes | [PartnerDomainChallenge](/api-reference/schemas/partner-domain-challenge/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

**<code>409</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>412</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |

**<code>503</code> response headers**

| Header | Required | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>Cache-Control</code> | Yes | Constant <code>private, no-store</code> | — |
