POST /v1/metering/operations/{operation_id}/evidence:batch-report
BatchReportEvidence amortizes transport and authentication overhead while preserving an acknowledgement per idempotent evidence item. Every item is constrained to the same root Operation and execution delegation.
The server validates credentials, tenant, environment and permissions. This page does not send requests. Replace example values; deployed server validation remains authoritative.
Parameters
operation_idpath · string · required
Request body
compact_acknowledgementsbooleanSuccessful batches may omit per-item acknowledgements. Counts remain authoritative; any item failure forces the full acknowledgement list.
itemsarrayExpand fields
event_keystringStable key used by the caller to correlate an acknowledgement. For usage this should be source_event_id; for a Span it should include span_id and sequence_no.
spanobjectExpand fields
attributes_jsonstringcontent_capturestringended_atstringentry_pointstringerror_codestringerror_messagestringerror_typestringinput_digeststringinput_previewstringkindstringlinksarrayExpand fields
attributes_jsonstringrelationstringspan_idstringtrace_idstring
namestringoperation_idstringoutput_digeststringoutput_previewstringparent_span_idstringsequence_nostringspan_idstringspan_keystringstarted_atstringstatusstringtrace_idstring
usageobjectExpand fields
attempt_idstringcumulative_quantitystringdimensions_jsonstringmeter_codestringobserved_atstringoperation_idstringsequence_nostringsource_event_idstringstagestring
operation_idstring
cURL
curl --request POST 'https://nexus-api.rainlib.com/v1/metering/operations/{operation_id}/evidence:batch-report' \
--header 'Authorization: Bearer <NEXUS_ACCESS_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"compact_acknowledgements": false,
"items": [
{
"event_key": "<value>",
"span": {
"attributes_json": "<value>",
"content_capture": "<value>",
"ended_at": "<value>",
"entry_point": "<value>",
"error_code": "<value>",
"error_message": "<value>",
"error_type": "<value>",
"input_digest": "<value>",
"input_preview": "<value>",
"kind": "<value>",
"links": [
{}
],
"name": "<value>",
"operation_id": "<value>",
"output_digest": "<value>",
"output_preview": "<value>",
"parent_span_id": "<value>",
"sequence_no": "<value>",
"span_id": "<value>",
"span_key": "<value>",
"started_at": "<value>",
"status": "<value>",
"trace_id": "<value>"
},
"usage": {
"attempt_id": "<value>",
"cumulative_quantity": "<value>",
"dimensions_json": "<value>",
"meter_code": "<value>",
"observed_at": "<value>",
"operation_id": "<value>",
"sequence_no": "<value>",
"source_event_id": "<value>",
"stage": "<value>"
}
}
]
}'Response contract
200 · OK
accepted_countinteger · int32acknowledgementsarrayExpand fields
acceptedbooleanduplicatebooleanerror_codestringevent_keystringevidence_idstringmessagestringretryableboolean
acknowledgements_compactedbooleanduplicate_countinteger · int32failed_countinteger · int32
Generated responses do not enumerate every runtime error. See the integration guide for authentication, conflicts and retries.