Skip to content
Get started

Submit feedback for an objective

client.Objectives.Feedback.New(ctx, objectiveID, body) (*ObjectiveFeedback, error)
POST/v1/objectives/{objectiveId}/feedback

Submits feedback for an objective's execution. Feedback scores are used by the agent variation scoring system to evaluate and rank variation performance.

ParametersExpand Collapse
objectiveID string
body ObjectiveFeedbackNewParams
Data param.Field[ObjectiveFeedbackData]
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.

Attributes map[string, string]optional

Arbitrary key-value pairs to identify the source of the feedback. Since the submitting profile is typically an API key, use this to pass through application-specific identifiers (e.g., {"user_id": "usr_123", "session_id": "abc"}).

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 BareMetadata

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

Profile represents a human user at the account level. Profiles are account-scoped resources that can be associated with multiple workspaces through the Actor model. Authentication for profiles is handled via SSO/OAuth (WorkOS).

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"}

ProfileSpec contains the profile-specific fields

Type ProfileSpecType

Type is the type of profile. User's are humans, API keys are computers. You know the deal.

formatenum
One of the following:
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 user (required, unique per account)

Name stringoptional

Display name for the user (e.g., "Bobby Tables")

Submit feedback for an objective

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"),
  )
  objectiveFeedback, err := client.Objectives.Feedback.New(
    context.TODO(),
    "objectiveId",
    cadenya.ObjectiveFeedbackNewParams{
      Data: cadenya.F(cadenya.ObjectiveFeedbackDataParam{

      }),
    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", objectiveFeedback.Data)
}
{
  "data": {
    "attributes": {
      "foo": "string"
    },
    "comment": "comment",
    "score": 0
  },
  "metadata": {
    "id": "id",
    "name": "name"
  },
  "info": {
    "submittedBy": {
      "metadata": {
        "id": "id",
        "accountId": "accountId",
        "name": "name",
        "profileId": "profileId",
        "externalId": "externalId",
        "labels": {
          "foo": "string"
        }
      },
      "spec": {
        "type": "PROFILE_TYPE_USER",
        "email": "email",
        "name": "name"
      }
    }
  }
}
Returns Examples
{
  "data": {
    "attributes": {
      "foo": "string"
    },
    "comment": "comment",
    "score": 0
  },
  "metadata": {
    "id": "id",
    "name": "name"
  },
  "info": {
    "submittedBy": {
      "metadata": {
        "id": "id",
        "accountId": "accountId",
        "name": "name",
        "profileId": "profileId",
        "externalId": "externalId",
        "labels": {
          "foo": "string"
        }
      },
      "spec": {
        "type": "PROFILE_TYPE_USER",
        "email": "email",
        "name": "name"
      }
    }
  }
}