REST API · v1

API reference

Telos exposes a REST API over the same service layer the app uses. Every response includes a HATEOAS actions array, and every error includes a machine-actionable suggestion. OpenAPI 3.1 spec at /api/v1/openapi.json.

Auth

Authentication

Authenticate with a bearer token in the Authorization header. Keys start with telos_live_ and carry a role (engineer, pm, em, executive, admin) that determines which fields are returned. Keys are issued from inside the app at Configurations → API Keys; Telos is invite-only today, so request access via the waitlist.

Third-party OAuth apps authenticate the same way with access tokens starting telos_oat_, issued by POST /api/oauth/token (authorization_code with PKCE, refresh_token rotation). Send users to GET /oauth/authorize with client_id, redirect_uri, response_type=code, scope, and state to request consent; an org admin approves on the consent screen. Unlike API keys, an OAuth token's granted scopes are its entire permission set.

Add actor=app to the authorize URL for a grant that acts as your app rather than the approving admin: it survives the admin leaving the org and its writes are attributed to the app. The token endpoint accepts client credentials in the body or as HTTP Basic auth, and POST /api/oauth/revoke (RFC 7009) revokes a token and its refresh family, e.g. on uninstall.

curl
curl -X GET 'https://www.telos-app.com/api/v1/visions' \
  -H 'Authorization: Bearer telos_live_…'
Lists

Pagination

List endpoints use cursor pagination. Pass cursorfrom the previous response's meta.pagination.nextCursor to fetch the next page. Default page size is 50; max is 200 via the limit parameter. The same actions array surfaces the next page as a rel: "next" link, so agents can walk pagination without parsing meta.

response
{
  "ok": true,
  "data": [ /* … items … */ ],
  "meta": {
    "requestId": "01H8X3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-05-18T14:23:11.842Z",
    "pagination": {
      "cursor": null,
      "nextCursor": "eyJpZCI6IjAxIH0=",
      "hasMore": true
    }
  },
  "actions": [
    { "rel": "next", "href": "/api/v1/visions?cursor=eyJpZCI6IjAxIH0=" }
  ]
}
Failure modes

Errors

Errors return a non-2xx status with a body in the standard envelope. The suggestion field is written for LLMs: it states what the caller should do differently. Status codes: 400 validation, 401 missing/invalid credentials, 403 role-gated, 404 not found, 409 conflict (idempotency or state), 422 business-rule violation (e.g. validation gate), 429 rate-limited, 5xx internal.

response
{
  "ok": false,
  "error": {
    "code": "validation_failed",
    "message": "Field 'narrative' must be at least 1 character",
    "suggestion": "Provide a non-empty narrative. The minimum is 1 character."
  },
  "meta": { "requestId": "01H8X3F4S0Z9KMQ4N6PYZR7C5A", "timestamp": "…" }
}
One round trip

Batch

POST /api/v1/batch executes up to 20 operations in a single request. Each operation runs independently; the response is a 207 multi-status whose data contains the per-operation envelopes keyed by the id you supplied. Send an Idempotency-Key header on the batch request to make retries safe.

request body
{
  "operations": [
    { "id": "1", "method": "POST", "path": "/api/v1/objectives", "body": { /* … */ } },
    { "id": "2", "method": "GET",  "path": "/api/v1/visions/abc" }
  ]
}
Throughput

Rate limits

Each key gets 600 requests/minute on a sliding window. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset (epoch seconds). Over the limit returns 429 with a Retry-After header — back off for that many seconds, or fold several calls into one POST /api/v1/batch.

For agents

Assembled context

GET /api/v1/ai/context/vision/{id} returns a vision and its objectives, metrics, opportunities, and tasks assembled into one payload alongside a ready-to-use system prompt and a list of the mutation endpoints an agent can call next — so a model can ground itself in one request instead of walking the graph. Requires vision:read.

Resource

Visions

GET/api/v1/visions

List visions

List strategic visions with cursor pagination.

Parameters
cursorquery · stringoptional
Opaque pagination cursor from a previous response
limitquery · numberoptional
Number of items per page (default 50, max 200)
sortquery · stringoptional
Sort order: field:asc or field:desc
Returns · 200 — List visions
oktruerequired
dataobject[]required
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
namestringrequired
slugstringrequired
kind"company" | "product"required
narrativestringrequired
versionintegerrequired
ownerIdobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
GET request
curl -X GET 'https://www.telos-app.com/api/v1/visions' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": [
    {
      "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
      "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
      "name": "string",
      "slug": "string",
      "kind": "company",
      "narrative": "string",
      "version": 0,
      "ownerId": null,
      "createdAt": "string",
      "updatedAt": "string"
    }
  ],
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
POST/api/v1/visions

Create a vision

Create a new strategic vision.

Request body · required
namestringrequired
kind"company" | "product"optional
narrativestringrequired
Returns · 201 — Create a vision
oktruerequired
dataobjectrequired
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
namestringrequired
slugstringrequired
kind"company" | "product"required
narrativestringrequired
versionintegerrequired
ownerIdobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
POST request
curl -X POST 'https://www.telos-app.com/api/v1/visions' \
  -H 'Authorization: Bearer telos_live_…' \
  -H 'Content-Type: application/json' \
  -d '{ … }'
response
{
  "ok": true,
  "data": {
    "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "name": "string",
    "slug": "string",
    "kind": "company",
    "narrative": "string",
    "version": 0,
    "ownerId": null,
    "createdAt": "string",
    "updatedAt": "string"
  },
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
GET/api/v1/visions/{id}

Get a vision

Parameters
idpath · stringrequired
id path parameter
Returns · 200 — Get a vision
oktruerequired
dataobjectrequired
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
namestringrequired
slugstringrequired
kind"company" | "product"required
narrativestringrequired
versionintegerrequired
ownerIdobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
GET request
curl -X GET 'https://www.telos-app.com/api/v1/visions/{id}' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": {
    "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "name": "string",
    "slug": "string",
    "kind": "company",
    "narrative": "string",
    "version": 0,
    "ownerId": null,
    "createdAt": "string",
    "updatedAt": "string"
  },
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
PATCH/api/v1/visions/{id}

Update a vision

Parameters
idpath · stringrequired
id path parameter
Request body · required
namestringoptional
narrativestringoptional
Returns · 200 — Update a vision
oktruerequired
dataobjectrequired
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
namestringrequired
slugstringrequired
kind"company" | "product"required
narrativestringrequired
versionintegerrequired
ownerIdobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
PATCH request
curl -X PATCH 'https://www.telos-app.com/api/v1/visions/{id}' \
  -H 'Authorization: Bearer telos_live_…' \
  -H 'Content-Type: application/json' \
  -d '{ … }'
response
{
  "ok": true,
  "data": {
    "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "name": "string",
    "slug": "string",
    "kind": "company",
    "narrative": "string",
    "version": 0,
    "ownerId": null,
    "createdAt": "string",
    "updatedAt": "string"
  },
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
GET/api/v1/visions/{id}/versions

List a vision's version history

Parameters
idpath · stringrequired
id path parameter
Returns · 200 — List a vision's version history
oktruerequired
dataobjectrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
GET request
curl -X GET 'https://www.telos-app.com/api/v1/visions/{id}/versions' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": null,
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
GET/api/v1/visions/{id}/objectives

List objectives for a vision

Parameters
idpath · stringrequired
id path parameter
cursorquery · stringoptional
Opaque pagination cursor from a previous response
limitquery · numberoptional
Number of items per page (default 50, max 200)
sortquery · stringoptional
Sort order: field:asc or field:desc
Returns · 200 — List objectives for a vision
oktruerequired
dataobjectrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
GET request
curl -X GET 'https://www.telos-app.com/api/v1/visions/{id}/objectives' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": null,
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
Resource

Objectives

GET/api/v1/objectives

List objectives

List objectives with cursor pagination.

Parameters
cursorquery · stringoptional
Opaque pagination cursor from a previous response
limitquery · numberoptional
Number of items per page (default 50, max 200)
sortquery · stringoptional
Sort order: field:asc or field:desc
Returns · 200 — List objectives
oktruerequired
dataobject[]required
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
visionIdstring<uuid>required
slugstringrequired
titlestringrequired
descriptionobjectrequired
metricIdstring<uuid>required
targetOperator"gte" | "lte" | "eq"required
targetNumericstringrequired
startNumericobjectrequired
driIdstring<uuid>required
deadlineobjectrequired
status"active" | "achieved" | "abandoned"required
visionVersionintegerrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
GET request
curl -X GET 'https://www.telos-app.com/api/v1/objectives' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": [
    {
      "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
      "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
      "visionId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
      "slug": "string",
      "title": "string",
      "description": null,
      "metricId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
      "targetOperator": "gte",
      "targetNumeric": "string",
      "startNumeric": null,
      "driId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
      "deadline": null,
      "status": "active",
      "visionVersion": 0,
      "createdAt": "string",
      "updatedAt": "string"
    }
  ],
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
POST/api/v1/objectives

Create an objective

Request body · required
titlestringrequired
descriptionstringoptional
deadlinestring<date-time>optional
visionIdstring<uuid>required
driIdstring<uuid>required
metricobjectrequired
Show child attributes ›
metricIdstring<uuid>required
operator"gte" | "lte" | "eq"required
targetnumberrequired
startValueobjectoptional
Returns · 201 — Create an objective
oktruerequired
dataobjectrequired
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
visionIdstring<uuid>required
slugstringrequired
titlestringrequired
descriptionobjectrequired
metricIdstring<uuid>required
targetOperator"gte" | "lte" | "eq"required
targetNumericstringrequired
startNumericobjectrequired
driIdstring<uuid>required
deadlineobjectrequired
status"active" | "achieved" | "abandoned"required
visionVersionintegerrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
POST request
curl -X POST 'https://www.telos-app.com/api/v1/objectives' \
  -H 'Authorization: Bearer telos_live_…' \
  -H 'Content-Type: application/json' \
  -d '{ … }'
response
{
  "ok": true,
  "data": {
    "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "visionId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "slug": "string",
    "title": "string",
    "description": null,
    "metricId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "targetOperator": "gte",
    "targetNumeric": "string",
    "startNumeric": null,
    "driId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "deadline": null,
    "status": "active",
    "visionVersion": 0,
    "createdAt": "string",
    "updatedAt": "string"
  },
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
GET/api/v1/objectives/{id}

Get an objective

Parameters
idpath · stringrequired
id path parameter
Returns · 200 — Get an objective
oktruerequired
dataobjectrequired
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
visionIdstring<uuid>required
slugstringrequired
titlestringrequired
descriptionobjectrequired
metricIdstring<uuid>required
targetOperator"gte" | "lte" | "eq"required
targetNumericstringrequired
startNumericobjectrequired
driIdstring<uuid>required
deadlineobjectrequired
status"active" | "achieved" | "abandoned"required
visionVersionintegerrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
GET request
curl -X GET 'https://www.telos-app.com/api/v1/objectives/{id}' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": {
    "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "visionId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "slug": "string",
    "title": "string",
    "description": null,
    "metricId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "targetOperator": "gte",
    "targetNumeric": "string",
    "startNumeric": null,
    "driId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "deadline": null,
    "status": "active",
    "visionVersion": 0,
    "createdAt": "string",
    "updatedAt": "string"
  },
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
PATCH/api/v1/objectives/{id}

Update an objective

Parameters
idpath · stringrequired
id path parameter
Request body · required
titlestringoptional
descriptionstringoptional
deadlineobjectoptional
driIdstring<uuid>optional
status"active" | "achieved" | "abandoned"optional
Returns · 200 — Update an objective
oktruerequired
dataobjectrequired
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
visionIdstring<uuid>required
slugstringrequired
titlestringrequired
descriptionobjectrequired
metricIdstring<uuid>required
targetOperator"gte" | "lte" | "eq"required
targetNumericstringrequired
startNumericobjectrequired
driIdstring<uuid>required
deadlineobjectrequired
status"active" | "achieved" | "abandoned"required
visionVersionintegerrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
PATCH request
curl -X PATCH 'https://www.telos-app.com/api/v1/objectives/{id}' \
  -H 'Authorization: Bearer telos_live_…' \
  -H 'Content-Type: application/json' \
  -d '{ … }'
response
{
  "ok": true,
  "data": {
    "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "visionId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "slug": "string",
    "title": "string",
    "description": null,
    "metricId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "targetOperator": "gte",
    "targetNumeric": "string",
    "startNumeric": null,
    "driId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "deadline": null,
    "status": "active",
    "visionVersion": 0,
    "createdAt": "string",
    "updatedAt": "string"
  },
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
DELETE/api/v1/objectives/{id}

Delete an objective

Parameters
idpath · stringrequired
id path parameter
Returns · 200 — Delete an objective
oktruerequired
dataobjectrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
DELETE request
curl -X DELETE 'https://www.telos-app.com/api/v1/objectives/{id}' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": null,
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
GET/api/v1/objectives/{id}/opportunities

List opportunities for an objective

Parameters
idpath · stringrequired
id path parameter
Returns · 200 — List opportunities for an objective
oktruerequired
dataobjectrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
GET request
curl -X GET 'https://www.telos-app.com/api/v1/objectives/{id}/opportunities' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": null,
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
POST/api/v1/objectives/{id}/set-metric

Set an objective's metric

Parameters
idpath · stringrequired
id path parameter
Request body · required
objectiveIdstring<uuid>required
metricIdstring<uuid>required
operator"gte" | "lte" | "eq"required
targetnumberrequired
startValueobjectoptional
Returns · 201 — Set an objective's metric
oktruerequired
dataobjectrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
POST request
curl -X POST 'https://www.telos-app.com/api/v1/objectives/{id}/set-metric' \
  -H 'Authorization: Bearer telos_live_…' \
  -H 'Content-Type: application/json' \
  -d '{ … }'
response
{
  "ok": true,
  "data": null,
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
Resource

Metrics

GET/api/v1/metrics

List metrics

List metrics with cursor pagination.

Parameters
cursorquery · stringoptional
Opaque pagination cursor from a previous response
limitquery · numberoptional
Number of items per page (default 50, max 200)
sortquery · stringoptional
Sort order: field:asc or field:desc
Returns · 200 — List metrics
oktruerequired
dataobject[]required
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
slugstringrequired
namestringrequired
descriptionobjectrequired
currentValueobjectrequired
unit"percentage" | "count" | "currency" | "ratio" | "duration" | "custom"required
stewardIdobjectrequired
dataSourceType"manual" | "integration" | "system"required
dataSourceConfigobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
GET request
curl -X GET 'https://www.telos-app.com/api/v1/metrics' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": [
    {
      "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
      "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
      "slug": "string",
      "name": "string",
      "description": null,
      "currentValue": null,
      "unit": "percentage",
      "stewardId": null,
      "dataSourceType": "manual",
      "dataSourceConfig": null,
      "createdAt": "string",
      "updatedAt": "string"
    }
  ],
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
POST/api/v1/metrics

Create a metric

Create a new metric.

Request body · required
namestringrequired
descriptionstringoptional
currentValuenumberoptional
unit"percentage" | "count" | "currency" | "ratio" | "duration" | "custom"required
dataSourceType"manual" | "integration" | "system"optional
dataSourceConfigobjectoptional
stewardIdstring<uuid>optional
Returns · 201 — Create a metric
oktruerequired
dataobjectrequired
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
slugstringrequired
namestringrequired
descriptionobjectrequired
currentValueobjectrequired
unit"percentage" | "count" | "currency" | "ratio" | "duration" | "custom"required
stewardIdobjectrequired
dataSourceType"manual" | "integration" | "system"required
dataSourceConfigobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
POST request
curl -X POST 'https://www.telos-app.com/api/v1/metrics' \
  -H 'Authorization: Bearer telos_live_…' \
  -H 'Content-Type: application/json' \
  -d '{ … }'
response
{
  "ok": true,
  "data": {
    "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "slug": "string",
    "name": "string",
    "description": null,
    "currentValue": null,
    "unit": "percentage",
    "stewardId": null,
    "dataSourceType": "manual",
    "dataSourceConfig": null,
    "createdAt": "string",
    "updatedAt": "string"
  },
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
GET/api/v1/metrics/{id}

Get a metric

Parameters
idpath · stringrequired
id path parameter
Returns · 200 — Get a metric
oktruerequired
dataobjectrequired
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
slugstringrequired
namestringrequired
descriptionobjectrequired
currentValueobjectrequired
unit"percentage" | "count" | "currency" | "ratio" | "duration" | "custom"required
stewardIdobjectrequired
dataSourceType"manual" | "integration" | "system"required
dataSourceConfigobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
GET request
curl -X GET 'https://www.telos-app.com/api/v1/metrics/{id}' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": {
    "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "slug": "string",
    "name": "string",
    "description": null,
    "currentValue": null,
    "unit": "percentage",
    "stewardId": null,
    "dataSourceType": "manual",
    "dataSourceConfig": null,
    "createdAt": "string",
    "updatedAt": "string"
  },
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
PATCH/api/v1/metrics/{id}

Update a metric

Parameters
idpath · stringrequired
id path parameter
Request body · required
namestringoptional
descriptionstringoptional
currentValuenumberoptional
unit"percentage" | "count" | "currency" | "ratio" | "duration" | "custom"optional
dataSourceType"manual" | "integration" | "system"optional
dataSourceConfigobjectoptional
stewardIdobjectoptional
Returns · 200 — Update a metric
oktruerequired
dataobjectrequired
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
slugstringrequired
namestringrequired
descriptionobjectrequired
currentValueobjectrequired
unit"percentage" | "count" | "currency" | "ratio" | "duration" | "custom"required
stewardIdobjectrequired
dataSourceType"manual" | "integration" | "system"required
dataSourceConfigobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
PATCH request
curl -X PATCH 'https://www.telos-app.com/api/v1/metrics/{id}' \
  -H 'Authorization: Bearer telos_live_…' \
  -H 'Content-Type: application/json' \
  -d '{ … }'
response
{
  "ok": true,
  "data": {
    "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "slug": "string",
    "name": "string",
    "description": null,
    "currentValue": null,
    "unit": "percentage",
    "stewardId": null,
    "dataSourceType": "manual",
    "dataSourceConfig": null,
    "createdAt": "string",
    "updatedAt": "string"
  },
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
DELETE/api/v1/metrics/{id}

Delete a metric

Parameters
idpath · stringrequired
id path parameter
Returns · 200 — Delete a metric
oktruerequired
dataobjectrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
DELETE request
curl -X DELETE 'https://www.telos-app.com/api/v1/metrics/{id}' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": null,
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
GET/api/v1/metrics/{id}/values

List metric values

List recorded values for a metric, optionally filtered by date.

Parameters
idpath · stringrequired
id path parameter
sincequery · stringoptional
limitquery · stringoptional
Returns · 200 — List metric values
oktruerequired
dataobjectrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
GET request
curl -X GET 'https://www.telos-app.com/api/v1/metrics/{id}/values' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": null,
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
POST/api/v1/metrics/{id}/values

Record a metric value

Record a new observed value for a metric.

Parameters
idpath · stringrequired
id path parameter
Request body · required
metricIdstring<uuid>required
valuenumberrequired
recordedAtstring<date-time>optional
notestringoptional
source"manual" | "integration" | "system"optional
Returns · 201 — Record a metric value
oktruerequired
dataobjectrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
POST request
curl -X POST 'https://www.telos-app.com/api/v1/metrics/{id}/values' \
  -H 'Authorization: Bearer telos_live_…' \
  -H 'Content-Type: application/json' \
  -d '{ … }'
response
{
  "ok": true,
  "data": null,
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
Resource

Opportunities

GET/api/v1/opportunities

List opportunities

List opportunities with cursor pagination.

Parameters
cursorquery · stringoptional
Opaque pagination cursor from a previous response
limitquery · numberoptional
Number of items per page (default 50, max 200)
sortquery · stringoptional
Sort order: field:asc or field:desc
statequery · stringoptional
Filter by lifecycle state: draft, under_review, approved, in_progress, complete, measured, rejected
Returns · 200 — List opportunities
oktruerequired
dataobject[]required
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
titlestringrequired
numberintegerrequired
estimatedCostobjectrequired
costEstimatorIdobjectrequired
leadIdobjectrequired
teamIdobjectrequired
workflowIdobjectrequired
status"backlog" | "in_progress" | "completed" | "cancelled"required
cancellationCategoryobjectrequired
cancellationReasonobjectrequired
cancelledAtobjectrequired
cancelledByUserIdobjectrequired
priorityobjectrequired
visionVersionobjectrequired
visionPathobjectrequired
strategyVersionStampobjectrequired
prdobjectrequired
prototypesobjectrequired
aiSynthesisobjectrequired
aiReviewobjectrequired
aiReviewAtobjectrequired
plannedStartobjectrequired
dueDateobjectrequired
isHardDeadlinebooleanrequired
intakeIdobjectrequired
categoryIdobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
GET request
curl -X GET 'https://www.telos-app.com/api/v1/opportunities' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": [
    {
      "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
      "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
      "title": "string",
      "number": 0,
      "estimatedCost": null,
      "costEstimatorId": null,
      "leadId": null,
      "teamId": null,
      "workflowId": null,
      "status": "backlog",
      "cancellationCategory": null,
      "cancellationReason": null,
      "cancelledAt": null,
      "cancelledByUserId": null,
      "priority": null,
      "visionVersion": null,
      "visionPath": null,
      "strategyVersionStamp": null,
      "prd": null,
      "prototypes": null,
      "aiSynthesis": null,
      "aiReview": null,
      "aiReviewAt": null,
      "plannedStart": null,
      "dueDate": null,
      "isHardDeadline": true,
      "intakeId": null,
      "categoryId": null,
      "createdAt": "string",
      "updatedAt": "string"
    }
  ],
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
POST/api/v1/opportunities

Create an opportunity

Create a work opportunity. Financial fields are ACL-gated.

Request body · required
titlestringrequired
descriptionstringoptional
estimatedCostnumberoptional
leadIdstring<uuid>optional
teamIdobjectoptional
workflowIdstring<uuid>optional
initialState"backlog" | "in_progress"optional
categoryIdobjectoptional
objectiveLinksobject[]optional
Show child attributes ›
objectiveIdstring<uuid>required
tagIdsstring<uuid>[]optional
dueDatestring<date>optional
prdTemplateIdobjectoptional
Returns · 201 — Create an opportunity
oktruerequired
dataobjectrequired
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
titlestringrequired
numberintegerrequired
estimatedCostobjectrequired
costEstimatorIdobjectrequired
leadIdobjectrequired
teamIdobjectrequired
workflowIdobjectrequired
status"backlog" | "in_progress" | "completed" | "cancelled"required
cancellationCategoryobjectrequired
cancellationReasonobjectrequired
cancelledAtobjectrequired
cancelledByUserIdobjectrequired
priorityobjectrequired
visionVersionobjectrequired
visionPathobjectrequired
strategyVersionStampobjectrequired
prdobjectrequired
prototypesobjectrequired
aiSynthesisobjectrequired
aiReviewobjectrequired
aiReviewAtobjectrequired
plannedStartobjectrequired
dueDateobjectrequired
isHardDeadlinebooleanrequired
intakeIdobjectrequired
categoryIdobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
POST request
curl -X POST 'https://www.telos-app.com/api/v1/opportunities' \
  -H 'Authorization: Bearer telos_live_…' \
  -H 'Content-Type: application/json' \
  -d '{ … }'
response
{
  "ok": true,
  "data": {
    "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "title": "string",
    "number": 0,
    "estimatedCost": null,
    "costEstimatorId": null,
    "leadId": null,
    "teamId": null,
    "workflowId": null,
    "status": "backlog",
    "cancellationCategory": null,
    "cancellationReason": null,
    "cancelledAt": null,
    "cancelledByUserId": null,
    "priority": null,
    "visionVersion": null,
    "visionPath": null,
    "strategyVersionStamp": null,
    "prd": null,
    "prototypes": null,
    "aiSynthesis": null,
    "aiReview": null,
    "aiReviewAt": null,
    "plannedStart": null,
    "dueDate": null,
    "isHardDeadline": true,
    "intakeId": null,
    "categoryId": null,
    "createdAt": "string",
    "updatedAt": "string"
  },
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
GET/api/v1/opportunities/{id}

Get an opportunity

Parameters
idpath · stringrequired
id path parameter
Returns · 200 — Get an opportunity
oktruerequired
dataobjectrequired
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
titlestringrequired
numberintegerrequired
estimatedCostobjectrequired
costEstimatorIdobjectrequired
leadIdobjectrequired
teamIdobjectrequired
workflowIdobjectrequired
status"backlog" | "in_progress" | "completed" | "cancelled"required
cancellationCategoryobjectrequired
cancellationReasonobjectrequired
cancelledAtobjectrequired
cancelledByUserIdobjectrequired
priorityobjectrequired
visionVersionobjectrequired
visionPathobjectrequired
strategyVersionStampobjectrequired
prdobjectrequired
prototypesobjectrequired
aiSynthesisobjectrequired
aiReviewobjectrequired
aiReviewAtobjectrequired
plannedStartobjectrequired
dueDateobjectrequired
isHardDeadlinebooleanrequired
intakeIdobjectrequired
categoryIdobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
GET request
curl -X GET 'https://www.telos-app.com/api/v1/opportunities/{id}' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": {
    "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "title": "string",
    "number": 0,
    "estimatedCost": null,
    "costEstimatorId": null,
    "leadId": null,
    "teamId": null,
    "workflowId": null,
    "status": "backlog",
    "cancellationCategory": null,
    "cancellationReason": null,
    "cancelledAt": null,
    "cancelledByUserId": null,
    "priority": null,
    "visionVersion": null,
    "visionPath": null,
    "strategyVersionStamp": null,
    "prd": null,
    "prototypes": null,
    "aiSynthesis": null,
    "aiReview": null,
    "aiReviewAt": null,
    "plannedStart": null,
    "dueDate": null,
    "isHardDeadline": true,
    "intakeId": null,
    "categoryId": null,
    "createdAt": "string",
    "updatedAt": "string"
  },
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
PATCH/api/v1/opportunities/{id}

Update an opportunity

Parameters
idpath · stringrequired
id path parameter
Request body · required
titlestringoptional
estimatedCostnumberoptional
leadIdstring<uuid>optional
teamIdobjectoptional
prdobjectoptional
Returns · 200 — Update an opportunity
oktruerequired
dataobjectrequired
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
titlestringrequired
numberintegerrequired
estimatedCostobjectrequired
costEstimatorIdobjectrequired
leadIdobjectrequired
teamIdobjectrequired
workflowIdobjectrequired
status"backlog" | "in_progress" | "completed" | "cancelled"required
cancellationCategoryobjectrequired
cancellationReasonobjectrequired
cancelledAtobjectrequired
cancelledByUserIdobjectrequired
priorityobjectrequired
visionVersionobjectrequired
visionPathobjectrequired
strategyVersionStampobjectrequired
prdobjectrequired
prototypesobjectrequired
aiSynthesisobjectrequired
aiReviewobjectrequired
aiReviewAtobjectrequired
plannedStartobjectrequired
dueDateobjectrequired
isHardDeadlinebooleanrequired
intakeIdobjectrequired
categoryIdobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
PATCH request
curl -X PATCH 'https://www.telos-app.com/api/v1/opportunities/{id}' \
  -H 'Authorization: Bearer telos_live_…' \
  -H 'Content-Type: application/json' \
  -d '{ … }'
response
{
  "ok": true,
  "data": {
    "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "title": "string",
    "number": 0,
    "estimatedCost": null,
    "costEstimatorId": null,
    "leadId": null,
    "teamId": null,
    "workflowId": null,
    "status": "backlog",
    "cancellationCategory": null,
    "cancellationReason": null,
    "cancelledAt": null,
    "cancelledByUserId": null,
    "priority": null,
    "visionVersion": null,
    "visionPath": null,
    "strategyVersionStamp": null,
    "prd": null,
    "prototypes": null,
    "aiSynthesis": null,
    "aiReview": null,
    "aiReviewAt": null,
    "plannedStart": null,
    "dueDate": null,
    "isHardDeadline": true,
    "intakeId": null,
    "categoryId": null,
    "createdAt": "string",
    "updatedAt": "string"
  },
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
DELETE/api/v1/opportunities/{id}

Delete an opportunity

Parameters
idpath · stringrequired
id path parameter
Returns · 200 — Delete an opportunity
oktruerequired
dataobjectrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
DELETE request
curl -X DELETE 'https://www.telos-app.com/api/v1/opportunities/{id}' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": null,
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
GET/api/v1/opportunities/{id}/tasks

List tasks attached to an opportunity

Parameters
idpath · stringrequired
id path parameter
cursorquery · stringoptional
Opaque pagination cursor from a previous response
limitquery · numberoptional
Number of items per page (default 50, max 200)
sortquery · stringoptional
Sort order: field:asc or field:desc
Returns · 200 — List tasks attached to an opportunity
oktruerequired
dataobjectrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
GET request
curl -X GET 'https://www.telos-app.com/api/v1/opportunities/{id}/tasks' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": null,
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
POST/api/v1/opportunities/{id}/link-objective

Link an objective to an opportunity

Parameters
idpath · stringrequired
id path parameter
Request body · required
opportunityIdstring<uuid>required
objectiveIdstring<uuid>required
Returns · 201 — Link an objective to an opportunity
oktruerequired
dataobjectrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
POST request
curl -X POST 'https://www.telos-app.com/api/v1/opportunities/{id}/link-objective' \
  -H 'Authorization: Bearer telos_live_…' \
  -H 'Content-Type: application/json' \
  -d '{ … }'
response
{
  "ok": true,
  "data": null,
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
POST/api/v1/opportunities/{id}/reject-via-workflow

Reject an opportunity and skip remaining workflow steps

Parameters
idpath · stringrequired
id path parameter
Request body · required
opportunityIdstring<uuid>required
category"no_demand" | "not_aligned" | "not_viable" | "not_now" | "duplicate" | "other"required
reasonstringrequired
Returns · 201 — Reject an opportunity and skip remaining workflow steps
oktruerequired
dataobjectrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
POST request
curl -X POST 'https://www.telos-app.com/api/v1/opportunities/{id}/reject-via-workflow' \
  -H 'Authorization: Bearer telos_live_…' \
  -H 'Content-Type: application/json' \
  -d '{ … }'
response
{
  "ok": true,
  "data": null,
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
Resource

Tasks

GET/api/v1/tasks

List tasks

List tasks with cursor pagination.

Parameters
cursorquery · stringoptional
Opaque pagination cursor from a previous response
limitquery · numberoptional
Number of items per page (default 50, max 200)
sortquery · stringoptional
Sort order: field:asc or field:desc
statusquery · stringoptional
priorityquery · stringoptional
opportunityIdquery · string<uuid>optional
Returns · 200 — List tasks
oktruerequired
dataobject[]required
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
opportunityIdobjectrequired
teamIdobjectrequired
ownerUserIdobjectrequired
parentTaskIdobjectrequired
subtaskPositionobjectrequired
handoffPendingFromIdobjectrequired
subtaskMode"standalone" | "sequential"required
workflowIdobjectrequired
categoryIdobjectrequired
titlestringrequired
prefixstringrequired
numberintegerrequired
descriptionobjectrequired
contentobjectrequired
status"backlog" | "todo" | "in_progress" | "completed" | "cancelled" | "duplicate"required
priority"low" | "medium" | "high" | "urgent"required
visionPathobjectrequired
estimateMinutesobjectrequired
phaseInstanceIdobjectrequired
onboardingStepInstanceIdobjectrequired
phaseIdobjectrequired
plannedStartobjectrequired
plannedDurationDaysobjectrequired
dueDateobjectrequired
isHardDeadlinebooleanrequired
queuePositionintegerrequired
intakeIdobjectrequired
createdByUserIdobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
GET request
curl -X GET 'https://www.telos-app.com/api/v1/tasks' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": [
    {
      "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
      "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
      "opportunityId": null,
      "teamId": null,
      "ownerUserId": null,
      "parentTaskId": null,
      "subtaskPosition": null,
      "handoffPendingFromId": null,
      "subtaskMode": "standalone",
      "workflowId": null,
      "categoryId": null,
      "title": "string",
      "prefix": "string",
      "number": 0,
      "description": null,
      "content": null,
      "status": "backlog",
      "priority": "low",
      "visionPath": null,
      "estimateMinutes": null,
      "phaseInstanceId": null,
      "onboardingStepInstanceId": null,
      "phaseId": null,
      "plannedStart": null,
      "plannedDurationDays": null,
      "dueDate": null,
      "isHardDeadline": true,
      "queuePosition": 0,
      "intakeId": null,
      "createdByUserId": null,
      "createdAt": "string",
      "updatedAt": "string"
    }
  ],
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
POST/api/v1/tasks

Create a task

Create a task attached to an opportunity.

Request body · required
titlestringrequired
descriptionstringoptional
contentstringoptional
status"backlog" | "todo" | "in_progress" | "completed" | "cancelled" | "duplicate"optional
priority"low" | "medium" | "high" | "urgent"optional
opportunityIdstring<uuid>optional
teamIdobjectoptional
ownerIdobjectoptional
categoryIdobjectoptional
parentTaskIdstring<uuid>optional
subtaskPositionintegeroptional
subtaskMode"standalone" | "sequential"optional
subtasksobject[]optional
Show child attributes ›
titlestringrequired
ownerIdobjectoptional
positionintegeroptional
dueDatestring<date-time>optional
workflowIdstring<uuid>optional
onboardingStepInstanceIdstring<uuid>optional
estimateMinutesintegeroptional
dueDatestring<date-time>optional
tagIdsstring<uuid>[]optional
Returns · 201 — Create a task
oktruerequired
dataobjectrequired
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
opportunityIdobjectrequired
teamIdobjectrequired
ownerUserIdobjectrequired
parentTaskIdobjectrequired
subtaskPositionobjectrequired
handoffPendingFromIdobjectrequired
subtaskMode"standalone" | "sequential"required
workflowIdobjectrequired
categoryIdobjectrequired
titlestringrequired
prefixstringrequired
numberintegerrequired
descriptionobjectrequired
contentobjectrequired
status"backlog" | "todo" | "in_progress" | "completed" | "cancelled" | "duplicate"required
priority"low" | "medium" | "high" | "urgent"required
visionPathobjectrequired
estimateMinutesobjectrequired
phaseInstanceIdobjectrequired
onboardingStepInstanceIdobjectrequired
phaseIdobjectrequired
plannedStartobjectrequired
plannedDurationDaysobjectrequired
dueDateobjectrequired
isHardDeadlinebooleanrequired
queuePositionintegerrequired
intakeIdobjectrequired
createdByUserIdobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
POST request
curl -X POST 'https://www.telos-app.com/api/v1/tasks' \
  -H 'Authorization: Bearer telos_live_…' \
  -H 'Content-Type: application/json' \
  -d '{ … }'
response
{
  "ok": true,
  "data": {
    "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "opportunityId": null,
    "teamId": null,
    "ownerUserId": null,
    "parentTaskId": null,
    "subtaskPosition": null,
    "handoffPendingFromId": null,
    "subtaskMode": "standalone",
    "workflowId": null,
    "categoryId": null,
    "title": "string",
    "prefix": "string",
    "number": 0,
    "description": null,
    "content": null,
    "status": "backlog",
    "priority": "low",
    "visionPath": null,
    "estimateMinutes": null,
    "phaseInstanceId": null,
    "onboardingStepInstanceId": null,
    "phaseId": null,
    "plannedStart": null,
    "plannedDurationDays": null,
    "dueDate": null,
    "isHardDeadline": true,
    "queuePosition": 0,
    "intakeId": null,
    "createdByUserId": null,
    "createdAt": "string",
    "updatedAt": "string"
  },
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
GET/api/v1/tasks/{id}

Get a task

Parameters
idpath · stringrequired
id path parameter
Returns · 200 — Get a task
oktruerequired
dataobjectrequired
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
opportunityIdobjectrequired
teamIdobjectrequired
ownerUserIdobjectrequired
parentTaskIdobjectrequired
subtaskPositionobjectrequired
handoffPendingFromIdobjectrequired
subtaskMode"standalone" | "sequential"required
workflowIdobjectrequired
categoryIdobjectrequired
titlestringrequired
prefixstringrequired
numberintegerrequired
descriptionobjectrequired
contentobjectrequired
status"backlog" | "todo" | "in_progress" | "completed" | "cancelled" | "duplicate"required
priority"low" | "medium" | "high" | "urgent"required
visionPathobjectrequired
estimateMinutesobjectrequired
phaseInstanceIdobjectrequired
onboardingStepInstanceIdobjectrequired
phaseIdobjectrequired
plannedStartobjectrequired
plannedDurationDaysobjectrequired
dueDateobjectrequired
isHardDeadlinebooleanrequired
queuePositionintegerrequired
intakeIdobjectrequired
createdByUserIdobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
GET request
curl -X GET 'https://www.telos-app.com/api/v1/tasks/{id}' \
  -H 'Authorization: Bearer telos_live_…'
response
{
  "ok": true,
  "data": {
    "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "opportunityId": null,
    "teamId": null,
    "ownerUserId": null,
    "parentTaskId": null,
    "subtaskPosition": null,
    "handoffPendingFromId": null,
    "subtaskMode": "standalone",
    "workflowId": null,
    "categoryId": null,
    "title": "string",
    "prefix": "string",
    "number": 0,
    "description": null,
    "content": null,
    "status": "backlog",
    "priority": "low",
    "visionPath": null,
    "estimateMinutes": null,
    "phaseInstanceId": null,
    "onboardingStepInstanceId": null,
    "phaseId": null,
    "plannedStart": null,
    "plannedDurationDays": null,
    "dueDate": null,
    "isHardDeadline": true,
    "queuePosition": 0,
    "intakeId": null,
    "createdByUserId": null,
    "createdAt": "string",
    "updatedAt": "string"
  },
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}
PATCH/api/v1/tasks/{id}

Update a task

Parameters
idpath · stringrequired
id path parameter
Request body · required
titlestringoptional
descriptionstringoptional
contentobjectoptional
status"backlog" | "todo" | "in_progress" | "completed" | "cancelled" | "duplicate"optional
priority"low" | "medium" | "high" | "urgent"optional
opportunityIdobjectoptional
teamIdobjectoptional
workflowIdstring<uuid>optional
categoryIdobjectoptional
subtaskMode"standalone" | "sequential"optional
estimateMinutesobjectoptional
dueDateobjectoptional
Returns · 200 — Update a task
oktruerequired
dataobjectrequired
Show child attributes ›
idstring<uuid>required
orgIdstring<uuid>required
opportunityIdobjectrequired
teamIdobjectrequired
ownerUserIdobjectrequired
parentTaskIdobjectrequired
subtaskPositionobjectrequired
handoffPendingFromIdobjectrequired
subtaskMode"standalone" | "sequential"required
workflowIdobjectrequired
categoryIdobjectrequired
titlestringrequired
prefixstringrequired
numberintegerrequired
descriptionobjectrequired
contentobjectrequired
status"backlog" | "todo" | "in_progress" | "completed" | "cancelled" | "duplicate"required
priority"low" | "medium" | "high" | "urgent"required
visionPathobjectrequired
estimateMinutesobjectrequired
phaseInstanceIdobjectrequired
onboardingStepInstanceIdobjectrequired
phaseIdobjectrequired
plannedStartobjectrequired
plannedDurationDaysobjectrequired
dueDateobjectrequired
isHardDeadlinebooleanrequired
queuePositionintegerrequired
intakeIdobjectrequired
createdByUserIdobjectrequired
createdAtstringrequired
updatedAtstringrequired
metaobjectrequired
Show child attributes ›
requestIdstring<uuid>required
timestampstring<date-time>required
version"v1"required
idempotencyKeystringoptional
paginationobjectoptional
Show child attributes ›
cursorobjectrequired
hasMorebooleanrequired
linksobjectrequired
actionsobject[]optional
Show child attributes ›
namestringrequired
method"GET" | "POST" | "PATCH" | "DELETE"required
hrefstringrequired
bodyobjectoptional
PATCH request
curl -X PATCH 'https://www.telos-app.com/api/v1/tasks/{id}' \
  -H 'Authorization: Bearer telos_live_…' \
  -H 'Content-Type: application/json' \
  -d '{ … }'
response
{
  "ok": true,
  "data": {
    "id": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "orgId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "opportunityId": null,
    "teamId": null,
    "ownerUserId": null,
    "parentTaskId": null,
    "subtaskPosition": null,
    "handoffPendingFromId": null,
    "subtaskMode": "standalone",
    "workflowId": null,
    "categoryId": null,
    "title": "string",
    "prefix": "string",
    "number": 0,
    "description": null,
    "content": null,
    "status": "backlog",
    "priority": "low",
    "visionPath": null,
    "estimateMinutes": null,
    "phaseInstanceId": null,
    "onboardingStepInstanceId": null,
    "phaseId": null,
    "plannedStart": null,
    "plannedDurationDays": null,
    "dueDate": null,
    "isHardDeadline": true,
    "queuePosition": 0,
    "intakeId": null,
    "createdByUserId": null,
    "createdAt": "string",
    "updatedAt": "string"
  },
  "meta": {
    "requestId": "01J9Z3F4S0Z9KMQ4N6PYZR7C5A",
    "timestamp": "2026-06-26T14:23:11.842Z",
    "version": "v1",
    "idempotencyKey": "string"
  },
  "pagination": {
    "cursor": null,
    "hasMore": true
  },
  "links": {},
  "actions": [
    {
      "name": "string",
      "method": "GET",
      "href": "string",
      "body": {}
    }
  ]
}