MMI Tank

MMI Tank API

Public read-only documentation for agents and developers. No authentication.

Authentication

None. Do not send an API key. The API does not accept writes. Request a quote at https://mmitank.com/request-quote/.

Contract

Endpoints

getCompany

GET /api/v1/company

curl -sS https://mmitank.com/api/v1/company

listServices

GET /api/v1/services

Optional query parameter limit (integer, 1-50).

curl -sS https://mmitank.com/api/v1/services
curl -sS "https://mmitank.com/api/v1/services?limit=2"

getService

GET /api/v1/services/{slug}

Required path parameter slug (string). Example: bolted-tanks.

curl -sS https://mmitank.com/api/v1/services/bolted-tanks

listLocations

GET /api/v1/locations

curl -sS https://mmitank.com/api/v1/locations

getLocation

GET /api/v1/locations/{slug}

Required path parameter slug (string). Example: phoenix-arizona.

curl -sS https://mmitank.com/api/v1/locations/phoenix-arizona

Errors

Failed calls return application/problem+json with code, message, and resolution.

curl -sS -D - https://mmitank.com/api/v1/services/no-such-service

Full markdown reference

Agents that send Accept: text/markdown to this URL receive the markdown reference. The same text is below.

# MMI Tank API

> Public read-only API for MMI Tank & Industrial Services, a Phoenix steel tank manufacturer. No API key. No authentication.

Canonical documentation: https://mmitank.com/api
OpenAPI: https://mmitank.com/openapi.json
YAML: https://mmitank.com/api/openapi.yaml
Agent index: https://mmitank.com/llms.txt

## Authentication

This API does not use authentication. Every operation is public and read-only. Do not send an API key, bearer token, or cookie.

Quote requests are not an API write. Submit them at https://mmitank.com/request-quote/.

## Endpoints

| Method | Path | operationId | Description |
| --- | --- | --- | --- |
| GET | /api/v1 | getApiIndex | List operations and the OpenAPI URL |
| GET | /api/v1/company | getCompany | Company name, NAP, hours, credentials |
| GET | /api/v1/services | listServices | Published services |
| GET | /api/v1/services/{slug} | getService | One service |
| GET | /api/v1/locations | listLocations | Headquarters and state pages |
| GET | /api/v1/locations/{slug} | getLocation | One location |

### getCompany

```http
GET /api/v1/company
```

No parameters.

```bash
curl -sS https://mmitank.com/api/v1/company
```

```json
{
    "name": "MMI Tank & Industrial Services",
    "alternateName": "MMI Tank",
    "url": "https://mmitank.com/",
    "description": "Phoenix-based manufacturer of bolted and field-welded steel storage tanks and ASME pressure vessels. Serves water, oil and gas, food, agriculture, and mining across 11 western US states.",
    "telephone": "+1-602-272-6000",
    "email": "info@mmitank.com",
    "priceRange": "$$$$",
    "address": {
        "streetAddress": "3240 S. 37th Ave.",
        "addressLocality": "Phoenix",
        "addressRegion": "AZ",
        "postalCode": "85009",
        "addressCountry": "US"
    },
    "geo": {
        "latitude": 33.4197,
        "longitude": -112.1269
    },
    "openingHours": {
        "dayOfWeek": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday"
        ],
        "opens": "07:00",
        "closes": "16:00",
        "timezone": "America/Phoenix"
    },
    "areaServed": [
        "Arizona",
        "California",
        "Colorado",
        "Idaho",
        "Nevada",
        "New Mexico",
        "Oregon",
        "Texas",
        "Utah",
        "Washington",
        "Wyoming"
    ],
    "credentials": [
        "ASME S Stamp",
        "ASME U Stamp",
        "National Board R Stamp",
        "OSHA Certified",
        "MSHA Certified",
        "HAZWOPER Certified"
    ],
    "contact": {
        "contactType": "customer service",
        "telephone": "+1-602-272-6000",
        "email": "info@mmitank.com",
        "availableLanguage": [
            "English"
        ],
        "url": "https://mmitank.com/contact/"
    },
    "links": {
        "home": "https://mmitank.com/",
        "contact": "https://mmitank.com/contact/",
        "quote": "https://mmitank.com/request-quote/",
        "about": "https://mmitank.com/about-mmi/",
        "privacy": "https://mmitank.com/privacy-policy/",
        "services": "https://mmitank.com/services/",
        "sitemap": "https://mmitank.com/sitemap_index.xml",
        "llmsTxt": "https://mmitank.com/llms.txt",
        "openapi": "https://mmitank.com/openapi.json",
        "documentation": "https://mmitank.com/api"
    }
}

```

### listServices

| Name | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| limit | query | integer | no | 1 through 50. Omit for the full list. |

```bash
curl -sS https://mmitank.com/api/v1/services
curl -sS "https://mmitank.com/api/v1/services?limit=2"
```

### getService

| Name | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| slug | path | string | yes | Example: bolted-tanks |

```bash
curl -sS https://mmitank.com/api/v1/services/bolted-tanks
```

## Errors

Errors use `Content-Type: application/problem+json` (RFC 9457). Each body includes `code`, `message`, and `resolution`.

| Status | code | When |
| --- | --- | --- |
| 400 | invalid_parameter | limit is not an integer from 1 to 50, or slug is not lowercase letters, numbers, and hyphens |
| 404 | service_not_found | slug is well formed but not a published service |
| 404 | location_not_found | slug is well formed but not a published location |
| 404 | not_found | the API path is not an operation |
| 405 | method_not_allowed | method is not GET or HEAD |

```bash
curl -sS -D - https://mmitank.com/api/v1/services/no-such-service
```

```json
{
    "type": "https://mmitank.com/api#service-not-found",
    "title": "Not Found",
    "status": 404,
    "detail": "No MMI Tank service exists with slug \"no-such-service\".",
    "instance": "https://mmitank.com/api/v1/services/no-such-service",
    "code": "service_not_found",
    "message": "No MMI Tank service exists with slug \"no-such-service\".",
    "resolution": "List valid slugs with GET https://mmitank.com/api/v1/services or read https://mmitank.com/openapi.json.",
    "error": {
        "code": "service_not_found",
        "message": "No MMI Tank service exists with slug \"no-such-service\".",
        "resolution": "List valid slugs with GET https://mmitank.com/api/v1/services or read https://mmitank.com/openapi.json."
    }
}

```

## Workflow

1. Read https://mmitank.com/openapi.json or GET https://mmitank.com/api/v1.
2. Call getCompany for NAP and credentials.
3. Call listServices, then getService with a returned slug.
4. On a non-2xx response, read `resolution` and retry the URL it names.