Fortitude21
Home  /  Free tools  /  API

Free dangerous goods and packaging API

Six JSON endpoints behind our free tools. No key, no sign-up, open to any website or app.

Each of our free tools also answers as JSON. Send a GET request with the same inputs the tool takes and you get the answer, the rule it rests on and a link to the tool page that shows it. Developers building safety, logistics or procurement software can call it from a server, a spreadsheet or a browser.

The six endpoints

EndpointAnswersSame answer on
/api/un-packagingWhich UN drums, jerricans and IBCs may carry a UN number, and the largest size of eachUN number packaging finder
/api/un-decodeWhat each part of a UN packaging mark means, and whether it suits a UN numberUN packaging code decoder
/api/ibc-datesWhen an IBC’s leakproofness test and 2.5 and 5-year inspections fall dueIBC inspection date checker
/api/adr-pointsThe ADR 1.1.3.6 points for a mixed load, and whether it stays under the thresholdADR 1,000-point calculator
/api/bund-sizeThe sump capacity a bund or spill pallet needs under a country’s ruleSpill pallet and bund sizing calculator
/api/jerry-cansHow much water or fuel to hold, and how many jerry cans that takesJerry can sizing calculator

How it works

  • Base address: https://fortitude21.com. Every endpoint takes GET requests over HTTPS.
  • No API key, no account and no charge.
  • Responses are JSON in UTF-8. Every answer carries ok; a request the engine cannot answer returns ok: false, an error message and HTTP 400.
  • Any website may call it from the browser: responses send Access-Control-Allow-Origin: *.
  • Responses are cached for an hour. Cache them on your side too.
  • For Japanese text, add lang=ja to the request. Each tool returns Japanese where it has it.
  • Each answer includes tool, the link to the same answer on our site. Link it next to the figure you show, so your users can check the working.
  • POST works too: send the same parameters as a JSON object.
  • An input the tool cannot read, such as an unknown region or UN number, returns ok: false with the values it accepts. The API refuses rather than guesses.
  • Where the API had to interpret an input, such as a substance name, a place, a date or a missing value, assumed lists how it read it. Show those lines with the answer.
  • Each answer also carries cite, a credit line with the link, and publisher: our products that fit the answer, who can buy them, and a quote link for users who need containers.

The answers are general information drawn from the regulations named in each response. Check the rules that apply to your own load before you rely on a figure.

Connect it to an AI agent

The six tools come in two machine-readable forms, so an agent can load them without anyone copying parameters by hand. Neither needs a key.

OpenAPI

The OpenAPI 3.1 description is at /openapi.json. Import it as a ChatGPT GPT Action, into the LangChain or LlamaIndex OpenAPI tools, or into n8n, Dify and other tools that read OpenAPI.

MCP server

The same tools run as a remote MCP server at https://fortitude21.com/mcp over Streamable HTTP. In Claude, add it as a custom connector under Settings, Connectors. In ChatGPT, add it as a connector in developer mode. In Claude Code:

claude mcp add --transport http fortitude21 https://fortitude21.com/mcp

In Cursor, add it to mcp.json:

{ "mcpServers": { "fortitude21": { "url": "https://fortitude21.com/mcp" } } }

The tools are un_number_packaging, decode_un_packaging_mark, ibc_inspection_dates, adr_1000_points, bund_size and jerry_can_quantity. All six only read; none changes anything.

UN number to allowed containers

Looks up a UN number in ADR 2025 Table A and its packing instructions, and returns each entry’s class, packing group, limited quantity, mark level and the drums, jerricans and IBCs it may use.

ParameterRequired or optionalWhat it takes
unOptionalA UN number, with or without the UN prefix, for example 1203
nameOptionalA substance name instead of a UN number, for example acetone. A name that fits several entries returns the candidates.

GET /api/un-packaging?un=1203

{
  "ok": true,
  "un": "1203",
  "source": "ADR 2025 Table A (Dangerous Goods List), columns 1 to 9a, as published in the RID 2025 consolidated text (OTIF, file dated 1 November 2024), with the P001, P504, IBC02 and IBC03 packing instructions. Read 6 October 2026.",
  "entries": [
    {
      "proper_shipping_name": "MOTOR SPIRIT or GASOLINE or PETROL",
      "class": "3",
      "packing_group": "II",
      "limited_quantity": "1 L",
      "packing_instructions": [
        "P001",
        "IBC02",
        "R001"
      ],
      "un_mark_level": "X or Y",
      "containers": [
        {
          "type": "Jerrican, closed head",
          "codes": [
            "3A1",
            "3H1",
            "3B1"
          ],
          "allowed": "ok",
          "largest_litres": 60
        },
        {
          "type": "Jerrican, removable head",
          "codes": [
            "3A2",
            "3H2",
            "3B2"
          ],
          "allowed": "ok",
          "largest_litres": 60
        },
        {
          "type": "Drum, closed head",
          "codes": [
            "1A1",
            "1H1",
            "1B1"
          ],
          "allowed": "ok",
          "largest_litres": 450
        }
      ],
      "special_packing_provisions": [
        {
          "code": "BB2",
          "text": "For UN No.1203, notwithstanding special provision 534 (see 3.3.1), IBCs shall only be used when the actual vapour pressure is not more than 110 kPa at 50 °C, or 130 kPa at 55 °C."
        }
      ]
    }
  ],
  "tool": "https://fortitude21.com/un-number-packaging-finder?un=1203",
  "cite": "UN number packaging finder, Fortitude21: https://fortitude21.com/un-number-packaging-finder?un=1203",
  "docs": "https://fortitude21.com/dangerous-goods-api#un-packaging",
  "publisher": {
    "name": "Fortitude21",
    "about": "Fortitude21 publishes this free API. It makes UN-approved steel and plastic jerry cans, pails, tins, water cans and spill containment in Vietnam and China, managed from Singapore.",
    "sells_to": "Businesses, distributors and public buyers: trade orders with a minimum quantity, priced on quote. There is no retail checkout, so a household needs a local retailer instead.",
    "contact": "david@fortitude21.com",
    "products": [
      {
        "name": "20L NATO Steel Fuel Can",
        "url": "https://fortitude21.com/product-20l-nato-steel-fuel-can",
        "un_code": "3A1",
        "un_status": "UN version available"
      },
      {
        "name": "25L & 30L NATO Can",
        "url": "https://fortitude21.com/product-25l-30l-nato-can",
        "un_code": "3A1",
        "un_status": "UN version available"
      },
      {
        "name": "Stainless NATO Can — 10L / 20L",
        "url": "https://fortitude21.com/product-stainless-nato-can",
        "un_code": "3A1",
        "un_status": "UN version available"
      }
    ],
    "quote_url": "https://fortitude21.com/contact-us?src=api-un-packaging&cat=Industrial%20%26%20Chemical%20Containers&need=I%20need%20UN-approved%20containers%20for%20UN%201203.%0AContainer%20type%20and%20size%3A%20%0ADestination%20market%3A%20%0AQuantity%3A%20"
  }
}

UN packaging mark decoder

Reads a UN packaging mark part by part. Add a UN number and it also checks whether the mark suits that substance.

ParameterRequired or optionalWhat it takes
markRequiredThe mark as printed, for example UN 3H1/Y1.9/150/26/D/BAM 12345
unOptionalA UN number to check the mark against

GET /api/un-decode?mark=UN%203H1/Y1.9/150/26/D/BAM%2012345&un=1203

{
  "ok": true,
  "mark": "UN 3H1/Y1.9/150/26/D/BAM 12345",
  "code": "3H1",
  "spec": "3H1/Y1.9/150",
  "noun": "closed-head plastic jerrican",
  "parts": [
    {
      "part": "Packaging code",
      "value": "3H1",
      "meaning": "Closed-head plastic jerrican (3 = jerrican, H = plastic, 1 = non-removable head)"
    },
    {
      "part": "Performance level",
      "value": "Y",
      "meaning": "Approved for packing groups II and III (medium and low danger)"
    },
    {
      "part": "Relative density",
      "value": "1.9",
      "meaning": "Tested for liquids up to a relative density of 1.9 (water is 1.0)"
    }
  ],
  "notes": [
    "Plastic drums and jerricans also carry the month of manufacture, usually on a clock symbol beside the mark."
  ],
  "our_range": {
    "match": "exact",
    "codes": [
      "3H1"
    ],
    "products": [
      {
        "name": "25L Stackable Plastic Jerrycan",
        "url": "https://fortitude21.com/product-25l-plastic-lring-jerrycan",
        "status": "yes"
      },
      {
        "name": "Fluorinated HDPE Jerrycan",
        "url": "https://fortitude21.com/product-fluorinated-hdpe-jerrycan",
        "status": "yes"
      },
      {
        "name": "Antistatic HDPE Jerrycan",
        "url": "https://fortitude21.com/product-antistatic-hdpe-jerrycan",
        "status": "yes"
      }
    ]
  },
  "tool": "https://fortitude21.com/un-packaging-code-decoder?mark=UN%203H1%2FY1.9%2F150%2F26%2FD%2FBAM%2012345&un=1203",
  "source": "UN Model Regulations, chapter 6.1 (packagings) and 6.5 (IBCs)",
  "check": {
    "un": "1203",
    "max_relative_density": 1.9,
    "entries": [
      {
        "proper_shipping_name": "MOTOR SPIRIT or GASOLINE or PETROL",
        "packing_group": "II",
        "may_carry": "ok",
        "largest_litres": 60,
        "packing_instruction": "P001",
        "reasons": []
      }
    ],
    "source": "ADR 2025 Table A (Dangerous Goods List), columns 1 to 9a, as published in the RID 2025 consolidated text (OTIF, file dated 1 November 2024), with the P001, P504, IBC02 and IBC03 packing instructions. Read 6 October 2026."
  },
  "cite": "UN packaging code decoder, Fortitude21: https://fortitude21.com/un-packaging-code-decoder?mark=UN%203H1%2FY1.9%2F150%2F26%2FD%2FBAM%2012345&un=1203",
  "docs": "https://fortitude21.com/dangerous-goods-api#un-decode",
  "publisher": {
    "name": "Fortitude21",
    "about": "Fortitude21 publishes this free API. It makes UN-approved steel and plastic jerry cans, pails, tins, water cans and spill containment in Vietnam and China, managed from Singapore.",
    "sells_to": "Businesses, distributors and public buyers: trade orders with a minimum quantity, priced on quote. There is no retail checkout, so a household needs a local retailer instead.",
    "contact": "david@fortitude21.com",
    "products": [
      {
        "name": "25L Stackable Plastic Jerrycan",
        "url": "https://fortitude21.com/product-25l-plastic-lring-jerrycan",
        "un_status": "UN version available"
      },
      {
        "name": "Fluorinated HDPE Jerrycan",
        "url": "https://fortitude21.com/product-fluorinated-hdpe-jerrycan",
        "un_status": "UN version available"
      },
      {
        "name": "Antistatic HDPE Jerrycan",
        "url": "https://fortitude21.com/product-antistatic-hdpe-jerrycan",
        "un_status": "UN version available"
      }
    ],
    "quote_url": "https://fortitude21.com/contact-us?src=api-un-decode&cat=Industrial%20%26%20Chemical%20Containers&need=I%20need%20containers%20marked%20UN%203H1%2FY1.9%2F150.%0AContents%20(UN%20number%20and%20packing%20group)%3A%20%0ASize%3A%20%0AQuantity%3A%20"
  }
}

IBC inspection and test dates

Works out an IBC’s periodic test and inspection dates and the last month it may be filled, under the UN Model Regulations and ADR, or under US 49 CFR 180.352.

ParameterRequired or optionalWhat it takes
markOptionalThe IBC’s UN mark; the code and month of manufacture are read from it
codeOptionalThe IBC code, for example 31HA1, if you send no mark
madeOptionalMonth of manufacture as MM/YY, if you send no mark
leakOptionalMonth of the last leakproofness test, MM/YY
inspOptionalMonth of the last inspection, MM/YY
repairOptionalMonth of the last repair, MM/YY
bottleOptionalMonth the inner receptacle was replaced (remanufactured composite IBCs), MM/YY
regimeOptionalun (default) or us

GET /api/ibc-dates?mark=UN%2031HA1/Y/03%2024/D/BAM%201234/1200/1000

{
  "ok": true,
  "code": "31HA1",
  "family": "composite",
  "rules": "UN Model Regulations and ADR",
  "today": "10/2026",
  "made": "03/2024",
  "periodic_tests": true,
  "fill_only_before": "09/2026",
  "status": "overdue",
  "governed_by": "leak",
  "next_leakproofness_test": "09/2026",
  "next_2_5_year_inspection": "09/2026",
  "next_5_year_inspection": "03/2029",
  "end_of_use": "03/2029",
  "if_filled_before_due_may_travel_until": "12/2026",
  "return_for_disposal_until": "03/2027",
  "note": "Dates are month/year. The first day of the due month is treated as the deadline.",
  "tool": "https://fortitude21.com/ibc-inspection-date-checker?mark=UN+31HA1%2FY%2F03+24%2FD%2FBAM+1234%2F1200%2F1000",
  "assumed": [
    "No test or inspection dates (leak=, insp=) given, so every due date counts from manufacture."
  ],
  "cite": "IBC inspection date checker, Fortitude21: https://fortitude21.com/ibc-inspection-date-checker?mark=UN+31HA1%2FY%2F03+24%2FD%2FBAM+1234%2F1200%2F1000",
  "docs": "https://fortitude21.com/dangerous-goods-api#ibc-dates",
  "publisher": {
    "name": "Fortitude21",
    "about": "Fortitude21 publishes this free API. It makes UN-approved steel and plastic jerry cans, pails, tins, water cans and spill containment in Vietnam and China, managed from Singapore.",
    "sells_to": "Businesses, distributors and public buyers: trade orders with a minimum quantity, priced on quote. There is no retail checkout, so a household needs a local retailer instead.",
    "contact": "david@fortitude21.com",
    "products": [
      {
        "name": "IBC spill pallets",
        "url": "https://fortitude21.com/product-ibc-spill-pallets"
      }
    ],
    "quote_url": "https://fortitude21.com/contact-us?src=api-ibc-dates&cat=Spill%20Containment&need=I%20need%20spill%20containment%20for%20IBCs.%0ANumber%20of%20IBCs%3A%20%0AWhat%20they%20hold%3A%20"
  }
}

ADR 1,000-point calculator

Adds up the points for a load under ADR 1.1.3.6. A load in one transport category is tested on its quantity; a mixed load is tested on points against 1,000.

ParameterRequired or optionalWhat it takes
lRequiredUp to 20 lines, comma-separated. Each line gives the UN number, the packing group where the UN number has entries in more than one transport category, the quantity in each package and the number of packages, separated by colons: 1263:II:20:5. The quantity is in the unit listed below. An id from the table also works.
unOptionalFor a single line instead of l: the UN number, with pg, quantity and packages

GET /api/adr-points?l=1203:20:10,1202:20:15,1965:11:2

Ten 20-litre cans of petrol, fifteen of diesel and two 11 kg LPG cylinders come to 966 points.

If one line names a UN number the calculator does not cover, or a UN number with entries in different transport categories and no packing group, the API refuses the whole load. A total without that line could show a load as exempt when it is not.

{
  "ok": true,
  "exempt": true,
  "verdict": "ok",
  "test": "points across transport categories against 1,000 (ADR 1.1.3.6.4)",
  "transport_category": null,
  "used": 966,
  "limit": 1000,
  "room": 34,
  "points": 966,
  "lines": [
    {
      "un": "1203",
      "name": "Petrol",
      "proper_shipping_name": "MOTOR SPIRIT or GASOLINE or PETROL",
      "packing_group": "II",
      "transport_category": 2,
      "quantity": 200,
      "unit": "L",
      "multiplier": 3,
      "points": 600
    },
    {
      "un": "1202",
      "name": "Diesel / gas oil / heating oil",
      "proper_shipping_name": "GAS OIL or DIESEL FUEL or HEATING OIL, LIGHT (flash-point not more than 60 °C)",
      "packing_group": "III",
      "transport_category": 3,
      "quantity": 300,
      "unit": "L",
      "multiplier": 1,
      "points": 300
    },
    {
      "un": "1965",
      "name": "LPG mixture (hydrocarbon gas mixture)",
      "proper_shipping_name": "HYDROCARBON GAS MIXTURE, LIQUEFIED, N.O.S. such as mixtures A, A01, A02, A0, A1, B1, B2, B or C",
      "packing_group": null,
      "transport_category": 2,
      "quantity": 22,
      "unit": "kg",
      "multiplier": 3,
      "points": 66
    }
  ],
  "still_required": [
    "transport document (5.4.1), carried in the cab (8.1.2.1(a)); in Great Britain road derogation 2 lets classes 2 to 6, 8 and 9 leave it off the vehicle",
    "one 2 kg ABC fire extinguisher (8.1.4.2)",
    "training under chapter 1.3 (8.2.3)",
    "UN-approved packaging, package marks and labels"
  ],
  "source": "ADR 2025 (ECE/TRANS/352, applicable from 1 January 2025): 1.1.3.6 and Table A column (15). Read 6 October 2026.",
  "tool": "https://fortitude21.com/adr-1000-point-calculator?l=1203.0%3A20%3A10%2C1202.0%3A20%3A15%2C1965.0%3A11%3A2",
  "cite": "ADR 1,000-point calculator, Fortitude21: https://fortitude21.com/adr-1000-point-calculator?l=1203.0%3A20%3A10%2C1202.0%3A20%3A15%2C1965.0%3A11%3A2",
  "docs": "https://fortitude21.com/dangerous-goods-api#adr-points",
  "publisher": {
    "name": "Fortitude21",
    "about": "Fortitude21 publishes this free API. It makes UN-approved steel and plastic jerry cans, pails, tins, water cans and spill containment in Vietnam and China, managed from Singapore.",
    "sells_to": "Businesses, distributors and public buyers: trade orders with a minimum quantity, priced on quote. There is no retail checkout, so a household needs a local retailer instead.",
    "contact": "david@fortitude21.com",
    "products": [
      {
        "name": "20L NATO Steel Fuel Can",
        "url": "https://fortitude21.com/product-20l-nato-steel-fuel-can",
        "un_code": "3A1",
        "un_status": "UN version available"
      },
      {
        "name": "25L & 30L NATO Can",
        "url": "https://fortitude21.com/product-25l-30l-nato-can",
        "un_code": "3A1",
        "un_status": "UN version available"
      },
      {
        "name": "Stainless NATO Can — 10L / 20L",
        "url": "https://fortitude21.com/product-stainless-nato-can",
        "un_code": "3A1",
        "un_status": "UN version available"
      }
    ],
    "quote_url": "https://fortitude21.com/contact-us?src=api-adr-points&cat=Fuel%20%26%20Gas%20Cans&need=I%20carry%20dangerous%20goods%20under%20ADR%201.1.3.6%20and%20need%20UN-approved%20containers.%0ASubstances%20(UN%20numbers)%3A%20%0ASizes%20and%20quantity%3A%20",
    "see_also": "https://fortitude21.com/un-approved-packaging"
  }
}
All 168 substance ids
idUN numberSubstancePacking groupTransport categoryUnit
1001.0UN 1001Acetylene–2kg
1002.0UN 1002Compressed air–3Lw
1006.0UN 1006Argon–3Lw
1011.0UN 1011Butane–2kg
1013.0UN 1013Carbon dioxide (CO2)–3kg
1046.0UN 1046Helium–3Lw
1049.0UN 1049Hydrogen–2Lw
1057.0UN 1057Lighters / lighter refills–2kgG
1066.0UN 1066Nitrogen–3Lw
1072.0UN 1072Oxygen–3Lw
1075.0UN 1075LPG–2kg
1090.0UN 1090AcetoneII2L
1114.0UN 1114BenzeneII2L
1120.0UN 1120ButanolII2L
1120.1UN 1120ButanolIII3L
1123.0UN 1123Butyl acetateII2L
1123.1UN 1123Butyl acetateIII3L
1133.0UN 1133Adhesive (solvent-based)I1L
1133.1UN 1133Adhesive (solvent-based)II2L
1133.2UN 1133Adhesive (solvent-based)III3L
1170.0UN 1170EthanolII2L
1170.1UN 1170EthanolIII3L
1173.0UN 1173Ethyl acetateII2L
1193.0UN 1193MEK (methyl ethyl ketone)II2L
1202.0UN 1202Diesel / gas oil / heating oilIII3L
1203.0UN 1203PetrolII2L
1208.0UN 1208HexaneII2L
1210.0UN 1210Printing inkI1L
1210.1UN 1210Printing inkII2L
1210.2UN 1210Printing inkIII3L
1219.0UN 1219IPA (isopropyl alcohol)II2L
1223.0UN 1223Kerosene (paraffin)III3L
1224.0UN 1224KetonesII2L
1224.1UN 1224KetonesIII3L
1230.0UN 1230MethanolII2L
1245.0UN 1245MIBK (methyl isobutyl ketone)II2L
1263.0UN 1263Paint (solvent-based)I1L
1263.1UN 1263Paint (solvent-based)II2L
1263.2UN 1263Paint (solvent-based)III3L
1266.0UN 1266Perfume / aftershave (perfumery products)II2L
1266.1UN 1266Perfume / aftershave (perfumery products)III3L
1268.0UN 1268Petroleum distillatesI1L
1268.1UN 1268Petroleum distillatesII2L
1268.2UN 1268Petroleum distillatesIII3L
1274.0UN 1274n-PropanolII2L
1274.1UN 1274n-PropanolIII3L
1294.0UN 1294TolueneII2L
1299.0UN 1299TurpentineIII3L
1300.0UN 1300Turpentine substituteII2L
1300.1UN 1300Turpentine substituteIII3L
1307.0UN 1307XyleneII2L
1307.1UN 1307XyleneIII3L
1593.0UN 1593Dichloromethane (DCM)III2L
1719.0UN 1719Caustic alkali liquidII2L
1719.1UN 1719Caustic alkali liquidIII3L
1760.0UN 1760Corrosive liquidI1L
1760.1UN 1760Corrosive liquidII2L
1760.2UN 1760Corrosive liquidIII3L
1779.0UN 1779Formic acid (>85 %)II2L
1789.0UN 1789Hydrochloric acidII2L
1789.1UN 1789Hydrochloric acidIII3L
1791.0UN 1791Hypochlorite solutionII2L
1791.1UN 1791Hypochlorite solutionIII3L
1805.0UN 1805Phosphoric acid solutionIII3L
1814.0UN 1814Potassium hydroxide solutionII2L
1814.1UN 1814Potassium hydroxide solutionIII3L
1824.0UN 1824Sodium hydroxide solution (caustic soda)II2L
1824.1UN 1824Sodium hydroxide solution (caustic soda)III3L
1830.0UN 1830Sulphuric acid (>51 %)II2L
1863.0UN 1863Jet fuel (aviation turbine fuel)I1L
1863.1UN 1863Jet fuel (aviation turbine fuel)II2L
1863.2UN 1863Jet fuel (aviation turbine fuel)III3L
1866.0UN 1866Resin solutionI1L
1866.1UN 1866Resin solutionII2L
1866.2UN 1866Resin solutionIII3L
1897.0UN 1897PerchloroethyleneIII2L
1950.0UN 1950Aerosol, asphyxiant–3kgG
1950.1UN 1950Aerosol, corrosive–1kgG
1950.2UN 1950Aerosol, corrosive, oxidizing–1kgG
1950.3UN 1950Aerosol, flammable–2kgG
1950.4UN 1950Aerosol, flammable, corrosive–1kgG
1950.5UN 1950Aerosol, oxidizing–3kgG
1950.6UN 1950Aerosol, toxic–1kgG
1950.7UN 1950Aerosol, toxic, corrosive–1kgG
1950.8UN 1950Aerosol, toxic, flammable–1kgG
1950.9UN 1950Aerosol, toxic, flammable, corrosive–1kgG
1950.10UN 1950Aerosol, toxic, oxidizing–1kgG
1950.11UN 1950Aerosol, toxic, oxidizing, corrosive–1kgG
1965.0UN 1965LPG mixture (hydrocarbon gas mixture)–2kg
1978.0UN 1978Propane–2kg
1987.0UN 1987AlcoholsII2L
1987.1UN 1987AlcoholsIII3L
1992.0UN 1992Flammable liquid, toxicI1L
1992.1UN 1992Flammable liquid, toxicII2L
1992.2UN 1992Flammable liquid, toxicIII3L
1993.0UN 1993Flammable liquidI1L
1993.1UN 1993Flammable liquidII2L
1993.2UN 1993Flammable liquidIII3L
2014.0UN 2014Hydrogen peroxide (20-60 %)II2L
2031.0UN 2031Nitric acidI1L
2031.1UN 2031Nitric acidII2L
2055.0UN 2055StyreneIII3L
2209.0UN 2209Formaldehyde solution (formalin)III3L
2672.0UN 2672Ammonia solution (10-35 %)III3L
2789.0UN 2789Glacial acetic acidII2L
2790.0UN 2790Acetic acid solutionII2L
2790.1UN 2790Acetic acid solutionIII3L
2794.0UN 2794Lead-acid battery, wet–3kgG
2795.0UN 2795Alkaline battery, wet–3kgG
2796.0UN 2796Battery acid (sulphuric acid <=51 %)II2L
2797.0UN 2797Battery fluid, alkaliII2L
2810.0UN 2810Toxic liquid, organicI1L
2810.1UN 2810Toxic liquid, organicII2L
2810.2UN 2810Toxic liquid, organicIII2L
2902.0UN 2902Pesticide, liquid, toxicI1L
2902.1UN 2902Pesticide, liquid, toxicII2L
2902.2UN 2902Pesticide, liquid, toxicIII2L
2903.0UN 2903Pesticide, toxic, flammableI1L
2903.1UN 2903Pesticide, toxic, flammableII2L
2903.2UN 2903Pesticide, toxic, flammableIII2L
2924.0UN 2924Flammable liquid, corrosiveI1L
2924.1UN 2924Flammable liquid, corrosiveII2L
2924.2UN 2924Flammable liquid, corrosiveIII3L
2984.0UN 2984Hydrogen peroxide (8-20 %)III3L
2991.0UN 2991Carbamate pesticide, toxic, flammableI1L
2991.1UN 2991Carbamate pesticide, toxic, flammableII2L
2991.2UN 2991Carbamate pesticide, toxic, flammableIII2L
2992.0UN 2992Carbamate pesticide, toxicI1L
2992.1UN 2992Carbamate pesticide, toxicII2L
2992.2UN 2992Carbamate pesticide, toxicIII2L
3017.0UN 3017Organophosphorus pesticide, toxic, flammableI1L
3017.1UN 3017Organophosphorus pesticide, toxic, flammableII2L
3017.2UN 3017Organophosphorus pesticide, toxic, flammableIII2L
3018.0UN 3018Organophosphorus pesticide, toxicI1L
3018.1UN 3018Organophosphorus pesticide, toxicII2L
3018.2UN 3018Organophosphorus pesticide, toxicIII2L
3021.0UN 3021Pesticide, flammable, toxicI1L
3021.1UN 3021Pesticide, flammable, toxicII2L
3065.0UN 3065Spirits (alcoholic beverages)II2L
3065.1UN 3065Spirits (alcoholic beverages)III3L
3066.0UN 3066Paint (corrosive)II2L
3066.1UN 3066Paint (corrosive)III3L
3077.0UN 3077Environmentally hazardous solidIII3kg
3082.0UN 3082Environmentally hazardous liquidIII3L
3149.0UN 3149Peracetic acid / hydrogen peroxide mixtureII2L
3264.0UN 3264Corrosive liquid, acidic, inorganicI1L
3264.1UN 3264Corrosive liquid, acidic, inorganicII2L
3264.2UN 3264Corrosive liquid, acidic, inorganicIII3L
3266.0UN 3266Corrosive liquid, basic, inorganicI1L
3266.1UN 3266Corrosive liquid, basic, inorganicII2L
3266.2UN 3266Corrosive liquid, basic, inorganicIII3L
3272.0UN 3272EstersII2L
3272.1UN 3272EstersIII3L
3295.0UN 3295Hydrocarbons, liquidI1L
3295.1UN 3295Hydrocarbons, liquidII2L
3295.2UN 3295Hydrocarbons, liquidIII3L
3352.0UN 3352Pyrethroid pesticide, toxicI1L
3352.1UN 3352Pyrethroid pesticide, toxicII2L
3352.2UN 3352Pyrethroid pesticide, toxicIII2L
3412.0UN 3412Formic acid (5-85 %)II2L
3412.1UN 3412Formic acid (5-85 %)III3L
3469.0UN 3469Paint, flammable, corrosiveI1L
3469.1UN 3469Paint, flammable, corrosiveII2L
3469.2UN 3469Paint, flammable, corrosiveIII3L
3470.0UN 3470Paint, corrosive, flammableII2L
3475.0UN 3475Ethanol-petrol blend (>10 % ethanol)II2L
3480.0UN 3480Lithium-ion batteries–2kgG
3481.0UN 3481Lithium-ion batteries in or with equipment–2kgG

Bund and spill pallet sizing

Applies the secondary containment rule for a country or region to the containers you store, and returns the minimum sump capacity, the rule that governs and our spill pallets that pass.

ParameterRequired or optionalWhat it takes
regionOptionalOne of gb-eng, gb-wls, gb-sct, gb-nir, ie, de, fr, nl, es, us, ca, au, nz, sg, jp, world. Default gb-eng. Names such as England, USA, Texas or Germany are read too, and the answer says how. A region it cannot place returns an error, never another country’s rule.
liquidOptionaloil (default), flam or other; waste in the US
drumsOptionalNumber of 205-litre drums
ibcsOptionalNumber of 1,000-litre IBCs
smallOptionalNumber of smaller containers
smallSizeOptionalLitres in each small container (default 20)
otherOptionalNumber of other containers
otherSizeOptionalLitres in each other container
modeOptionalbund (default) or tray

GET /api/bund-size?region=gb-eng&liquid=oil&drums=4

{
  "ok": true,
  "region": {
    "id": "gb-eng",
    "name": "England"
  },
  "liquid": "Oil or fuel",
  "containers": {
    "drums_205l": 4,
    "ibcs_1000l": 0,
    "small": null,
    "other": null
  },
  "total_stored_l": 820,
  "mode": "bund",
  "minimum_capacity_l": 226,
  "governs": "largest",
  "working": [
    "Total stored: 820 L",
    "110% of the largest container: 226 L",
    "25% of the total: 205 L",
    "The largest-container rule governs."
  ],
  "in_scope": true,
  "scope_note": null,
  "rule": {
    "instrument": "Control of Pollution (Oil Storage) (England) Regulations 2001",
    "provision": "reg 3(2)(a) and 3(5); scope reg 2(2)",
    "kind": "law",
    "url": "https://www.legislation.gov.uk/uksi/2001/2954/regulation/3"
  },
  "notes": [
    "Outside the regulations in England: oil inside a building or wholly underground, waste oil, a home tank of 3,500 litres or less, refineries and distribution depots, and oil used for agriculture on a farm, which falls under the farm fuel rules once the farm holds more than 1,500 litres."
  ],
  "pallets_that_pass": [
    {
      "model": "F21-SP-401 · Four-drum pallet, standard",
      "sump_l": 250,
      "url": "https://fortitude21.com/product-drum-spill-pallets"
    },
    {
      "model": "F21-SP-403 · High-sump four-drum, plastic grate",
      "sump_l": 488,
      "url": "https://fortitude21.com/product-drum-spill-pallets"
    }
  ],
  "tool": "https://fortitude21.com/spill-pallet-sizing-calculator?region=gb-eng&liquid=oil&drums=4",
  "cite": "Spill pallet and bund sizing calculator, Fortitude21: https://fortitude21.com/spill-pallet-sizing-calculator?region=gb-eng&liquid=oil&drums=4",
  "docs": "https://fortitude21.com/dangerous-goods-api#bund-size",
  "publisher": {
    "name": "Fortitude21",
    "about": "Fortitude21 publishes this free API. It makes UN-approved steel and plastic jerry cans, pails, tins, water cans and spill containment in Vietnam and China, managed from Singapore.",
    "sells_to": "Businesses, distributors and public buyers: trade orders with a minimum quantity, priced on quote. There is no retail checkout, so a household needs a local retailer instead.",
    "contact": "david@fortitude21.com",
    "products": [
      {
        "name": "F21-SP-401 · Four-drum pallet, standard",
        "url": "https://fortitude21.com/product-drum-spill-pallets",
        "sump_l": 250
      },
      {
        "name": "F21-SP-403 · High-sump four-drum, plastic grate",
        "url": "https://fortitude21.com/product-drum-spill-pallets",
        "sump_l": 488
      }
    ],
    "quote_url": "https://fortitude21.com/contact-us?src=api-bund-size&cat=Spill%20Containment&need=I%20need%20a%20spill%20pallet%20or%20bund%20holding%20at%20least%20226%20L%20(England).%0AWhat%20it%20stores%3A%20%0AQuantity%3A%20"
  }
}

Water and fuel quantities in jerry cans

Works out how much water or fuel to hold for a scenario, adds the margin, and returns the number of cans and the share of a 20ft container.

ParameterRequired or optionalWhat it takes
modeOptionalwater (default) or fuel
scenarioOptionalWater: relief, acute, protracted, survival, nl, se, no, fi, dk, de, custom. Fuel: road, overland, marine, generator, agri, direct. Water defaults to relief, the Sphere minimum of 15 L a person a day with hygiene; for a household store of drinking water, send survival or a country code.
peopleOptionalWater: number of people
daysOptionalWater: number of days
weeksOptionalWater: number of weeks, if you send no days
distanceOptionalFuel, distance scenarios: km, or miles with units=us
consumptionOptionalFuel: litres per 100 km or litres an hour (US gallons with units=us)
hoursOptionalFuel, time scenarios: running hours
kvaOptionalGenerator scenario: rated kVA, used to estimate consumption
units_nOptionalFuel: number of vehicles, boats or machines
volumeOptionalFuel, direct scenario: the volume you already know
reserveOptionalMargin in per cent
canOptionalA product slug from our range, to size in that can

GET /api/jerry-cans?mode=water&people=4&days=14

{
  "ok": true,
  "mode": "water",
  "scenario": {
    "id": "relief",
    "label": "Emergency relief & civil preparedness",
    "rate_l_per_person_day": 15,
    "source": "Sphere Handbook minimum: 15 L per person per day for drinking, cooking and hygiene."
  },
  "working": "4 people × 14 days × 15 L a day",
  "base_l": 840,
  "margin_pct": 10,
  "total_l": 924,
  "can": {
    "name": "20L Stainless Steel Water Can",
    "litres": 20,
    "url": "https://fortitude21.com/product-20l-stainless-water-can"
  },
  "cans": 47,
  "containers_20ft": 0.06,
  "tool": "https://fortitude21.com/jerry-can-sizing-calculator?mode=water&people=4&days=14",
  "assumed": [
    "No scenario given, so the Sphere humanitarian minimum of 15 L a person a day (drinking, cooking and basic hygiene) was used. For a household store of drinking and cooking water, pass scenario=survival (3 L a day) or national advice: nl, se or dk (3 L), no (2.86 L), fi or de (2 L)."
  ],
  "cite": "Jerry can sizing calculator, Fortitude21: https://fortitude21.com/jerry-can-sizing-calculator?mode=water&people=4&days=14",
  "docs": "https://fortitude21.com/dangerous-goods-api#jerry-cans",
  "publisher": {
    "name": "Fortitude21",
    "about": "Fortitude21 publishes this free API. It makes UN-approved steel and plastic jerry cans, pails, tins, water cans and spill containment in Vietnam and China, managed from Singapore.",
    "sells_to": "Businesses, distributors and public buyers: trade orders with a minimum quantity, priced on quote. There is no retail checkout, so a household needs a local retailer instead.",
    "contact": "david@fortitude21.com",
    "products": [
      {
        "name": "20L Stainless Steel Water Can",
        "url": "https://fortitude21.com/product-20l-stainless-water-can"
      }
    ],
    "quote_url": "https://fortitude21.com/contact-us?src=api-jerry-cans&cat=Water%20%26%20Food-Grade%20Jerry%20Cans&need=I%20need%2047%20%C3%97%2020L%20Stainless%20Steel%20Water%20Can%20(924%20L).%0ADestination%20market%3A%20"
  }
}

For AI assistants

Every tool page also answers by link: open /un-number-packaging-finder?un=1203 and the answer is in the page before any script runs. Our llms.txt lists the tools, the guides and these endpoints.

Building something with dangerous goods data?

Tell us what you are building and which answers you need. If an endpoint is missing a field, we would like to hear about it.

Chat on WhatsApp