openapi: 3.1.0 info: title: API Reference agent pods > metrics API version: 1.0.0 servers: - url: https://api.agentmail.to description: prod - url: https://x402.api.agentmail.to description: prod-x402 - url: https://mpp.api.agentmail.to description: prod-mpp - url: https://api.agentmail.eu description: eu-prod tags: - name: pods > metrics paths: /v0/pods/{pod_id}/metrics/events: get: operationId: query-events summary: Query Events description: 'Counts of email events (sent, delivered, bounced, etc.) over time for the pod. Defaults to the last 24 hours; `start` must be within the last 90 days, and a future `end` is clamped to now. Omit `period` for individual event counts, or set it to sum counts into buckets of that many seconds. **CLI:** ```bash agentmail pods:metrics query --pod-id ```' tags: - pods > metrics parameters: - name: pod_id in: path required: true schema: $ref: '#/components/schemas/type_pods:PodId' - name: event_types in: query required: false schema: $ref: '#/components/schemas/type_metrics:MetricEventTypes' - name: start in: query required: false schema: $ref: '#/components/schemas/type_metrics:Start' - name: end in: query required: false schema: $ref: '#/components/schemas/type_metrics:End' - name: period in: query required: false schema: $ref: '#/components/schemas/type_metrics:Period' - name: limit in: query required: false schema: $ref: '#/components/schemas/type_metrics:MetricLimit' - name: descending in: query required: false schema: $ref: '#/components/schemas/type_metrics:Descending' - name: Authorization in: header description: Bearer authentication required: true schema: type: string responses: '200': description: Response with status 200 content: application/json: schema: $ref: '#/components/schemas/type_metrics:QueryMetricsResponse' '400': description: Error response with status 400 content: application/json: schema: $ref: '#/components/schemas/type_:ValidationErrorResponse' /v0/pods/{pod_id}/metrics/usage: get: operationId: query-usage summary: Query Usage description: 'Cumulative usage series for the pod. Each point is the running total of the usage type at that timestamp, not the change within the bucket. Pod-scoped queries carry every usage type except `pod_count`; requested types that don''t apply to the scope are ignored. Defaults to the last 24 hours; `start` must be within the last 90 days, and a future `end` is clamped to now. The range divided by `period` must not exceed 1000 buckets.' tags: - pods > metrics parameters: - name: pod_id in: path required: true schema: $ref: '#/components/schemas/type_pods:PodId' - name: usage_types in: query required: false schema: $ref: '#/components/schemas/type_metrics:UsageTypes' - name: start in: query required: false schema: $ref: '#/components/schemas/type_metrics:Start' - name: end in: query required: false schema: $ref: '#/components/schemas/type_metrics:End' - name: period in: query required: false schema: $ref: '#/components/schemas/type_metrics:Period' - name: limit in: query required: false schema: $ref: '#/components/schemas/type_metrics:MetricLimit' - name: descending in: query required: false schema: $ref: '#/components/schemas/type_metrics:Descending' - name: Authorization in: header description: Bearer authentication required: true schema: type: string responses: '200': description: Response with status 200 content: application/json: schema: $ref: '#/components/schemas/type_metrics:QueryUsageResponse' '400': description: Error response with status 400 content: application/json: schema: $ref: '#/components/schemas/type_:ValidationErrorResponse' components: schemas: type_metrics:Period: type: integer description: Size of each time bucket as a whole number of seconds, between 1 and 86400. title: Period type_pods:PodId: type: string description: ID of pod. title: PodId type_metrics:Descending: type: boolean description: Sort in descending order. title: Descending type_metrics:Start: type: string format: date-time description: Start timestamp for the query. title: Start type_metrics:UsageTypes: type: array items: $ref: '#/components/schemas/type_metrics:UsageType' description: List of usage metric types to query. Omit to query every type valid for the scope. title: UsageTypes type_metrics:UsageType: type: string enum: - storage_bytes - message_count - thread_count - inbox_count - pod_count - domain_count description: 'Type of usage metric. Inbox-scoped queries carry `storage_bytes`, `message_count`, and `thread_count`; pod-scoped queries add `inbox_count` and `domain_count`; organization-scoped queries add `pod_count`.' title: UsageType type_:ErrorCode: type: string description: Stable, machine-readable error code in snake_case (for example, not_found or missing_permission). Branch on this rather than the message text. title: ErrorCode type_metrics:UsagePoint: type: object properties: timestamp: type: string format: date-time description: Timestamp of the point. value: type: integer format: int64 description: Cumulative value of the usage metric at the timestamp. required: - timestamp - value title: UsagePoint type_:ValidationErrorResponse: type: object properties: name: $ref: '#/components/schemas/type_:ErrorName' code: $ref: '#/components/schemas/type_:ErrorCode' message: $ref: '#/components/schemas/type_:ErrorMessage' errors: description: Validation errors. Each entry has a path and a message identifying the invalid field. fix: $ref: '#/components/schemas/type_:ErrorFix' docs: $ref: '#/components/schemas/type_:ErrorDocs' required: - name - errors title: ValidationErrorResponse type_metrics:MetricLimit: type: integer description: Limit on number of buckets to return. title: MetricLimit type_:ErrorFix: type: string description: The concrete next action that resolves the error. title: ErrorFix type_:ErrorMessage: type: string description: Error message. title: ErrorMessage type_metrics:MetricEventTypes: type: array items: $ref: '#/components/schemas/type_metrics:MetricEventType' description: List of metric event types to query. title: MetricEventTypes type_metrics:QueryUsageResponse: type: object additionalProperties: type: array items: $ref: '#/components/schemas/type_metrics:UsagePoint' description: Cumulative usage series grouped by usage type. title: QueryUsageResponse type_:ErrorName: type: string description: Name of error. title: ErrorName type_metrics:MetricBucket: type: object properties: timestamp: type: string format: date-time description: Timestamp of the bucket. count: type: integer description: Count of events in the bucket. required: - timestamp - count title: MetricBucket type_metrics:MetricEventType: type: string enum: - message.received - message.received.spam - message.received.blocked - message.received.unauthenticated - message.sent - message.delivered - message.bounced - message.complained - message.rejected - domain.verified description: Type of metric event. title: MetricEventType type_metrics:QueryMetricsResponse: type: object additionalProperties: type: array items: $ref: '#/components/schemas/type_metrics:MetricBucket' description: Metrics grouped by event type. title: QueryMetricsResponse type_:ErrorDocs: type: string description: Link to the error reference entry for this code. title: ErrorDocs type_metrics:End: type: string format: date-time description: End timestamp for the query. title: End securitySchemes: Bearer: type: http scheme: bearer