Pending requests
Generated from contract version 1.0.0 — the same document /v1/api/openapi.json serves.
Prerequisites
Section titled “Prerequisites”- An API key in
x-api-key, or a browser session cookie X-Organization-Idnaming the workspace to act in, unless the session already has an active one- The base URL for your deployment,
https://server.hlix.aiby default
Operations
Section titled “Operations”| Method | Path | Operation |
|---|---|---|
GET |
/v1/api/pending-requests |
List requests awaiting a decision |
GET |
/v1/api/pending-requests/{id} |
Get one request |
POST |
/v1/api/pending-requests/{id}/cancel |
Cancel a request nobody will decide |
POST |
/v1/api/pending-requests/{id}/resolve |
Approve or deny a request |
POST |
/v1/api/pending-requests/client-question |
Ask the customer a question |
List requests awaiting a decision
Section titled “List requests awaiting a decision”GET /v1/api/pending-requests · operation ID listPendingRequests
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
status |
query | no | string | pending | approved | denied | cancelled. Omitted, every status is listed. |
cycleId |
query | no | string | Only requests raised against this cycle. |
taskId |
query | no | string | Only requests raised against this task. |
X-Organization-Id |
header | no | string | The workspace (organization) to act in. Omitted, the session’s active organization is used. |
X-Client-Portal |
header | no | string | Agency organization id for one aggregate client dashboard; server derives only this caller’s workspace relationship and owned account seats. Legacy account ids remain narrowly compatible. Real verified user session required for agency context; administration denied. |
Responses
| Status | Body | Description |
|---|---|---|
200 |
PendingRequestListItem[] | The matching requests, each with the project it waits in. |
400 |
ApiError | The request named no active organization. |
401 |
ApiError | No valid session or API key. |
403 |
ApiError | Authenticated, but not a member of the named organization — or a client collaborator without the required access on this project. |
404 |
ApiError | The resource does not exist, or the caller is a task-scoped credential and this endpoint is outside its allowlist. |
Get one request
Section titled “Get one request”GET /v1/api/pending-requests/{id} · operation ID getPendingRequest
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id |
path | yes | string | |
X-Organization-Id |
header | no | string | The workspace (organization) to act in. Omitted, the session’s active organization is used. |
X-Client-Portal |
header | no | string | Agency organization id for one aggregate client dashboard; server derives only this caller’s workspace relationship and owned account seats. Legacy account ids remain narrowly compatible. Real verified user session required for agency context; administration denied. |
Responses
| Status | Body | Description |
|---|---|---|
200 |
PendingRequest | The request. |
400 |
ApiError | The request named no active organization. |
401 |
ApiError | No valid session or API key. |
403 |
ApiError | Authenticated, but not a member of the named organization — or a client collaborator without the required access on this project. |
404 |
ApiError | No such request in this workspace — or the caller may not decide it, which answers the same 404 rather than confirming it exists. |
Cancel a request nobody will decide
Section titled “Cancel a request nobody will decide”POST /v1/api/pending-requests/{id}/cancel · operation ID cancelPendingRequest
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id |
path | yes | string | |
X-Organization-Id |
header | no | string | The workspace (organization) to act in. Omitted, the session’s active organization is used. |
Responses
| Status | Body | Description |
|---|---|---|
200 |
PendingRequest | The cancelled request. A blocking dispatch gate is treated as a DENY, so the cycle fails and the project continues rather than waiting forever. |
400 |
ValidationError | ApiError | The request is no longer pending (it was already approved, denied or cancelled), the JSON body failed validation, or the request named no active organization. |
401 |
ApiError | No valid session or API key. |
403 |
ApiError | Authenticated, but not a member of the named organization — or a client collaborator without the required access on this project. |
404 |
ApiError | No such request in this workspace — or the caller may not decide it, which answers the same 404 rather than confirming it exists. |
Approve or deny a request
Section titled “Approve or deny a request”POST /v1/api/pending-requests/{id}/resolve · operation ID resolvePendingRequest
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id |
path | yes | string | |
X-Organization-Id |
header | no | string | The workspace (organization) to act in. Omitted, the session’s active organization is used. |
X-Client-Portal |
header | no | string | Agency organization id for one aggregate client dashboard; server derives only this caller’s workspace relationship and owned account seats. Legacy account ids remain narrowly compatible. Real verified user session required for agency context; administration denied. |
Request body — application/json, ResolvePendingRequest (required)
| Property | Type | Required | Notes |
|---|---|---|---|
decidedBy |
string | no | max length 200 |
decision |
string | no | max length 5000 |
feedback |
string | no | max length 5000 |
status |
approved |
denied |
yes |
Responses
| Status | Body | Description |
|---|---|---|
200 |
PendingRequest | The decided request. For a client collaborator decidedBy is SERVER-DERIVED and any value sent in the body is ignored. |
400 |
ValidationError | ApiError | The request is no longer pending (it was already approved, denied or cancelled), the JSON body failed validation, or the request named no active organization. |
401 |
ApiError | No valid session or API key. |
403 |
ApiError | Authenticated, but not a member of the named organization — or a client collaborator without the required access on this project. |
404 |
ApiError | No such request in this workspace — or the caller may not decide it, which answers the same 404 rather than confirming it exists. |
Ask the customer a question
Section titled “Ask the customer a question”POST /v1/api/pending-requests/client-question · operation ID askClientQuestion
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
X-Organization-Id |
header | no | string | The workspace (organization) to act in. Omitted, the session’s active organization is used. |
Request body — application/json, AskClientQuestion (required)
| Property | Type | Required | Notes |
|---|---|---|---|
cycleId |
string | yes | min length 1 |
question |
string | yes | min length 1, max length 5000 |
title |
string | yes | min length 1, max length 200 |
Responses
| Status | Body | Description |
|---|---|---|
201 |
PendingRequest | The stored request. It is NOT blocking: nothing in the dispatch path waits on it, and requestType / requiredActor are fixed by the server. |
400 |
ValidationError | ApiError | The JSON body failed schema validation (ValidationError), or the request named no active organization (ApiError). |
401 |
ApiError | No valid session or API key. |
403 |
ApiError | The caller is a client collaborator. Asking a customer a question is agency-only — a customer that could address one to itself could manufacture the appearance of having been consulted. |
404 |
ApiError | No such cycle in this workspace. |
If a request fails
Section titled “If a request fails”These apply to every operation on this page.
400— the body failed schema validation, or the request named no active organization. AValidationErrorbody carries the failing fields; anApiErrorbody carries onlyerror.401— no valid session or API key.403— authenticated, but not a member of the named organization, or a client collaborator without the required access.404— no such resource in this workspace. Absent and not-visible are deliberately the same answer; do not infer cross-tenant existence from it.409— the expected revision or state is stale, or another operation currently owns the transition.500— the operation failed server-side. Retry only where an idempotency key makes that safe.
Next steps
Section titled “Next steps”API referenceEvery resource in the published contract, and what is deliberately not in it.
API & OpenAPIDownload the contract, generate a client, and read the compatibility policy.
TypeScript SDKAuth, retries, typed errors, uploads and streaming, already built.
CLI referenceThe same operations from a terminal, with a stable JSON envelope.