{
  "openapi": "3.0.3",
  "info": {"title": "INeedToSendAFax API", "version": "1.0.0",
    "description": "Send faxes programmatically. Authenticate with an API key."},
  "servers": [{"url": "https://api.ineedtosendafax.com"}],
  "security": [{"bearerAuth": []}],
  "paths": {
    "/v1/faxes": {
      "post": {
        "summary": "Send a fax",
        "requestBody": {"required": true, "content": {"multipart/form-data": {"schema": {
          "type": "object", "required": ["to", "file"], "properties": {
            "to": {"type": "string", "description": "Recipient fax number (US or Canada)."},
            "file": {"type": "string", "format": "binary", "description": "PDF, PostScript, or TIFF (max 32 MB, 25 pages)."},
            "callback_url": {"type": "string"},
            "cover": {"type": "boolean", "description": "Add a cover page (default false)."},
            "cover_text": {"type": "string"},
            "recipient_name": {"type": "string"}, "sender_name": {"type": "string"}
          }}}}},
        "responses": {"202": {"description": "Accepted"}, "401": {"description": "Invalid key"},
          "402": {"description": "Insufficient credits"}, "429": {"description": "Rate limited"}}
      },
      "get": {"summary": "List recent faxes", "responses": {"200": {"description": "OK"}}}
    },
    "/v1/faxes/{id}": {"get": {"summary": "Get fax status",
      "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "string"}}],
      "responses": {"200": {"description": "OK"}, "404": {"description": "Not found"}}}},
    "/v1/me": {"get": {"summary": "Account balance and limits", "responses": {"200": {"description": "OK"}}}},
    "/v1/pricing": {"get": {"summary": "Current pricing", "responses": {"200": {"description": "OK"}}}}
  },
  "components": {"securitySchemes": {"bearerAuth": {"type": "http", "scheme": "bearer"}}}
}