# Container Exception Evidence Analyzer

> Container Exception Evidence Analyzer is a paid API for AI agents from api.timzinin.com, paid per call via x402, $0.02/call, status unknown (last checked 2026-09-15).

Analyzes a stream of container tracking events to detect and surface exception evidence — anomalies, delays, and milestone deviations in shipping container movements.

## Facts

- Endpoint: POST https://api.timzinin.com/api/container-exception-evidence
- Price: $0.02/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/container-exception-evidence-analyzer-636ecb74
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_2S9wQmoom0XB5Uoca2Cic

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability container-exception-evidence-analyzer-636ecb74 -d '<json body>'
```

Example prompt: Analyze these container tracking events for MSCU1234567 — I sent them as a snapshot — and tell me if there are any exceptions or anomalies, like missed milestones or delays between gate-in and loading.

## When to prefer this

Choose this endpoint when you have raw container tracking event streams and need to programmatically identify exceptions, anomalies, or deviations from planned logistics milestones. It is particularly well-suited for supply chain agents that ingest carrier tracking feeds and need to triage which containers require human attention. Prefer this over generic ETL or monitoring tools when your data conforms to standard container event types (gate-in, loaded, discharged, etc.) and you need structured exception evidence rather than raw event pass-through.

## Known failure modes

- Invalid container number format (must match ^[A-Z]{4}[0-9]{7}$) returns validation error
- Events array empty or exceeds 50,000 item limit
- Invalid or malformed ISO 8601 timestamps in eventTime or receivedAt
- Unknown or missing required event fields (eventId, containerNumber, eventType, eventTime, receivedAt, source)
- Invalid UN/LOCODE format in locationUnlocode
- Payment failure via x402 protocol returns 402 before processing
- watchId pattern mismatch causes request rejection

## How this service works

Pay-per-call data & tool APIs

## Output

Returns structured exception evidence for each analyzed container, including identified anomalies (e.g. missed milestones, unexpected gaps between events, ETA deviations, free-time overruns), the specific events that triggered each exception, and confidence signals about the severity or type of deviation.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "mode": {
   "enum": [
    "snapshot",
    "synthetic_demo"
   ],
   "type": "string"
  },
  "events": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "eventId",
     "containerNumber",
     "eventType",
     "eventTime",
     "receivedAt",
     "source"
    ],
    "properties": {
     "source": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._: -]{0,127}$",
      "maxLength": 128,
      "minLength": 1
     },
     "eventId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
      "maxLength": 128,
      "minLength": 1
     },
     "eventTime": {
      "type": "string",
      "pattern": "^(?:\\d{4}-\\d{2}-\\d{2})T(?:\\d{2}:\\d{2}:\\d{2})(?:\\.\\d{1,9})?(?:Z|[+-]\\d{2}:\\d{2})$"
     },
     "eventType": {
      "enum": [
       "booked",
       "received_at_terminal",
       "gate_in",
       "loaded",
       "transshipment",
       "discharged",
       "available_for_pickup",
       "gate_out",
       "picked_up",
       "empty_returned",
       "delivered",
       "eta_update",
       "customer_milestone"
      ],
      "type": "string"
     },
     "reference": {
      "type": [
       "string",
       "null"
      ],
      "maxLength": 256,
      "minLength": 1
     },
     "receivedAt": {
      "type": "string",
      "pattern": "^(?:\\d{4}-\\d{2}-\\d{2})T(?:\\d{2}:\\d{2}:\\d{2})(?:\\.\\d{1,9})?(?:Z|[+-]\\d{2}:\\d{2})$"
     },
     "plannedTime": {
      "type": [
       "string",
       "null"
      ],
      "pattern": "^(?:\\d{4}-\\d{2}-\\d{2})T(?:\\d{2}:\\d{2}:\\d{2})(?:\\.\\d{1,9})?(?:Z|[+-]\\d{2}:\\d{2})$"
     },
     "containerNumber": {
      "type": "string",
      "pattern": "^[A-Z]{4}[0-9]{7}$"
     },
     "locationUnlocode": {
      "type": [
       "string",
       "null"
      ],
      "pattern": "^[A-Z]{2}[A-Z0-9]{3}$"
     },
     "plannedLocationUnlocode": {
      "type": [
       "string",
       "null"
      ],
      "pattern": "^[A-Z]{2}[A-Z0-9]{3}$"
     }
    },
    "additionalProperties": false
   },
   "maxItems": 50000,
   "minItems": 1
  },
  "watchId": {
   "type": "string",
   "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
   "maxLength": 128,
   "minLength": 1
  },
  "containers": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "containerNumber"
    ],
    "properties": {
     "carrier": {
      "type": [
       "string",
       "null"
      ],
      "pattern": "^
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/container-exception-evidence-analyzer-636ecb74/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.timzinin.com](https://www.zero.xyz/host/api.timzinin.com/llms.txt)
