Publish metrics
Record many metric values against one session in a single call.
Answers 201 once the request has been processed, even when the platform refused every value: the
response carries one element per submitted metric, in request order, holding either the metric it
recorded or the error that refused it. A caller on an API version before 2026-10-05 gets the older
shape instead, a succeeded list of stored records beside a failed list of named errors.
Three cases are settled before anything is recorded: a session that does not exist in this org answers
404, a malformed request answers 400, and so does one that omits device_id for a session without
exactly one device attached, since there is then no single attached device to record the values against.
A publication that runs out of time answers 504, under RobotoServiceTimeoutException when the
invocation’s own deadline expired and RobotoOperationTimeoutException when a statement’s budget did.
Either one rolls the publication back, the definitions it created along with the values.
Access control
- requires_resource_owner
- Restricted tokens need the API scope
api.everything_else
/v1/metricsAuthorizationBearer token · headerrequiredX-Roboto-Org-IdstringX-Roboto-User-Idstringapplication/jsonsession_idstringrequireddevice_idstring | nullShow propertiesHide properties
nullstringnullmetricsMetricEntry[]requiredShow propertiesHide properties
MetricEntrynamestringrequiredvaluenumberrequiredCREATED
dataobjectrequiredShow propertiesHide properties
responsesBatchResponseElement_MetricRecord_[]requiredShow propertiesHide properties
BatchResponseElement_MetricRecord_dataMetricRecord | nullShow propertiesHide properties
org_idstringrequiredmetric_idstringrequirednamestringrequiredsession_idstringrequiredmin_timestamp_nsinteger | nullShow propertiesHide properties
integernullmax_timestamp_nsinteger | nullShow propertiesHide properties
integernullvaluenumberrequiredunitstring | nullShow propertiesHide properties
stringnulldevice_idstring | nullShow propertiesHide properties
stringnullinvocation_idstring | nullShow propertiesHide properties
stringnullgroup_keystring | nullShow propertiesHide properties
stringnullpublished_bystringrequiredpublishedstring<date-time>requirednullerroranyThrown when the conversation context (messages, system prompt, tool results) exceeds the model's context window limit.
The token estimate and the model's context limit are not carried on the exception, so a caller cannot read usage numbers off it.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown when authentication fails
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown if an operation would exceed a user or org level limit.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown if a user is attempting to perform an action unrecognized by the Roboto platform.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown if there is a conflict between a resource you're creating and another existing resource
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown if a resource is missing or expired.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullAn error the platform reported that this SDK release cannot resolve to a specific exception class.
Reported for an element of a :py:class:~roboto.http.BatchResponse whose error names a code this release
defines no class for, or that arrived without a code, without a message, or as text that is not an
error envelope at all. It carries whatever code and message the platform sent, so a caller handling the
failure still learns what went wrong; when no message could be read, the message is the error's raw text.
The error envelope carries no status code, so http_status_code reports the 500 inherited from
:py:class:RobotoDomainException rather than the status the failure actually had.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown by shimmed out APIs which have not yet been implemented
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown when a service is unavailable, such as when it's under heavy load and can't accept new requests. This is expected to be transient and ought to be retried.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown when the service times out while processing a request. This is exepcted to be transient and ought to be retried.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | nullThrown when the server cannot complete the request because the response payload exceeds a storage or transport capacity limit (e.g., Lambda response size). This is NOT expected to be transient and should NOT be retried.
errorobjectShow propertiesHide properties
error_codenumbermessagestringstack_tracestring | null