API docs

Locations

Permission: locations (read / write). A location-limited key sees and changes only its own locations.

GET /v1/locations (updated_since, limit, cursor) and GET /v1/locations/{id}.

{
  "object": "location",
  "id": 93,
  "name": "Demo Armory — Stow",
  "address": { "line1": "3400 Kent Rd", "line2": null, "city": "Stow", "state": "OH", "postal_code": "44224", "country": "US" },
  "phone": "330-555-0100",
  "email": "stow@demoarmory.example",
  "timezone": "America/New_York",
  "tax_rate_bps": 725,
  "business_hours": { "mon": [["10:00", "19:00"]], "sun": [] },
  "status": "active",
  "is_default": true,
  "offers_pickup": true,
  "bigcommerce_location_id": 1,
  "latitude": 41.1595,
  "longitude": -81.4404,
  "updated_at": "2026-09-06T12:00:00Z"
}

The location's FFL number and licence details aren't in the API.

Update contact details and hours

PATCH /v1/locations/{id} (write) changes the public-facing details a listing tool keeps in step (Google Business Profile, Yext and similar): phone, email and business_hours. Nothing else.

curl -X PATCH https://app.ironregister.com/api/v1/locations/93 \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{
    "phone": "330-555-0100",
    "business_hours": {
      "mon": [["10:00", "19:00"]],
      "tue": [["10:00", "19:00"]],
      "wed": [["10:00", "19:00"]],
      "thu": [["10:00", "20:00"]],
      "fri": [["10:00", "20:00"]],
      "sat": [["09:00", "17:00"]],
      "sun": []
    }
  }'

business_hours

  • An object keyed by day: mon, tue, wed, thu, fri, sat, sun.
  • Each day is a list of ["HH:MM", "HH:MM"] open/close pairs, in the location's local time (its timezone). Close must be after open; 24:00 is allowed as a close.
  • A missing day, or [], is closed. Several pairs are split shifts, e.g. [["09:00","12:00"],["13:00","18:00"]].
  • null clears the hours.
  • On a shop with the Range add-on, hours also bound when lanes can be booked.

A bad shape is 400 VALIDATION_ERROR (e.g. business_hours.mon). An empty email or phone clears it.

What stays in Iron Register

Any other field in the body is refused with 409 FIELD_NOT_WRITABLE, listing the fields in details.fields:

  • the name and address,
  • the tax rate, which changes what the register charges,
  • FFL and bound-book settings, which are federal records,
  • pickup settings, which are mirrored to BigCommerce,
  • creating or removing a location, which changes the shop's plan.

Webhooks

location.created fires when a location is added in Iron Register. location.updated fires after every change made through the API, and after changes made in Iron Register to a location's tax rate, FFL details, or trade-in and consignment settings.