# Feedback ## List feedback for an agent `$ cadenya agents:feedback list` **get** `/v1/workspaces/{workspaceId}/agents/{agentId}/feedback` Lists feedback submitted across all objectives belonging to an agent. Supports search by comment, sentiment filter, agent variation filter, and creation date range. Results are ordered by creation time, newest first. ### Parameters - `--workspace-id: string` - `--agent-id: string` The ID of the agent. Supports "external_id:" prefix for external IDs. - `--agent-variation-id: optional string` Optional filter to limit results to feedback on objectives run by a single agent variation. Supports "external_id:" prefix for external IDs. - `--created-after: optional string` Inclusive lower bound on feedback creation time. - `--created-before: optional string` Exclusive upper bound on feedback creation time. - `--cursor: optional string` Pagination cursor from previous response. - `--include-info: optional boolean` When set to true you may use more of your alloted API rate-limit - `--limit: optional number` Maximum number of results to return. - `--query: optional string` Free-text search applied to the feedback comment. Case-insensitive substring match. - `--sentiment: optional "FEEDBACK_SENTIMENT_UNSPECIFIED" or "FEEDBACK_SENTIMENT_POSITIVE" or "FEEDBACK_SENTIMENT_NEGATIVE"` Filter by sentiment. UNSPECIFIED returns feedback regardless of score. ### Returns - `ListAgentFeedbackResponse: object { items, pagination }` Response for listing feedback across an agent. - `items: optional array of ObjectiveFeedback` - `data: object { comment, score }` - `comment: optional string` Optional human-readable comment explaining the feedback - `score: optional number` A score between -1.0 and 1.0 representing the quality of the objective's execution. -1.0 is the worst possible score, 0.0 is neutral, and 1.0 is the best. - `metadata: object { id, accountId, createdAt, 4 more }` Metadata for ephemeral operations and activities (e.g., objectives, executions, runs) - `id: string` Unique identifier for the operation (prefixed ULID, e.g., "obj_01HXK...") - `accountId: string` Account this operation belongs to for multi-tenant isolation (prefixed ULID) - `createdAt: string` Timestamp when this operation was created ULID includes timestamp information, but this explicit field enables easier querying - `profileId: string` ID of the actor (user or service account) that created this operation - `workspaceId: string` Workspace this operation belongs to for organizational grouping (prefixed ULID) - `externalId: optional string` External ID for the operation (e.g., a workflow ID from an external system) - `labels: optional map[string]` Arbitrary key-value pairs for categorization and filtering Examples: {"priority": "high", "source": "api", "workflow": "onboarding"} - `info: optional object { agentVariation, objective, submittedBy }` - `agentVariation: optional object { id, name }` BareMetadata contains the minimal metadata for a resource: the ID and an optional human-readable name. These are used for reference fields where the full metadata (account scoping, timestamps, labels, external IDs) is not needed — e.g., the tool references inside an agent variation spec or the tools assigned to an objective. Both fields are server-populated; clients provide IDs through sibling fields rather than by constructing a BareMetadata themselves. - `id: optional string` - `name: optional string` Human-readable name of the referenced resource, populated by the server on reads for convenience. Absent on references to resources that do not have a name (e.g., objective tasks). - `objective: optional object { id, name }` BareMetadata contains the minimal metadata for a resource: the ID and an optional human-readable name. These are used for reference fields where the full metadata (account scoping, timestamps, labels, external IDs) is not needed — e.g., the tool references inside an agent variation spec or the tools assigned to an objective. Both fields are server-populated; clients provide IDs through sibling fields rather than by constructing a BareMetadata themselves. - `id: optional string` - `name: optional string` Human-readable name of the referenced resource, populated by the server on reads for convenience. Absent on references to resources that do not have a name (e.g., objective tasks). - `submittedBy: optional object { metadata, spec }` A profile identifies a user or non-human principal (such as an API key) at the account level. Profiles are account-scoped and can be granted access to multiple workspaces. - `metadata: object { id, accountId, name, 3 more }` AccountResourceMetadata is used to represent a resource that is associated to an account but not to a workspace. - `id: string` Unique identifier for the resource (prefixed ULID, e.g., "apikey_01HXK...") - `accountId: string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `profileId: string` - `externalId: optional string` External ID for the resource (e.g., a workflow ID from an external system) - `labels: optional map[string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: object { type, email, name }` Configuration for a profile. - `type: "PROFILE_TYPE_UNSPECIFIED" or "PROFILE_TYPE_USER" or "PROFILE_TYPE_API_KEY" or "PROFILE_TYPE_SYSTEM"` Whether this profile represents a human user, an API key, or a system principal. - `"PROFILE_TYPE_UNSPECIFIED"` - `"PROFILE_TYPE_USER"` - `"PROFILE_TYPE_API_KEY"` - `"PROFILE_TYPE_SYSTEM"` - `email: optional string` Email address of the profile. Required and unique within an account for user profiles. - `name: optional string` Display name (e.g., "Bobby Tables"). - `pagination: optional object { nextCursor, total }` - `nextCursor: optional string` - `total: optional number` ### Example ```cli cadenya agents:feedback list \ --api-key 'My API Key' \ --workspace-id workspaceId \ --agent-id agentId ``` #### Response ```json { "items": [ { "data": { "comment": "comment", "score": 0 }, "metadata": { "id": "id", "accountId": "accountId", "createdAt": "2019-12-27T18:11:19.117Z", "profileId": "profileId", "workspaceId": "workspaceId", "externalId": "externalId", "labels": { "foo": "string" } }, "info": { "agentVariation": { "id": "id", "name": "name" }, "objective": { "id": "id", "name": "name" }, "submittedBy": { "metadata": { "id": "id", "accountId": "accountId", "name": "name", "profileId": "profileId", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "type": "PROFILE_TYPE_UNSPECIFIED", "email": "email", "name": "name" } } } } ], "pagination": { "nextCursor": "nextCursor", "total": 0 } } ```