FETCH402
← Protocol index

Resource / 597

healthy

Unnamed resource.

Before your agent plans a route or advises on a vehicle in France: compute its Crit'Air class and current low-emission-zone (ZFE) restrictions from the official classification tables (arrêté du 21 juin 2016), from declared fuel and Euro norm or first registration date

Eligibility
probeable
Failures
0
Last quote
2026-08-13 02:30:00 UTC
Last probe
2026-08-13 02:30:00 UTC
Payment requirements / accepts[] 3 options
State Network Scheme Atomic amount Asset payTo / untrusted
active eip155:8453 exact 10000 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 0x4465825B0ac713aA2Fa07Ea29023020804A128ee
active solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp exact 10000 EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6
active eip155:8453 exact 1000 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 0x4465825B0ac713aA2Fa07Ea29023020804A128ee

All advertised payment options are stored. Base (`eip155:8453`) is the operational network for ranking and canaries; non-Base options remain visible for transparency.

Probe evidence 1 recent
healthy 2026-08-13 02:30:00 UTC GET · HTTP 402 · 87ms · accepts 3 · base 2 ok
Request
GET https://api.invoket.com/vehicle/critair
Robots
error
Note
robots_error:{:robots_http_status, 404};http_402;accepts=3;base=2
Accepts fingerprint
cee94ad6aaec5f335c40a4a2f4aa2973c966c963d15802aa1282a5b2323bc6b8

Accepts snapshot

[
  {
    "amount": "10000",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "assetTransferMethod": null,
    "extra": {
      "name": "USD Coin",
      "version": "2"
    },
    "maxTimeoutSeconds": 60,
    "network": "eip155:8453",
    "payTo": "0x4465825B0ac713aA2Fa07Ea29023020804A128ee",
    "paymentFlow": null,
    "raw": {
      "amount": "10000",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "extra": {
        "name": "USD Coin",
        "version": "2"
      },
      "maxTimeoutSeconds": 60,
      "max_timeout_seconds": 60,
      "network": "eip155:8453",
      "payTo": "0x4465825B0ac713aA2Fa07Ea29023020804A128ee",
      "pay_to": "0x4465825B0ac713aA2Fa07Ea29023020804A128ee",
      "scheme": "exact"
    },
    "scheme": "exact"
  },
  {
    "amount": "10000",
    "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "assetTransferMethod": null,
    "extra": {
      "domain": "invoket.com",
      "feePayer": "GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"
    },
    "maxTimeoutSeconds": 60,
    "network": "solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp",
    "payTo": "Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6",
    "paymentFlow": null,
    "raw": {
      "amount": "10000",
      "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
      "extra": {
        "domain": "invoket.com",
        "feePayer": "GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"
      },
      "maxTimeoutSeconds": 60,
      "max_timeout_seconds": 60,
      "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
      "payTo": "Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6",
      "pay_to": "Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6",
      "scheme": "exact"
    },
    "scheme": "exact"
  },
  {
    "amount": "1000",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "assetTransferMethod": null,
    "extra": {
      "name": "USD Coin",
      "version": "2"
    },
    "maxTimeoutSeconds": 60,
    "network": "eip155:8453",
    "payTo": "0x4465825B0ac713aA2Fa07Ea29023020804A128ee",
    "paymentFlow": null,
    "raw": {
      "amount": "1000",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "extra": {
        "name": "USD Coin",
        "version": "2"
      },
      "maxTimeoutSeconds": 60,
      "max_timeout_seconds": 60,
      "network": "eip155:8453",
      "payTo": "0x4465825B0ac713aA2Fa07Ea29023020804A128ee",
      "pay_to": "0x4465825B0ac713aA2Fa07Ea29023020804A128ee",
      "scheme": "exact"
    },
    "scheme": "exact"
  }
]

PaymentRequired raw

{
  "accepts": [
    {
      "amount": "10000",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "extra": {
        "name": "USD Coin",
        "version": "2"
      },
      "maxTimeoutSeconds": 60,
      "network": "eip155:8453",
      "payTo": "0x4465825B0ac713aA2Fa07Ea29023020804A128ee",
      "scheme": "exact"
    },
    {
      "amount": "10000",
      "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
      "extra": {
        "domain": "invoket.com",
        "feePayer": "GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"
      },
      "maxTimeoutSeconds": 60,
      "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
      "payTo": "Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6",
      "scheme": "exact"
    },
    {
      "amount": "1000",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "extra": {
        "name": "USD Coin",
        "version": "2"
      },
      "maxTimeoutSeconds": 60,
      "network": "eip155:8453",
      "payTo": "0x4465825B0ac713aA2Fa07Ea29023020804A128ee",
      "scheme": "exact"
    }
  ],
  "error": "PAYMENT-SIGNATURE header is required",
  "extensions": {
    "bazaar": {
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "input": {
            "additionalProperties": false,
            "properties": {
              "headers": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "method": {
                "enum": [
                  "GET",
                  "HEAD",
                  "DELETE"
                ],
                "type": "string"
              },
              "queryParams": {
                "properties": {
                  "euro_norm": {
                    "description": "Optional on its own - Declared Euro emission norm (pre_euro, euro1, euro2, euro3, euro4, euro5, euro6; euro1 is accepted and normalised to pre_euro, which the Crit'Air schedule does not distinguish). Provide either 'euro_norm' or 'first_registration'; if both are given, 'euro_norm' wins",
                    "type": "string"
                  },
                  "first_registration": {
                    "description": "Optional on its own - Date of first registration (YYYY-MM-DD), used to derive the Euro norm when 'euro_norm' is not supplied. It must be a plausible registration date: a future date or one before 1900-01-01 is a 400 (a genuinely old vehicle is answered 200 with critair_class 'non_classe', never an error)",
                    "type": "string"
                  },
                  "fuel": {
                    "description": "Declared fuel/powertrain: electric, hydrogen, gas (gpl/gnv), plug_in_hybrid, petrol, diesel, petrol_hybrid, diesel_hybrid (common FR/EN synonyms accepted). Required; hybrids are classified by their thermal engine",
                    "type": "string"
                  },
                  "vehicle_class": {
                    "description": "Optional. Vehicle category: m1 (passenger car, default) or n1 (light commercial vehicle); other categories are out of scope (400)",
                    "type": "string"
                  }
                },
                "required": [
                  "fuel"
                ],
                "type": "object"
              },
              "schema": {
                "type": "object"
              },
              "type": {
                "const": "http",
                "type": "string"
              }
            },
            "required": [
              "type",
              "method"
            ],
            "type": "object"
          },
          "output": {
            "properties": {
              "example": {
                "type": "object"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          }
        },
        "required": [
          "input"
        ],
        "type": "object"
      }
    }
  },
  "resource": {
    "description": "Before your agent plans a route or advises on a vehicle in France: compute its Crit'Air class and current low-emission-zone (ZFE) restrictions from the official classification tables (arrêté du 21 juin 2016), from declared fuel and Euro norm or first registration date",
    "mimeType": "application/json",
    "url": "https://api.invoket.com/vehicle/critair"
  },
  "x402Version": 2
}

Response headers

{
  "connection": "keep-alive",
  "content-length": "7905",
  "content-security-policy": "default-src 'none'; frame-ancestors 'none'",
  "content-type": "application/json",
  "date": "Thu, 13 Aug 2026 02:30:00 GMT",
  "payment-required": "eyJ4NDAyVmVyc2lvbiI6MiwiZXJyb3IiOiJQQVlNRU5ULVNJR05BVFVSRSBoZWFkZXIgaXMgcmVxdWlyZWQiLCJyZXNvdXJjZSI6eyJ1cmwiOiJodHRwczovL2FwaS5pbnZva2V0LmNvbS92ZWhpY2xlL2NyaXRhaXIiLCJkZXNjcmlwdGlvbiI6IkJlZm9yZSB5b3VyIGFnZW50IHBsYW5zIGEgcm91dGUgb3IgYWR2aXNlcyBvbiBhIHZlaGljbGUgaW4gRnJhbmNlOiBjb21wdXRlIGl0cyBDcml0J0FpciBjbGFzcyBhbmQgY3VycmVudCBsb3ctZW1pc3Npb24tem9uZSAoWkZFKSByZXN0cmljdGlvbnMgZnJvbSB0aGUgb2ZmaWNpYWwgY2xhc3NpZmljYXRpb24gdGFibGVzIChhcnLDqnTDqSBkdSAyMSBqdWluIDIwMTYpLCBmcm9tIGRlY2xhcmVkIGZ1ZWwgYW5kIEV1cm8gbm9ybSBvciBmaXJzdCByZWdpc3RyYXRpb24gZGF0ZSIsIm1pbWVUeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LCJhY2NlcHRzIjpbeyJzY2hlbWUiOiJleGFjdCIsIm5ldHdvcmsiOiJlaXAxNTU6ODQ1MyIsImFtb3VudCI6IjEwMDAwIiwiYXNzZXQiOiIweDgzMzU4OWZDRDZlRGI2RTA4ZjRjN0MzMkQ0ZjcxYjU0YmRBMDI5MTMiLCJwYXlUbyI6IjB4NDQ2NTgyNUIwYWM3MTNhQTJGYTA3RWEyOTAyMzAyMDgwNEExMjhlZSIsIm1heFRpbWVvdXRTZWNvbmRzIjo2MCwiZXh0cmEiOnsibmFtZSI6IlVTRCBDb2luIiwidmVyc2lvbiI6IjIifX0seyJzY2hlbWUiOiJleGFjdCIsIm5ldHdvcmsiOiJzb2xhbmE6NWV5a3Q0VXNGdjhQOE5KZFRSRXBZMXZ6cUtxWkt2ZHAiLCJhbW91bnQiOiIxMDAwMCIsImFzc2V0IjoiRVBqRldkZDVBdWZxU1NxZU0ycU4xeHp5YmFwQzhHNHdFR0drWnd5VER0MXYiLCJwYXlUbyI6IkFlMXVvd1lTamJINDd1Q2laTW1jNTFBcXhmOTY0YjFGczRkMWJqYVBtTU42IiwibWF4VGltZW91dFNlY29uZHMiOjYwLCJleHRyYSI6eyJkb21haW4iOiJpbnZva2V0LmNvbSIsImZlZVBheWVyIjoiR1ZKSjdyZEdpWHI1eGFZYlJ3UmJqZmFKTDdmbXdSeWdGaTFINmFHcUR2ZWIifX0seyJzY2hlbWUiOiJleGFjdCIsIm5ldHdvcmsiOiJlaXAxNTU6ODQ1MyIsImFtb3VudCI6IjEwMDAiLCJhc3NldCI6IjB4ODMzNTg5ZkNENmVEYjZFMDhmNGM3QzMyRDRmNzFiNTRiZEEwMjkxMyIsInBheVRvIjoiMHg0NDY1ODI1QjBhYzcxM2FBMkZhMDdFYTI5MDIzMDIwODA0QTEyOGVlIiwibWF4VGltZW91dFNlY29uZHMiOjYwLCJleHRyYSI6eyJuYW1lIjoiVVNEIENvaW4iLCJ2ZXJzaW9uIjoiMiJ9fV0sImV4dGVuc2lvbnMiOnsiYmF6YWFyIjp7InNjaGVtYSI6eyIkc2NoZW1hIjoiaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiLCJwcm9wZXJ0aWVzIjp7ImlucHV0Ijp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjpmYWxzZSwicHJvcGVydGllcyI6eyJoZWFkZXJzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6Im9iamVjdCJ9LCJtZXRob2QiOnsiZW51bSI6WyJHRVQiLCJIRUFEIiwiREVMRVRFIl0sInR5cGUiOiJzdHJpbmcifSwicXVlcnlQYXJhbXMiOnsicHJvcGVydGllcyI6eyJldXJvX25vcm0iOnsiZGVzY3JpcHRpb24iOiJPcHRpb25hbCBvbiBpdHMgb3duIC0gRGVjbGFyZWQgRXVybyBlbWlzc2lvbiBub3JtIChwcmVfZXVybywgZXVybzEsIGV1cm8yLCBldXJvMywgZXVybzQsIGV1cm81LCBldXJvNjsgZXVybzEgaXMgYWNjZXB0ZWQgYW5kIG5vcm1hbGlzZWQgdG8gcHJlX2V1cm8sIHdoaWNoIHRoZSBDcml0J0FpciBzY2hlZHVsZSBkb2VzIG5vdCBkaXN0aW5ndWlzaCkuIFByb3ZpZGUgZWl0aGVyICdldXJvX25vcm0nIG9yICdmaXJzdF9yZWdpc3RyYXRpb24nOyBpZiBib3RoIGFyZSBnaXZlbiwgJ2V1cm9fbm9ybScgd2lucyIsInR5cGUiOiJzdHJpbmcifSwiZmlyc3RfcmVnaXN0cmF0aW9uIjp7ImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwgb24gaXRzIG93biAtIERhdGUgb2YgZmlyc3QgcmVnaXN0cmF0aW9uIChZWVlZLU1NLUREKSwgdXNlZCB0byBkZXJpdmUgdGhlIEV1cm8gbm9ybSB3aGVuICdldXJvX25vcm0nIGlzIG5vdCBzdXBwbGllZC4gSXQgbXVzdCBiZSBhIHBsYXVzaWJsZSByZWdpc3RyYXRpb24gZGF0ZTogYSBmdXR1cmUgZGF0ZSBvciBvbmUgYmVmb3JlIDE5MDAtMDEtMDEgaXMgYSA0MDAgKGEgZ2VudWluZWx5IG9sZCB2ZWhpY2xlIGlzIGFuc3dlcmVkIDIwMCB3aXRoIGNyaXRhaXJfY2xhc3MgJ25vbl9jbGFzc2UnLCBuZXZlciBhbiBlcnJvcikiLCJ0eXBlIjoic3RyaW5nIn0sImZ1ZWwiOnsiZGVzY3JpcHRpb24iOiJEZWNsYXJlZCBmdWVsL3Bvd2VydHJhaW46IGVsZWN0cmljLCBoeWRyb2dlbiwgZ2FzIChncGwvZ252KSwgcGx1Z19pbl9oeWJyaWQsIHBldHJvbCwgZGllc2VsLCBwZXRyb2xfaHlicmlkLCBkaWVzZWxfaHlicmlkIChjb21tb24gRlIvRU4gc3lub255bXMgYWNjZXB0ZWQpLiBSZXF1aXJlZDsgaHlicmlkcyBhcmUgY2xhc3NpZmllZCBieSB0aGVpciB0aGVybWFsIGVuZ2luZSIsInR5cGUiOiJzdHJpbmcifSwidmVoaWNsZV9jbGFzcyI6eyJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBWZWhpY2xlIGNhdGVnb3J5OiBtMSAocGFzc2VuZ2VyIGNhciwgZGVmYXVsdCkgb3IgbjEgKGxpZ2h0IGNvbW1lcmNpYWwgdmVoaWNsZSk7IG90aGVyIGNhdGVnb3JpZXMgYXJlIG91dCBvZiBzY29wZSAoNDAwKSIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImZ1ZWwiXSwidHlwZSI6Im9iamVjdCJ9LCJzY2hlbWEiOnsidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjp7ImNvbnN0IjoiaHR0cCIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInR5cGUiLCJtZXRob2QiXSwidHlwZSI6Im9iamVjdCJ9LCJvdXRwdXQiOnsicHJvcGVydGllcyI6eyJleGFtcGxlIjp7InR5cGUiOiJvYmplY3QifSwidHlwZSI6eyJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0eXBlIl0sInR5cGUiOiJvYmplY3QifX0sInJlcXVpcmVkIjpbImlucHV0Il0sInR5cGUiOiJvYmplY3QifX19fQ==",
  "referrer-policy": "strict-origin-when-cross-origin",
  "server": "nginx",
  "strict-transport-security": "max-age=63072000; includeSubDomains",
  "x-content-type-options": "nosniff"
}

Response body

{
  "accepts": [
    {
      "amount": "10000",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "extra": {
        "name": "USD Coin",
        "version": "2"
      },
      "maxTimeoutSeconds": 60,
      "network": "eip155:8453",
      "payTo": "0x4465825B0ac713aA2Fa07Ea29023020804A128ee",
      "scheme": "exact"
    },
    {
      "amount": "10000",
      "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
      "extra": {
        "domain": "invoket.com",
        "feePayer": "GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"
      },
      "maxTimeoutSeconds": 60,
      "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
      "payTo": "Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6",
      "scheme": "exact"
    },
    {
      "amount": "1000",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "extra": {
        "name": "USD Coin",
        "version": "2"
      },
      "maxTimeoutSeconds": 60,
      "network": "eip155:8453",
      "payTo": "0x4465825B0ac713aA2Fa07Ea29023020804A128ee",
      "scheme": "exact"
    }
  ],
  "error": "PAYMENT-SIGNATURE header is required",
  "extensions": {
    "bazaar": {
      "info": {
        "input": {
          "headers": {
            "accept": "application/json"
          },
          "method": "GET",
          "queryParams": {
            "euro_norm": "euro3",
            "first_registration": "2004-05-01",
            "fuel": "diesel",
            "vehicle_class": "m1"
          },
          "schema": {
            "properties": {
              "euro_norm": {
                "description": "Optional on its own - Declared Euro emission norm (pre_euro, euro1, euro2, euro3, euro4, euro5, euro6; euro1 is accepted and normalised to pre_euro, which the Crit'Air schedule does not distinguish). Provide either 'euro_norm' or 'first_registration'; if both are given, 'euro_norm' wins",
                "type": "string"
              },
              "first_registration": {
                "description": "Optional on its own - Date of first registration (YYYY-MM-DD), used to derive the Euro norm when 'euro_norm' is not supplied. It must be a plausible registration date: a future date or one before 1900-01-01 is a 400 (a genuinely old vehicle is answered 200 with critair_class 'non_classe', never an error)",
                "type": "string"
              },
              "fuel": {
                "description": "Declared fuel/powertrain: electric, hydrogen, gas (gpl/gnv), plug_in_hybrid, petrol, diesel, petrol_hybrid, diesel_hybrid (common FR/EN synonyms accepted). Required; hybrids are classified by their thermal engine",
                "type": "string"
              },
              "vehicle_class": {
                "description": "Optional. Vehicle category: m1 (passenger car, default) or n1 (light commercial vehicle); other categories are out of scope (400)",
                "type": "string"
              }
            },
            "required": [
              "fuel"
            ],
            "type": "object"
          },
          "type": "http"
        },
        "output": {
          "example": {
            "data": {
              "critair_class": "4",
              "derivation": {
                "euro_norm": "euro3",
                "fuel": "diesel",
                "via": "euro_norm"
              },
              "euro_norm": "euro3",
              "first_registration": "2004-05-01",
              "fuel": "diesel",
              "notes": "Restrictions PERMANENTES en vigueur pour les véhicules M1/N1, par classe Crit'Air. Les dérogations locales, horaires et sectorielles (axes, dérogations petits rouleurs, laissez-passer) sont HORS PÉRIMÈTRE et ne sont pas modélisées. Les calendriers de durcissement au-delà des étapes ci-dessous ont été révisés par la loi de 2025 et ne sont retenus que lorsqu'ils sont effectivement entrés en vigueur.",
              "regulation": {
                "as_of": "2026-07-04",
                "reference": "Arrêté du 21 juin 2016 (nomenclature Crit'Air, art. R. 318-2 du code de la route)"
              },
              "vehicle_class": "m1",
              "zfe_restrictions": [
                {
                  "area": "Lyon, Villeurbanne, Caluire-et-Cuire, Bron et Vénissieux (périmètre intra-boulevard périphérique Laurent-Bonnevay)",
                  "since": "2022-01-01",
                  "zone_id": "metropole-lyon",
                  "zone_name": "ZFE-m de la Métropole de Lyon"
                },
                {
                  "area": "Communes de la Métropole du Grand Paris situées à l'intérieur de l'autoroute A86 (Paris et petite couronne, hors A86 elle-même)",
                  "since": "2021-06-01",
                  "zone_id": "grand-paris",
                  "zone_name": "ZFE-m de la Métropole du Grand Paris"
                }
              ]
            },
            "provenance": {
              "fetched_at": "2026-07-04T09:30:00Z",
              "freshness": {
                "as_of": "2026-07-01T00:00:00Z",
                "kind": "snapshot"
              },
              "source": "critair-regulation+zfe-open-data"
            }
          },
          "schema": {
            "properties": {
              "data": {
                "properties": {
                  "critair_class": {
                    "description": "Computed Crit'Air sticker class: '0', '1'..'5' or 'non_classe' — 'non_classe' is a successful, billed answer (too old to qualify), never an error",
                    "type": "string"
                  },
                  "derivation": {
                    "description": "How the class was obtained: which input path was used (via), the effective Euro norm and the fuel column retained — makes the computation auditable. On the 'first_registration' path the Euro norm is INFERRED from the date against the norm mandated for new registrations at that time (euro6 from 2015-09-01 for m1, 2016-09-01 for n1): a vehicle may have been type-approved under an earlier norm, and the sticker class is identical across the norms that share it",
                    "properties": {
                      "euro_norm": {
                        "type": "string"
                      },
                      "fuel": {
                        "type": "string"
                      },
                      "via": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "fuel",
                      "via"
                    ],
                    "type": "object"
                  },
                  "euro_norm": {
                    "type": "string"
                  },
                  "first_registration": {
                    "type": "string"
                  },
                  "fuel": {
                    "type": "string"
                  },
                  "notes": {
                    "type": "string"
                  },
                  "regulation": {
                    "description": "Reference to the regulatory classification table and the date it was last verified",
                    "properties": {
                      "as_of": {
                        "type": "string"
                      },
                      "reference": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "as_of",
                      "reference"
                    ],
                    "type": "object"
                  },
                  "vehicle_class": {
                    "type": "string"
                  },
                  "zfe_restrictions": {
                    "description": "Low-emission zones (ZFE) that currently ban this class, each with its enforcement start date; an empty list means no modelled ZFE restricts the class",
                    "items": {
                      "properties": {
                        "area": {
                          "type": "string"
                        },
                        "since": {
                          "type": "string"
                        },
                        "zone_id": {
                          "type": "string"
                        },
                        "zone_name": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "area",
                        "since",
                        "zone_id",
                        "zone_name"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "critair_class",
                  "derivation",
                  "fuel",
                  "notes",
                  "regulation",
                  "vehicle_class",
                  "zfe_restrictions"
                ],
                "type": "object"
              },
              "provenance": {
                "properties": {
                  "fetched_at": {
                    "type": "string"
                  },
                  "freshness": {
                    "properties": {
                      "as_of": {
                        "type": "string"
                      },
                      "kind": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "as_of",
                      "kind"
                    ],
                    "type": "object"
                  },
                  "source": {
                    "type": "string"
                  }
                },
                "required": [
                  "fetched_at",
                  "freshness",
                  "source"
                ],
                "type": "object"
              }
            },
            "required": [
              "data",
              "provenance"
            ],
            "type": "object"
          },
          "type": "json"
        }
      },
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "input": {
            "additionalProperties": false,
            "properties": {
              "headers": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "method": {
                "enum": [
                  "GET",
                  "HEAD",
                  "DELETE"
                ],
                "type": "string"
              },
              "queryParams": {
                "properties": {
                  "euro_norm": {
                    "description": "Optional on its own - Declared Euro emission norm (pre_euro, euro1, euro2, euro3, euro4, euro5, euro6; euro1 is accepted and normalised to pre_euro, which the Crit'Air schedule does not distinguish). Provide either 'euro_norm' or 'first_registration'; if both are given, 'euro_norm' wins",
                    "type": "string"
                  },
                  "first_registration": {
                    "description": "Optional on its own - Date of first registration (YYYY-MM-DD), used to derive the Euro norm when 'euro_norm' is not supplied. It must be a plausible registration date: a future date or one before 1900-01-01 is a 400 (a genuinely old vehicle is answered 200 with critair_class 'non_classe', never an error)",
                    "type": "string"
                  },
                  "fuel": {
                    "description": "Declared fuel/powertrain: electric, hydrogen, gas (gpl/gnv), plug_in_hybrid, petrol, diesel, petrol_hybrid, diesel_hybrid (common FR/EN synonyms accepted). Required; hybrids are classified by their thermal engine",
                    "type": "string"
                  },
                  "vehicle_class": {
                    "description": "Optional. Vehicle category: m1 (passenger car, default) or n1 (light commercial vehicle); other categories are out of scope (400)",
                    "type": "string"
                  }
                },
                "required": [
                  "fuel"
                ],
                "type": "object"
              },
              "schema": {
                "type": "object"
              },
              "type": {
                "const": "http",
                "type": "string"
              }
            },
            "required": [
              "type",
              "method"
            ],
            "type": "object"
          },
          "output": {
            "properties": {
              "example": {
                "type": "object"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          }
        },
        "required": [
          "input"
        ],
        "type": "object"
      }
    }
  },
  "resource": {
    "description": "Before your agent plans a route or advises on a vehicle in France: compute its Crit'Air class and current low-emission-zone (ZFE) restrictions from the official classification tables (arrêté du 21 juin 2016), from declared fuel and Euro norm or first registration date",
    "mimeType": "application/json",
    "url": "https://api.invoket.com/vehicle/critair"
  },
  "x402Version": 2
}

Request headers

{
  "accept": "*/*",
  "user-agent": "Fetch402Bot/0.1 (+https://fetch402.com/crawler; contact: crawler@fetch402.com)"
}

Machine contract

Schemas.

InputJSON
{}
OutputJSON
{}