Skip to content
Get started

List feedback for an agent

client.Agents.Feedback.List(ctx, workspaceID, agentID, query) (*CursorPagination[ObjectiveFeedback], error)
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.

ParametersExpand Collapse
workspaceID string
agentID string
query AgentFeedbackListParams
AgentVariationID param.Field[string]Optional

Optional filter to limit results to feedback on objectives run by a single agent variation. Supports “external_id:” prefix for external IDs.

CreatedAfter param.Field[Time]Optional

Inclusive lower bound on feedback creation time.

formatdate-time
CreatedBefore param.Field[Time]Optional

Exclusive upper bound on feedback creation time.

formatdate-time
Cursor param.Field[string]Optional

Pagination cursor from previous response.

IncludeInfo param.Field[bool]Optional

When set to true you may use more of your alloted API rate-limit

Limit param.Field[int64]Optional

Maximum number of results to return.

formatint32
Query param.Field[string]Optional

Free-text search applied to the feedback comment. Case-insensitive substring match.

Sentiment param.Field[AgentFeedbackListParamsSentiment]Optional

Filter by sentiment. UNSPECIFIED returns feedback regardless of score.

formatenum
const AgentFeedbackListParamsSentimentFeedbackSentimentUnspecified AgentFeedbackListParamsSentiment = "FEEDBACK_SENTIMENT_UNSPECIFIED"
const AgentFeedbackListParamsSentimentFeedbackSentimentPositive AgentFeedbackListParamsSentiment = "FEEDBACK_SENTIMENT_POSITIVE"
const AgentFeedbackListParamsSentimentFeedbackSentimentNegative AgentFeedbackListParamsSentiment = "FEEDBACK_SENTIMENT_NEGATIVE"
ReturnsExpand Collapse
type ObjectiveFeedback struct{…}

ObjectiveFeedback represents feedback submitted for an objective’s execution. Feedback is used to score agent variations and improve agent performance over time.

Comment stringOptional

Optional human-readable comment explaining the feedback

Score float64Optional

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.

formatfloat

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 Time

Timestamp when this operation was created ULID includes timestamp information, but this explicit field enables easier querying

formatdate-time
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 stringOptional

External ID for the operation (e.g., a workflow ID from an external system)

Labels map[string, string]Optional

Arbitrary key-value pairs for categorization and filtering Examples: {“priority”: “high”, “source”: “api”, “workflow”: “onboarding”}

AgentVariation BareMetadataOptional

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 stringOptional
Name stringOptional

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 BareMetadataOptional

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 stringOptional
Name stringOptional

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 ProfileOptional

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.

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 stringOptional

External ID for the resource (e.g., a workflow ID from an external system)

Labels map[string, string]Optional

Arbitrary key-value pairs for categorization and filtering Examples: {“environment”: “production”, “team”: “platform”, “version”: “v2”}

Configuration for a profile.

Type ProfileSpecType

Whether this profile represents a human user, an API key, or a system principal.

formatenum
One of the following:
const ProfileSpecTypeProfileTypeUnspecified ProfileSpecType = "PROFILE_TYPE_UNSPECIFIED"
const ProfileSpecTypeProfileTypeUser ProfileSpecType = "PROFILE_TYPE_USER"
const ProfileSpecTypeProfileTypeAPIKey ProfileSpecType = "PROFILE_TYPE_API_KEY"
const ProfileSpecTypeProfileTypeSystem ProfileSpecType = "PROFILE_TYPE_SYSTEM"
Email stringOptional

Email address of the profile. Required and unique within an account for user profiles.

Name stringOptional

Display name (e.g., “Bobby Tables”).

List feedback for an agent

package main

import (
  "context"
  "fmt"

  "github.com/cadenya/cadenya-go"
  "github.com/cadenya/cadenya-go/option"
)

func main() {
  client := cadenya.NewClient(
    option.WithAPIKey("My API Key"),
  )
  page, err := client.Agents.Feedback.List(
    context.TODO(),
    "workspaceId",
    "agentId",
    cadenya.AgentFeedbackListParams{

    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", page)
}
{
  "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
  }
}
Returns Examples
{
  "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
  }
}