LoadOptimizer.ai Health API
The Health API from LoadOptimizer.ai — 1 operation(s) for health.
The Health API from LoadOptimizer.ai — 1 operation(s) for health.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/loadoptimizer-ai:loadoptimizer-ai-health-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Load Optimizer Health API
version: 2.0.0
summary: Asynchronous box-packing / load-optimization API.
description: 'Submitting work is **asynchronous**: every solve is a *job* you create, poll, then collect.
This is the documentation of the **Load Optimizer API v2**: it describes what `/v2` supports;
what it does not describe is not supported.
## Job lifecycle
`queued → running → succeeded | failed | cancelled` (last three terminal). Poll `GET /jobs/{id}` until terminal.
## Conventions
Values from a fixed set (enum values, in a request body or in list filters such as `status`, `saved` and
`sort`) are matched without regard to case, and come back in the spelling published here: `"MM"` reads
back as `"mm"`. Names and codes keep their case: group names, a SKU''s code (`externalId`, also as a
filter) and system-catalogue slugs are case-sensitive. The idempotency fingerprint compares the body as you
sent it: an enum value in another case makes a different body, so while the key is kept (see `Idempotency-Key`)
the same key gets the `409`.'
contact:
email: contact@loadoptimizer.ai
servers:
- url: https://api.loadoptimizer.ai/v2
description: Production environment of the Load Optimizer API.
x-internal: false
security:
- ApiKey: []
tags:
- name: Health
description: Check that the API is up. Needs no API key and does not count against the rate limit.
paths:
/health:
get:
tags:
- Health
operationId: getHealth
summary: Service liveness echo
description: 'Anonymous liveness check. Always answers `status: "ok"` if the API is up at all; it deliberately runs no readiness checks of its own. Sending your key is harmless but pointless: this operation sits outside the authenticated surface, so it answers the same whether you send one, send a bad one, or send none, and it never reports on your plan.'
security: []
responses:
'200':
description: The API is up and answering requests.
content:
application/json:
schema:
type: object
required:
- status
- version
- apiVersion
properties:
status:
type: string
enum:
- ok
version:
type: string
description: Opaque build identifier, e.g. `1a2b3c4d`. Compare it for equality to spot a deploy; do not parse it.
apiVersion:
type: string
pattern: ^\d+\.\d+\.\d+$
description: The version of the contract this API serves, the contract's `info.version`, such as `2.0.0`. The Changelog names each release by it, so compare the two to see which changes the API you call already has.
examples:
live:
summary: The API is up
value:
status: ok
version: 1a2b3c4d
apiVersion: 2.0.0
'500':
$ref: '#/components/responses/ServerProblem'
components:
schemas:
Problem:
type: object
description: 'RFC 9457 `problem+json`. `code` is stable & machine-readable when present; `errors[].pointer` locates
the offending field, query parameter or header. Two `/v2` errors have an **empty body** instead:
`401` and the idempotency `409`.
See [Errors & troubleshooting](errors.html).'
properties:
type:
type: string
format: uri
description: 'A reference for the response''s status code, not for the specific failure: two failures with different `code` values share one `type`. RFC 9457 permits `about:blank` here; this API never sends that, and the `429` responses carry no `type` at all. Switch on `code`, never on this field.'
title:
type: string
status:
type: integer
format: int32
detail:
type: string
description: Human-readable explanation, present on some errors and often naming the limit value that was exceeded. Never switch on it; switch on code.
code:
$ref: '#/components/schemas/ProblemCode'
errors:
type: array
description: Field-level problems. Only on a 400 `validation_failed`.
items:
type: object
properties:
pointer:
type: string
description: For a body field, a JSON Pointer (RFC 6901) into the request body, over the member names as this contract spells them (camelCase, also when you sent another case), e.g. /carriers/0/externalId. A name you chose yourself (a group name, an overrides member) appears as sent, with ~ written as ~0 and / as ~1. For a query parameter or a header, its name without a leading /, e.g. limit or Idempotency-Key. An empty string means the body as a whole.
code:
type: string
enum:
- validation_failed
- ambiguous_source
- library_entry_not_found
- override_field_not_allowed
description: 'validation_failed, unless a field code applies: ambiguous_source or library_entry_not_found on the libraryId of a job carrier or cargo line, or override_field_not_allowed on its overrides.'
message:
type: string
required:
- title
- status
ProblemCode:
type: string
description: Stable, machine-readable top-level error-code registry, by HTTP status.
enum:
- validation_failed
- ambiguous_source
- override_field_not_allowed
- customer_api_not_entitled
- mixed_palletizing_not_entitled
- load_planning_not_entitled
- link_sharing_not_entitled
- request_body_not_supported
- libraries_not_entitled
- library_read_only
- internal_server_error
- job_not_found
- result_not_ready
- artifact_not_ready
- saved_load_not_found
- library_not_found
- library_entry_not_found
- job_already_terminal
- job_not_succeeded
- saved_load_exists
- external_id_taken
- payload_too_large
- unsupported_media_type
- max_items_per_job
- max_carriers_per_job
- max_carrier_instances_per_job
- max_saved_loads
- max_library_entries
- too_many_active_jobs
- monthly_quota_exceeded
- rate_limit_exceeded
responses:
ServerProblem:
description: 'The request could not be completed for a reason the API did not anticipate. Transient as far as a caller can tell: retry, and if it persists contact support. The cause is recorded internally and is deliberately absent from the body, so there is nothing here to branch on beyond `code`.'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
examples:
internalServerError:
summary: An unanticipated failure while handling the request
value:
type: https://tools.ietf.org/html/rfc9110#section-15.6.1
title: Internal server error.
status: 500
code: internal_server_error
detail: The request could not be completed. Retry; if it keeps failing, contact support.
securitySchemes:
ApiKey:
type: apiKey
in: header
name: X-Api-Key
description: 'Customer API key bound to your account, e.g. `X-Api-Key: ck_live_...`. Create it in the web app (see https://app.loadoptimizer.ai/docs/api-keys); the full key is shown only once.'
x-provenance:
method: harvested
publisher: LoadOptimizer.ai
source: https://www.loadoptimizer.ai/docs/loadoptimizer-openapi.yaml
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)