Agent/API reference
Canonical workspace-scoped Agent/API v1 operations and schemas.
Canonical contract
This reference is rendered from docs/api/agent-api-v1.openapi.yaml. Money is
represented as two-decimal strings, dates are YYYY-MM-DD, timestamps are
UTC, and RecurLens never converts currencies. It is documentation only — there
is no live Send button, and a request still needs your own workspace token.
Download the canonical OpenAPI YAML for client generation or offline validation.
New to the API? Complete the Agent/API quickstart
before using the schemas below. Preserve the response requestId, treat cursors
as opaque, and only retry when error.retryable is true.
/workspaces/{workspaceId}/agent-clients/tokensAuthorization
UserSession In: header
Path Parameters
uuidResponse Body
application/json
application/json
curl -X GET "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-clients/tokens"{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "name": "string", "tokenPrefix": "string", "scopes": [ "subscriptions:read" ], "expiresAt": "2019-08-24T14:15:22Z", "lastUsedAt": "2019-08-24T14:15:22Z", "revokedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z" } ]}/workspaces/{workspaceId}/agent-clients/tokensAuthorization
UserSession In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-clients/tokens" \ -H "Content-Type: application/json" \ -d '{ "name": "string", "expiresAt": "2019-08-24T14:15:22Z", "scopes": [ "subscriptions:read" ] }'{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": { "token": "string", "tokenMetadata": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "name": "string", "tokenPrefix": "string", "scopes": [ "subscriptions:read" ], "expiresAt": "2019-08-24T14:15:22Z", "lastUsedAt": "2019-08-24T14:15:22Z", "revokedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z" } }}/workspaces/{workspaceId}/agent-clients/tokens/{tokenId}/revokeAuthorization
UserSession In: header
Path Parameters
uuiduuidResponse Body
application/json
application/json
curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-clients/tokens/497f6eca-6276-4993-bfeb-53cbbbba6f08/revoke"{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": {}}/workspaces/{workspaceId}/agent-tools/list_subscriptionsAuthorization
AgentToken User-bound, one-workspace token with a maximum 90-day lifetime.
In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/list_subscriptions" \ -H "Content-Type: application/json" \ -d '{}'{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "cost": { "amount": "1499.00", "currency": "INR" }, "billingCycle": "monthly", "renewalDate": "2019-08-24", "status": "active", "version": 0, "category": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "owner": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "displayName": "string" }, "contractEndDate": "2019-08-24", "noticePeriodDays": 0, "reviewReasons": [ { "code": "PAST_RENEWAL_DATE", "relevantDate": "2019-08-24" } ] } ]}/workspaces/{workspaceId}/agent-tools/list_purchasesAuthorization
AgentToken User-bound, one-workspace token with a maximum 90-day lifetime.
In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/list_purchases" \ -H "Content-Type: application/json" \ -d '{}'{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "cost": { "amount": "1499.00", "currency": "INR" }, "purchaseDate": "2019-08-24", "status": "completed", "version": 0, "category": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "owner": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "displayName": "string" }, "vendorContact": "string" } ]}/workspaces/{workspaceId}/agent-tools/upcoming_renewalsAuthorization
AgentToken User-bound, one-workspace token with a maximum 90-day lifetime.
In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/upcoming_renewals" \ -H "Content-Type: application/json" \ -d '{}'{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": { "rangeStart": "2019-08-24", "rangeEnd": "2019-08-24", "renewals": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "cost": { "amount": "1499.00", "currency": "INR" }, "billingCycle": "monthly", "renewalDate": "2019-08-24", "status": "active", "version": 0, "category": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "owner": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "displayName": "string" }, "contractEndDate": "2019-08-24", "noticePeriodDays": 0, "reviewReasons": [ { "code": "PAST_RENEWAL_DATE", "relevantDate": "2019-08-24" } ], "daysUntilRenewal": 0 } ] }}/workspaces/{workspaceId}/agent-tools/summarize_recurring_spendAuthorization
AgentToken User-bound, one-workspace token with a maximum 90-day lifetime.
In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/summarize_recurring_spend" \ -H "Content-Type: application/json" \ -d '{}'{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": [ { "groupKey": "string", "currency": "INR", "subscriptionCount": 0, "monthlyEstimate": "1499.00", "annualEstimate": "1499.00" } ]}/workspaces/{workspaceId}/agent-tools/find_duplicate_spendAuthorization
AgentToken User-bound, one-workspace token with a maximum 90-day lifetime.
In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/find_duplicate_spend" \ -H "Content-Type: application/json" \ -d '{}'{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": [ { "normalizedName": "string", "currency": "INR", "matchReasons": [ "NORMALIZED_NAME", "CURRENCY" ], "subscriptions": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "cost": { "amount": "1499.00", "currency": "INR" }, "billingCycle": "monthly", "renewalDate": "2019-08-24", "status": "active", "version": 0, "category": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "owner": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "displayName": "string" }, "contractEndDate": "2019-08-24", "noticePeriodDays": 0, "reviewReasons": [ { "code": "PAST_RENEWAL_DATE", "relevantDate": "2019-08-24" } ] }, { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "cost": { "amount": "1499.00", "currency": "INR" }, "billingCycle": "monthly", "renewalDate": "2019-08-24", "status": "active", "version": 0, "category": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "owner": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "displayName": "string" }, "contractEndDate": "2019-08-24", "noticePeriodDays": 0, "reviewReasons": [ { "code": "PAST_RENEWAL_DATE", "relevantDate": "2019-08-24" } ] } ] } ]}/workspaces/{workspaceId}/agent-tools/budget_statusAuthorization
AgentToken User-bound, one-workspace token with a maximum 90-day lifetime.
In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/budget_status" \ -H "Content-Type: application/json" \ -d '{}'{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": [ { "scope": "workspace", "availability": "configured", "categoryId": "337f5e5d-288b-40d5-be14-901cc3acacc0", "categoryName": "string", "threshold": { "amount": "1499.00", "currency": "INR" }, "currentMonthlySpend": { "amount": "1499.00", "currency": "INR" }, "remaining": { "amount": "1499.00", "currency": "INR" }, "percentageUsed": "string", "status": "within_budget" } ]}/workspaces/{workspaceId}/agent-tools/create_subscriptionAuthorization
AgentToken User-bound, one-workspace token with a maximum 90-day lifetime.
In: header
Path Parameters
uuidHeader Parameters
16 <= length <= 128Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/create_subscription" \ -H "Idempotency-Key: stringstringstri" \ -H "Content-Type: application/json" \ -d '{ "name": "string", "cost": "1499.00", "currency": "INR", "billingCycle": "monthly", "renewalDate": "2019-08-24" }'{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "action": "create_subscription", "status": "pending", "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c", "approvalUrl": "../dictionary", "expiresAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "targetSubscriptionId": "2451bc8b-181f-4518-a618-33c757eafc4b", "executedSubscriptionId": "ed8020f3-2d58-4de1-bcd6-799ea45b8a40" }}/workspaces/{workspaceId}/agent-tools/update_subscriptionAuthorization
AgentToken User-bound, one-workspace token with a maximum 90-day lifetime.
In: header
Path Parameters
uuidHeader Parameters
16 <= length <= 128Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/update_subscription" \ -H "Idempotency-Key: stringstringstri" \ -H "Content-Type: application/json" \ -d '{ "subscriptionId": "d079718b-ff63-45dd-947b-4950c023750f", "expectedVersion": 0, "changes": {} }'{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "action": "create_subscription", "status": "pending", "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c", "approvalUrl": "../dictionary", "expiresAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "targetSubscriptionId": "2451bc8b-181f-4518-a618-33c757eafc4b", "executedSubscriptionId": "ed8020f3-2d58-4de1-bcd6-799ea45b8a40" }}/workspaces/{workspaceId}/agent-tools/create_purchaseAuthorization
AgentToken User-bound, one-workspace token with a maximum 90-day lifetime.
In: header
Path Parameters
uuidHeader Parameters
16 <= length <= 128Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/create_purchase" \ -H "Idempotency-Key: stringstringstri" \ -H "Content-Type: application/json" \ -d '{}'{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "action": "create_subscription", "status": "pending", "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c", "approvalUrl": "../dictionary", "expiresAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "targetSubscriptionId": "2451bc8b-181f-4518-a618-33c757eafc4b", "executedSubscriptionId": "ed8020f3-2d58-4de1-bcd6-799ea45b8a40" }}/workspaces/{workspaceId}/agent-tools/update_purchaseAuthorization
AgentToken User-bound, one-workspace token with a maximum 90-day lifetime.
In: header
Path Parameters
uuidHeader Parameters
16 <= length <= 128Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-tools/update_purchase" \ -H "Idempotency-Key: stringstringstri" \ -H "Content-Type: application/json" \ -d '{ "purchaseId": "e9b59bb6-ba5b-48ce-918b-5f842e450f10", "expectedVersion": 0, "changes": {} }'{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "action": "create_subscription", "status": "pending", "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c", "approvalUrl": "../dictionary", "expiresAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "targetSubscriptionId": "2451bc8b-181f-4518-a618-33c757eafc4b", "executedSubscriptionId": "ed8020f3-2d58-4de1-bcd6-799ea45b8a40" }}/workspaces/{workspaceId}/agent-proposals/{proposalId}Authorization
AgentToken User-bound, one-workspace token with a maximum 90-day lifetime.
In: header
Path Parameters
uuiduuidResponse Body
application/json
application/json
curl -X GET "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-proposals/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "action": "create_subscription", "status": "pending", "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c", "approvalUrl": "../dictionary", "expiresAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "targetSubscriptionId": "2451bc8b-181f-4518-a618-33c757eafc4b", "executedSubscriptionId": "ed8020f3-2d58-4de1-bcd6-799ea45b8a40" }}/workspaces/{workspaceId}/agent-proposals/{proposalId}/reviewAuthorization
UserSession In: header
Path Parameters
uuiduuidResponse Body
application/json
application/json
curl -X GET "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-proposals/497f6eca-6276-4993-bfeb-53cbbbba6f08/review"{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "action": "create_subscription", "status": "pending", "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c", "approvalUrl": "../dictionary", "expiresAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "targetSubscriptionId": "2451bc8b-181f-4518-a618-33c757eafc4b", "executedSubscriptionId": "ed8020f3-2d58-4de1-bcd6-799ea45b8a40", "fieldDiff": [ { "field": "string", "currentValue": null, "proposedValue": null } ], "budgetImpact": [ { "groupKey": "string", "currency": "INR", "subscriptionCount": 0, "monthlyEstimate": "1499.00", "annualEstimate": "1499.00" } ] }}/workspaces/{workspaceId}/agent-proposals/{proposalId}/reviewAuthorization
UserSession In: header
Path Parameters
uuiduuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/agent-proposals/497f6eca-6276-4993-bfeb-53cbbbba6f08/review" \ -H "Content-Type: application/json" \ -d '{ "decision": "confirm" }'{ "success": true, "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6", "meta": { "apiVersion": "v1", "timezone": "UTC", "hasMore": true, "nextCursor": "string", "assumptions": [ "string" ] }, "error": null, "data": { "proposal": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "action": "create_subscription", "status": "pending", "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c", "approvalUrl": "../dictionary", "expiresAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "targetSubscriptionId": "2451bc8b-181f-4518-a618-33c757eafc4b", "executedSubscriptionId": "ed8020f3-2d58-4de1-bcd6-799ea45b8a40" }, "subscription": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "cost": { "amount": "1499.00", "currency": "INR" }, "billingCycle": "monthly", "renewalDate": "2019-08-24", "status": "active", "version": 0, "category": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "owner": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "displayName": "string" }, "contractEndDate": "2019-08-24", "noticePeriodDays": 0, "reviewReasons": [ { "code": "PAST_RENEWAL_DATE", "relevantDate": "2019-08-24" } ] }, "purchase": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "cost": { "amount": "1499.00", "currency": "INR" }, "purchaseDate": "2019-08-24", "status": "completed", "version": 0, "category": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "owner": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "displayName": "string" }, "vendorContact": "string" } }}