πŸš€ OSOW API is now live!Get your API key β†’

πŸ“˜ LoadFlow OSOW API Documentation

The LoadFlow API provides instant access to oversize/overweight (OSOW) permit rules across all 50 U.S. states. Easily fetch regulations, compare dimensions, search specific rule fields, and automate your permitting workflows.

Use this documentation to understand authentication, rate limits, endpoints by category, webhooks, error handling, and field-by-field definitions.

πŸ” Authentication

Every request to the LoadFlow API must be authenticated with your personal API key. You must pass the key in the request header using the Authorization scheme:

Authorization: Bearer YOUR_API_KEY

➀ To obtain a key, register here.

❗ Never expose your API key in frontend browser code. Treat it like a password.

🚦 Rate Limits

Each plan has a monthly request quota and burst protection. If you exceed your limit, responses will return status 429 Too Many Requests.

PlanRequests / MonthBurst ProtectionError If Exceeded
Free1005 / day429
Pro2,000200 / hour429
Ultra10,0001,000 / hour429
Mega50,000+5,000 / hour∞ (Contact us)

LoadFlow APIs enforce fair use policies. Rate limits reset monthly. Upgrade your plan to increase volume or burst protection.

πŸ“Œ Core State Data

These endpoints let you fetch oversize/overweight permit rulebooks per U.S. state. They are the core of LoadFlow’s dataset.

  • GET /api/v1/statesFree

    Returns a list of all 50 U.S. states with codes and display names.

    fetch("/api/v1/states")
  • GET /api/v1/state/{state}Pro

    Returns the full permit rulebook for a given state (e.g., TX, California). Includes weight limits, travel restrictions, escorts, etc.

    fetch("/api/v1/state/Texas")
  • GET /api/v1/state/{state}/fieldsPro

    Returns all field keys available for a given state β€” useful for field-level queries or documentation rendering.

    fetch("/api/v1/state/Texas/fields")
  • GET /api/v1/state/{state}/fields/{field_path}Pro

    Returns a specific field value from a state's rulebook. Supports nested keys via dot-path (e.g., legal.height or escort.rules.specialCases).

    fetch("/api/v1/state/Texas/fields/legal.height")
Field definitions and nesting paths are shown in the Field Reference section.

πŸ” Search & Compare

These endpoints allow advanced filtering across the 50-state rulebook, field-level queries, and direct comparisons between jurisdictions.

  • GET /api/v1/states/search-fieldsPro

    Search by rule field + value. Useful for finding states with specific height limits, escort rules, and more.

    fetch("/api/v1/states/search-fields?field=legal.height&value=14 ft")
  • GET /api/v1/states/tagged/{tag}Pro

    Find states that match specific tag categories like 'bridge-law', 'mountain', 'coastal', or 'restrictive'.

    fetch("/api/v1/states/tagged/mountain")
  • GET /api/v1/compare/{state1}/{state2}/field/{field_path}Pro

    Compare one rule across two states (e.g., Texas vs California for axleSpacings or night travel).

    fetch("/api/v1/compare/Texas/California/field/travel.night")
Want to search multiple fields or use advanced filters? Contact support to discuss enterprise filters or full rulebook sync access.

πŸ“¦ Dataset Access

These endpoints allow Mega users to export the entire 50-state rulebook for offline use, system ingestion, or bulk editing. Formats include JSON, CSV, and ZIP.

  • GET /api/v1/dataset/fullMega

    Full JSON dump of all 50 states. Deep nested data. ~300–500 KB in size.

    fetch("/api/v1/dataset/full", { headers: { "x-api-key": "YOUR_KEY" } })
  • GET /api/v1/dataset/downloadMega

    Download full dataset as CSV, JSON, or ZIP format (select via query param: ?format=csv).

    fetch("/api/v1/dataset/download?format=csv", { headers: { "x-api-key": "YOUR_KEY" } })
Want automated weekly exports to your system or S3? Request a webhook sync.

πŸ“‘ Webhooks & Sync

Webhooks let you receive real-time updates when dataset values change or new rules are published. Use the test tool below to simulate deliveries. Retry behavior, logging, and schema inspection are included.

  • POST /api/v1/webhooks/testMega

    Trigger a test webhook to your registered endpoint. Useful for validating payloads.

    fetch("/api/v1/webhooks/test", {
      method: "POST",
      headers: {
        "x-api-key": "YOUR_KEY",
        "Content-Type": "application/json"
      },
      body: JSON.stringify({ endpoint: "https://yourserver.com/hook" })
    })
  • GET /api/v1/webhooks/schemaUltra

    Get the JSON schema for real webhook delivery events (event_type, payload).

    fetch("/api/v1/webhooks/schema", {
      headers: { "x-api-key": "YOUR_KEY" }
    })
  • POST /api/v1/webhooks/subscribeMega

    Register your endpoint for dataset or field update events.

    fetch("/api/v1/webhooks/subscribe", {
      method: "POST",
      headers: {
        "x-api-key": "YOUR_KEY",
        "Content-Type": "application/json"
      },
      body: JSON.stringify({
        event: "field_change",
        target_url: "https://yourserver.com/hook"
      })
    })

Webhooks automatically retry up to 5 times. Logs are viewable via the Enterprise dashboard.

🧠 Licensing & Plans

These endpoints let you programmatically check the plan level of an API key, understand pricing tiers, and retrieve what each plan grants access to.

  • GET /api/v1/keys/verifyPro

    Check if an API key is valid and return associated plan info.

    fetch("/api/v1/keys/verify", {
      headers: { "x-api-key": "YOUR_KEY" }
    })
  • GET /api/v1/licenses/tieredUltra

    Get all plan tiers, including rate limits and pricing info.

    fetch("/api/v1/licenses/tiered", {
      headers: { "x-api-key": "YOUR_KEY" }
    })
  • GET /api/v1/plan/{state}Pro

    View required plan for each field in a specific state.

    fetch("/api/v1/plan/Texas", {
      headers: { "x-api-key": "YOUR_KEY" }
    })

Plan verification is useful if you allow sub-users or assign plan roles dynamically.

πŸ”– Field-Level Metadata

Each rule in the dataset includes standardized metadata that allows for smart autofill, validation, and comparison. Use the following endpoint to retrieve schema-level info:

  • GET /api/v1/docs/fields/{field}Pro

    Returns metadata about a specific rule field, including description, label, input format, plan tier, and value type.

    fetch("/api/v1/docs/fields/axleSpacings", {
      headers: { "x-api-key": "YOUR_KEY" }
    })

🧠 Example Metadata Response

{
  "field": "axleSpacings",
  "label": "Axle Spacings (inches)",
  "type": "array<number>",
  "requiredFor": ["Mega"],
  "description": "Distance in inches between each axle, used for superload thresholds",
  "category": "Weights & Axles",
  "units": "inches",
  "nullable": false,
  "deprecated": false
}

You can use this data to dynamically render form fields or highlight fields needing upgrades.

πŸ“‘ Webhooks & Event Delivery

Use webhooks to automatically receive updates when new state data is published, rules change, or errors are detected in submissions. Webhooks are available for Mega and Enterprise plans.

  • POST /api/v1/webhooks/testMega

    Triggers a simulated webhook event to your configured listener URL. Helpful for development and debugging integrations.

  • GET /api/v1/webhooks/schemaUltra

    Returns the JSON schema for all webhook events (including field changes, rule updates, or threshold alerts).

πŸ”§ Sample Webhook Payload

{
  "event": "rule.updated",
  "state": "Colorado",
  "field": "escortRequirements.night",
  "old_value": "No escort",
  "new_value": "1 pilot required",
  "timestamp": "2025-07-01T04:00:00Z"
}

Webhook URLs must respond with a 2xx status code within 5 seconds. You can configure failover behavior in your dashboard.

πŸ§ͺ Testing & Demo Tools

Test API functionality before integrating it into your stack. No code required. All endpoints in demo mode return mock data for exploration and validation.

  • GET /demoFree

    Launch the interactive API demo dashboard. Pre-filled sample requests show how to query state data.

  • GET /api/v1/docs/sample-payloadPro+

    Returns a full sample payload for the `/state/${state}` route. Useful for generating tests or validating integration logic.

πŸ›  Example Curl Command

curl -X GET "https://api.loadflowlogistics.com/api/v1/state/texas" \
  -H "Authorization: Bearer YOUR_API_KEY"

Swap texas with any 2-letter code or full name. This example works for all 50 U.S. states.

πŸ“‹ License & Plan Tools

Determine which API tier is required to access a given field, verify a key’s plan, or fetch full tier descriptions and pricing metadata for gating logic.

  • GET /api/v1/keys/verifyPro

    Returns a JSON object with the API key's plan, limits, and usage.

    {
      "plan": "Pro",
      "quota": 2000,
      "used": 327,
      "resets": "2025-08-01"
    }
  • GET /api/v1/licenses/tieredUltra

    Returns metadata for all tiers including limits, price, and perks. Useful for onboarding dashboards.

  • GET /api/v1/plan/{"{"{state}"}"}Pro

    Returns the minimum required plan for every field in a given state’s rulebook. This lets you dynamically grey-out UI fields for users on lower plans.

    {
      "maxGrossWeight": "Free",
      "escortRules": "Pro",
      "bridgeFormula": "Ultra"
    }

🧠 Field-Level Metadata

For each rule field in the dataset (e.g. maxGrossWeight, axleSpacingRules), you can request documentation, tags, and field requirements.

  • GET /api/v1/docs/fields/{field}Pro

    Returns a JSON object with a description of the field, tags (e.g., "escort", "weight"), units, and examples.

    {
      "field": "axleSpacingRules",
      "description": "Minimum axle spacing requirements by state and configuration.",
      "tags": ["spacing", "weight", "compliance"],
      "units": "inches",
      "example": "48 in between axle 1 and 2, 60 in between 2 and 3"
    }
  • πŸ’‘ Use Cases

    • Show tooltips in frontend UI for permit form fields
    • Auto-suggest help text in your SaaS product
    • Filter dataset by tag (e.g., show only escort-related fields)
    • Build guided tutorials for field-level rules

πŸ§ͺ API Usage Examples (Multi-language)

Below are real-world examples of calling the API from Python, JavaScript, cURL, and Postman.

🐍 Python (requests)

import requests

headers = {
  "Authorization": "Bearer YOUR_API_KEY"
}

response = requests.get("https://api.loadflowlogistics.com/api/v1/state/Texas", headers=headers)

print(response.json())

🟨 JavaScript (fetch)

fetch("https://api.loadflowlogistics.com/api/v1/state/Texas", {
  headers: {
    Authorization: "Bearer YOUR_API_KEY"
  }
})
  .then(res => res.json())
  .then(data => console.log(data));

πŸ’» cURL

curl -X GET https://api.loadflowlogistics.com/api/v1/state/Texas \
  -H "Authorization: Bearer YOUR_API_KEY"

πŸ“¬ Postman

Create a new request in Postman:

  • Method: GET
  • URL: https://api.loadflowlogistics.com/api/v1/state/Texas
  • Header: Authorization: Bearer YOUR_API_KEY

πŸ“Ά API Status & Uptime

These endpoints are useful for health monitoring, CI/CD checks, or alerting systems.

  • GET /api/v1/healthFree

    Basic health check – returns 200 OK if online

  • GET /api/v1/health/deepPro

    Checks DB, memory, external connections (slower)

  • GET /api/v1/versionFree

    Returns current API version & last dataset update

  • GET /api/v1/states/stalePro

    States whose rules haven't updated in >90 days

Pro tip: Add /health to your UptimeRobot or Cronitor integrations for automatic monitoring.

🧩 Field Reference Guide

Use these field_path values with the endpoint /api/v1/state/{"{"{state}"}"}/fields/{"{field_path}"}. Each path returns the value of that specific rule.

Field PathDescription
legal_dimensions.widthLegal width in feet/inches
legal_dimensions.heightLegal height limit
legal_dimensions.lengthMax legal vehicle length
superload_thresholds.gross_weightWeight that triggers superload status
escort_requirements.widthWidth thresholds for pilot/escort vehicles
submission_methodsHow to submit permits (portal, fax, etc.)
travel_restrictions.weekendWeekend travel limitations
night_travelWhether night travel is allowed
signing_requirements.front_signIf 'Oversize Load' signs are required
fees.permit_flatFlat fee amount for basic permits
turnaround_timeEstimated permit processing delay

Most fields are dot-separated. Nested arrays (e.g., axles[1].spacing) are not supported in all plans.

πŸ“ˆ Analytics & Logging

OSOW API plans include usage tracking by key, endpoint, and timestamp. Use this information to:

  • Monitor which endpoints are used most often
  • Audit usage volume by day or month
  • Debug API access from teams or third-party systems
  • Identify unauthorized or excessive usage
RouteCalls (24h)Avg Latency
/state/Texas51220ms
/state/California/fields/width23180ms
/compare/FL/GA/field/maxWeight11310ms

Want full JSON logs or webhook alerts on API activity? Contact support@loadflowlogistics.com for Enterprise logging features.

πŸ› οΈ SDK & Language Examples

The OSOW API can be accessed using any HTTP client. Below are working examples in different languages:

πŸ“‘ cURL

curl -X GET https://api.loadflowlogistics.com/api/v1/state/Texas \
  -H "Authorization: Bearer YOUR_API_KEY"

🐍 Python (requests)

import requests

headers = {
  "Authorization": "Bearer YOUR_API_KEY"
}

res = requests.get("https://api.loadflowlogistics.com/api/v1/state/Texas", headers=headers)
print(res.json())

🟦 JavaScript (Fetch)

fetch("https://api.loadflowlogistics.com/api/v1/state/Texas", {
  headers: {
    Authorization: "Bearer YOUR_API_KEY"
  }
})
  .then(res => res.json())
  .then(data => console.log(data));

You can also use Postman or Insomnia to interact with the API visually. A public Postman collection is coming soon.

🧩 Field Access Reference

Below is a sample of key data fields available in the dataset. Use /api/v1/state/{"{"{state}"}"}/fields/{field} to retrieve each field individually.

Field NameDescriptionTypePlan
legal_dimensions.widthMaximum legal width without permitstringFree
legal_dimensions.heightMax height without requiring permitstringFree
superload_thresholds.gross_weightWeight (lbs) beyond which a superload is triggerednumberPro
escort_requirements.frontWhether a front escort is requiredbooleanPro
travel_restrictions.weekendRestrictions on weekend travelstringUltra
submission_methods[]Accepted permit submission methodsarrayPro

This is a partial list. Full metadata is available via /api/v1/licenses/tiered.

πŸŽ₯ Video: Getting Started with LoadFlow API

Watch this quick demo to understand how to connect, authenticate, and pull data from the API in under 5 minutes.

πŸ™‹ Need more help?

Check our Frequently Asked Questions or reach out to support directly.

Documentation last updated: 7/18/2025

πŸ“¨Chat