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.