---
title: "Validate Llm Scorer Log Record"
method: POST
path: "/scorers/llm/validate/log_record"
tags: ["data", "prompts", "rows"]
---

# Validate Llm Scorer Log Record

`POST /scorers/llm/validate/log_record`

## Request body

- ValidateLLMScorerLogRecordRequest — Request to validate a new LLM scorer based on a log record. This is used to create a new experiment with the copied log records to store the metric testing results.
  - `starting_token` integer
  - `limit` integer
  - `previous_last_row_id` string, uuid4, nullable
  - `log_stream_id` string, uuid4, nullable — Log stream id associated with the traces.
  - `experiment_id` string, uuid4, nullable — Experiment id associated with the traces.
  - `metrics_testing_id` string, uuid4, nullable — Metrics testing id associated with the traces.
  - `filters` union[]
    - union
      - LogRecordsIDFilter
        - `column_id` string, required — ID of the column to filter.
        - `operator` 'eq' | 'ne' | 'one_of' | 'not_in' | 'contains'
        - `value` union, required
          - string, uuid4
          - union[]
            - union
              - …
          - string
        - `type` 'id'
      - LogRecordsDateFilter
        - `column_id` string, required — ID of the column to filter.
        - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte', required
        - `value` string, date-time, required
        - `type` 'date'
      - LogRecordsNumberFilter
        - `column_id` string, required — ID of the column to filter.
        - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'between', required
        - `value` union, required
          - integer
          - number
          - integer[]
          - number[]
        - `type` 'number'
      - LogRecordsBooleanFilter
        - `column_id` string, required — ID of the column to filter.
        - `operator` 'eq' | 'ne'
        - `value` boolean, required
        - `type` 'boolean'
      - LogRecordsCollectionFilter
        - `column_id` string, required — ID of the column to filter.
        - `operator` 'eq' | 'contains' | 'one_of' | 'not_in', required
        - `value` union, required
          - string
          - string[]
        - `case_sensitive` boolean
        - `type` 'collection'
      - LogRecordsTextFilter
        - `column_id` string, required — ID of the column to filter.
        - `operator` 'eq' | 'ne' | 'contains' | 'one_of' | 'not_in', required
        - `value` union, required
          - string
          - string[]
        - `case_sensitive` boolean
        - `type` 'text'
      - LogRecordsFullyAnnotatedFilter — Queue-scoped filter for records rated across all queue templates.
        - `column_id` 'fully_annotated' — Queue-scoped filter identifier. This filter only works for annotation-queue searches that provide queue context.
        - `type` 'fully_annotated'
        - `user_ids` string[], nullable — Optional queue member IDs to require for full annotation in a queue-scoped search. If omitted, all tracked queue members visible to the requester are used.
  - `filter_tree` union
    - FilterLeafAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorType
      - `filter` union, required
        - LogRecordsIDFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'ne' | 'one_of' | 'not_in' | 'contains'
          - `value` union, required
            - string, uuid4
            - union[]
              - …
            - string
          - `type` 'id'
        - LogRecordsDateFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte', required
          - `value` string, date-time, required
          - `type` 'date'
        - LogRecordsNumberFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'between', required
          - `value` union, required
            - integer
            - number
            - integer[]
            - number[]
          - `type` 'number'
        - LogRecordsBooleanFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'ne'
          - `value` boolean, required
          - `type` 'boolean'
        - LogRecordsCollectionFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'contains' | 'one_of' | 'not_in', required
          - `value` union, required
            - string
            - string[]
          - `case_sensitive` boolean
          - `type` 'collection'
        - LogRecordsTextFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'ne' | 'contains' | 'one_of' | 'not_in', required
          - `value` union, required
            - string
            - string[]
          - `case_sensitive` boolean
          - `type` 'text'
        - LogRecordsFullyAnnotatedFilter — Queue-scoped filter for records rated across all queue templates.
          - `column_id` 'fully_annotated' — Queue-scoped filter identifier. This filter only works for annotation-queue searches that provide queue context.
          - `type` 'fully_annotated'
          - `user_ids` string[], nullable — Optional queue member IDs to require for full annotation in a queue-scoped search. If omitted, all tracked queue members visible to the requester are used.
    - AndNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
      - `and` union[], required
        - union
          - FilterLeafAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorType
            - `filter` union, required
              - …
          - AndNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput — recursive
          - OrNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
            - `or` union[], required
              - …
          - NotNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
            - `not` union, required
              - …
    - OrNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
      - `or` union[], required
        - union
          - FilterLeafAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorType
            - `filter` union, required
              - …
          - AndNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
            - `and` union[], required
              - …
          - OrNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput — recursive
          - NotNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
            - `not` union, required
              - …
    - NotNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
      - `not` union, required
        - FilterLeafAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorType
          - `filter` union, required
            - LogRecordsIDFilter
              - …
            - LogRecordsDateFilter
              - …
            - LogRecordsNumberFilter
              - …
            - LogRecordsBooleanFilter
              - …
            - LogRecordsCollectionFilter
              - …
            - LogRecordsTextFilter
              - …
            - LogRecordsFullyAnnotatedFilter — Queue-scoped filter for records rated across all queue templates.
              - …
        - AndNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
          - `and` union[], required
            - union
              - …
        - OrNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
          - `or` union[], required
            - union
              - …
        - NotNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput — recursive
  - `sort` LogRecordsSortClause
    - `column_id` string, required — ID of the column to sort.
    - `ascending` boolean
    - `sort_type` 'column'
  - `truncate_fields` boolean
  - `include_counts` boolean — If True, include computed child counts (e.g., num_traces for sessions, num_spans for traces).
  - `include_code_metric_metadata` boolean — If True, include per-row scorer metadata (the dict returned alongside the score by code-based scorers via the (score, metadata) tuple-return contract) on each MetricSuccess in the response. Off by default to keep payloads small for callers that don't need it.
  - `query` string, required
  - `response` string, required
  - `chain_poll_template` ChainPollTemplate, required — Template for a chainpoll metric prompt, containing all the info necessary to send a chainpoll prompt.
    - `metric_system_prompt` string, nullable — System prompt for the metric.
    - `metric_description` string, nullable — Description of what the metric should do.
    - `value_field_name` string — Field name to look for in the chainpoll response, for the rating.
    - `explanation_field_name` string — Field name to look for in the chainpoll response, for the explanation.
    - `template` string, required — Chainpoll prompt template.
    - `metric_few_shot_examples` FewShotExample[] — Few-shot examples for the metric.
      - `generation_prompt_and_response` string, required
      - `evaluating_response` string, required
    - `response_schema` object, nullable — Response schema for the output
  - `scorer_configuration` GeneratedScorerConfiguration, required
    - `model_alias` string
    - `num_judges` integer
    - `output_type` 'boolean' | 'categorical' | 'count' | 'discrete' | 'freeform' | 'percentage' | 'multilabel' | 'retrieved_chunk_list_boolean' | 'boolean_multilabel' — Enumeration of output types.
    - `scoreable_node_types` string[] — Types of nodes that can be scored by this scorer.
    - `cot_enabled` boolean — Whether chain of thought is enabled for this scorer.
    - `ground_truth` boolean — Whether ground truth is enabled for this scorer.
    - `multimodal_capabilities` MultimodalCapability[], nullable — Multimodal capabilities required by this scorer.
  - `normalized_input` union[], nullable — Optional multimodal content parts. When set, replaces the text-only query/response formatting in the validation job so that file content is passed through to the LLM.
    - union
      - TextContentPart — A text segment within a message.
        - `type` 'text'
        - `text` string, required
      - FileContentPart — Reference to a file associated with this message. The file_id can be resolved via the ``files`` dict returned on trace/span detail responses, which contains metadata such as modality, MIME type, and a presigned download URL.
        - `type` 'file'
        - `file_id` string, uuid4, required
  - `user_prompt` string, required

## Response `200`

Successful Response

- ValidateLLMScorerLogRecordResponse
  - `metrics_experiment_id` string, uuid4, required
  - `project_id` string, uuid4, required

## Other responses

- `422` — Validation Error

## Changes

- **2026-07-26** `05003e7835a2` — 1 info
  - the endpoint scheme security `ClassicAPIKeyHeader` was added to the API

[Change history](https://skmtc.dev/galileo/apis/galileo-api-server/changes/scorers/llm/validate/log_record/post.md)

---

[API](https://skmtc.dev/galileo/apis/galileo-api-server.md) · [All operations](https://skmtc.dev/galileo/apis/galileo-api-server/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/galileo/galileo-api-server/revisions/8b1d1a4a933e/schema)
