{
  "swagger": "2.0",
  "info": {
    "version": "3.7.2",
    "title": "Neutrino API",
    "description": "The general-purpose API",
    "contact": {
      "email": "tech@neutrinoapi.com",
      "name": "Neutrino API",
      "url": "https://www.neutrinoapi.com/"
    }
  },
  "host": "neutrinoapi.net",
  "basePath": "/",
  "securityDefinitions": {
    "user-id": {
      "type": "apiKey",
      "description": "Your user ID",
      "name": "user-id",
      "in": "header"
    },
    "api-key": {
      "type": "apiKey",
      "description": "One of your API keys",
      "name": "api-key",
      "in": "header"
    }
  },
  "schemes": [
    "https"
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/html-render": {
      "post": {
        "description": "Render HTML content to PDF, JPG or PNG",
        "summary": "HTML Render",
        "tags": [
          "Imaging"
        ],
        "operationId": "HTMLRender",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "consumes": [
          "application/x-www-form-urlencoded"
        ],
        "parameters": [
          {
            "name": "content",
            "in": "formData",
            "required": true,
            "type": "string",
            "description": "The HTML content. This can be either a URL to load from, a file upload (multipart/form-data) or an HTML content string"
          },
          {
            "name": "format",
            "in": "formData",
            "required": false,
            "default": "PDF",
            "type": "string",
            "description": "Which format to output, available options are: PDF, PNG, JPG"
          },
          {
            "name": "page-size",
            "in": "formData",
            "required": false,
            "default": "A4",
            "type": "string",
            "description": "Set the document page size, can be one of: A0 - A9, B0 - B10, Comm10E, DLE or Letter"
          },
          {
            "name": "title",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "The document title"
          },
          {
            "name": "margin",
            "in": "formData",
            "required": false,
            "default": 0.0,
            "type": "number",
            "format": "double",
            "description": "The document margin (in mm)"
          },
          {
            "name": "margin-left",
            "in": "formData",
            "required": false,
            "default": 0.0,
            "type": "number",
            "format": "double",
            "description": "The document left margin (in mm)"
          },
          {
            "name": "margin-right",
            "in": "formData",
            "required": false,
            "default": 0.0,
            "type": "number",
            "format": "double",
            "description": "The document right margin (in mm)"
          },
          {
            "name": "margin-top",
            "in": "formData",
            "required": false,
            "default": 0.0,
            "type": "number",
            "format": "double",
            "description": "The document top margin (in mm)"
          },
          {
            "name": "margin-bottom",
            "in": "formData",
            "required": false,
            "default": 0.0,
            "type": "number",
            "format": "double",
            "description": "The document bottom margin (in mm)"
          },
          {
            "name": "landscape",
            "in": "formData",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Set the document to landscape orientation"
          },
          {
            "name": "zoom",
            "in": "formData",
            "required": false,
            "default": 1.0,
            "type": "number",
            "format": "double",
            "description": "Set the zoom factor when rendering the page (2.0 for double size, 0.5 for half size)"
          },
          {
            "name": "grayscale",
            "in": "formData",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Render the final document in grayscale"
          },
          {
            "name": "css",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "Inject custom CSS into the HTML. e.g. 'body { background-color: red;}'"
          },
          {
            "name": "image-width",
            "in": "formData",
            "required": false,
            "default": 1024,
            "type": "integer",
            "format": "int32",
            "description": "If rendering to an image format (PNG or JPG) use this image width (in pixels)"
          },
          {
            "name": "image-height",
            "in": "formData",
            "required": false,
            "type": "integer",
            "format": "int32",
            "description": "If rendering to an image format (PNG or JPG) use this image height (in pixels). The default is automatic which dynamically sets the image height based on the content"
          },
          {
            "name": "delay",
            "in": "formData",
            "required": false,
            "default": 0,
            "type": "integer",
            "format": "int32",
            "description": "Number of seconds to wait before rendering the page (can be useful for pages with animations etc)"
          },
          {
            "name": "page-width",
            "in": "formData",
            "required": false,
            "type": "number",
            "format": "double",
            "description": "Set the PDF page width explicitly (in mm)"
          },
          {
            "name": "page-height",
            "in": "formData",
            "required": false,
            "type": "number",
            "format": "double",
            "description": "Set the PDF page height explicitly (in mm)"
          },
          {
            "name": "timeout",
            "in": "formData",
            "required": false,
            "default": 300,
            "type": "integer",
            "format": "int32",
            "description": "Timeout in seconds. Give up if still trying to load the HTML content after this number of seconds"
          },
          {
            "name": "ignore-certificate-errors",
            "in": "formData",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Ignore any TLS/SSL certificate errors"
          },
          {
            "name": "header",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "The header HTML to insert into each page. The following dynamic tags are supported: {date}, {title}, {url}, {pageNumber}, {totalPages}"
          },
          {
            "name": "footer",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "The footer HTML to insert into each page. The following dynamic tags are supported: {date}, {title}, {url}, {pageNumber}, {totalPages}"
          },
          {
            "name": "bg-color",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "For image rendering set the background color in hexadecimal notation (e.g. #0000ff). For PNG output the special value of 'transparent' can be used to create a transparent PNG"
          },
          {
            "name": "exec",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "Execute JavaScript on the website. This parameter accepts JavaScript as either a string containing JavaScript or for sending multiple separate statements a JSON array or POST array can also be used. You can also use the following specially defined user interaction functions: <br> <div> sleep(seconds); Just wait/sleep for the specified number of seconds. <br> click('selector'); Click on the first element matching the given selector. <br> focus('selector'); Focus on the first element matching the given selector. <br> keys('characters'); Send the specified keyboard characters. Use click() or focus() first to send keys to a specific element. <br> enter(); Send the Enter key. <br> tab(); Send the Tab key. <br> </div>"
          },
          {
            "name": "user-agent",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "Override the browsers default user-agent string with this one"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "string",
              "default": "",
              "format": "binary"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/image-watermark": {
      "post": {
        "description": "Watermark one image with another image",
        "summary": "Image Watermark",
        "tags": [
          "Imaging"
        ],
        "operationId": "ImageWatermark",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "consumes": [
          "application/x-www-form-urlencoded"
        ],
        "parameters": [
          {
            "name": "image-url",
            "in": "formData",
            "required": true,
            "type": "string",
            "description": "The URL or Base64 encoded Data URL for the source image. You can also upload an image file directly using multipart/form-data"
          },
          {
            "name": "watermark-url",
            "in": "formData",
            "required": true,
            "type": "string",
            "description": "The URL or Base64 encoded Data URL for the watermark image. You can also upload an image file directly using multipart/form-data"
          },
          {
            "name": "opacity",
            "in": "formData",
            "required": false,
            "default": 50,
            "type": "integer",
            "format": "int32",
            "description": "The opacity of the watermark (0 to 100)"
          },
          {
            "name": "format",
            "in": "formData",
            "required": false,
            "default": "png",
            "type": "string",
            "description": "The output image format, can be either png or jpg"
          },
          {
            "name": "position",
            "in": "formData",
            "required": false,
            "default": "center",
            "type": "string",
            "description": "The position of the watermark image, possible values are: <br> center, top-left, top-center, top-right, bottom-left, bottom-center, bottom-right"
          },
          {
            "name": "width",
            "in": "formData",
            "required": false,
            "type": "integer",
            "format": "int32",
            "description": "If set resize the resulting image to this width (in px)"
          },
          {
            "name": "height",
            "in": "formData",
            "required": false,
            "type": "integer",
            "format": "int32",
            "description": "If set resize the resulting image to this height (in px)"
          },
          {
            "name": "resize-mode",
            "in": "formData",
            "required": false,
            "default": "scale",
            "type": "string",
            "description": "The resize mode to use, we support 3 main resizing modes: <ul> <li><b>scale</b> <br> Resize to within the width and height specified while preserving aspect ratio. In this mode the width or height will be automatically adjusted to fit the aspect ratio</li> <li><b>pad</b> <br> Resize to exactly the width and height specified while preserving aspect ratio and pad any space left over. Any padded space will be filled in with the 'bg-color' value</li> <li><b>crop</b> <br> Resize to exactly the width and height specified while preserving aspect ratio and crop any space which fall outside the area. The cropping window is centered on the original image</li> </ul>"
          },
          {
            "name": "bg-color",
            "in": "formData",
            "required": false,
            "default": "transparent",
            "type": "string",
            "description": "The image background color in hexadecimal notation (e.g. #0000ff). For PNG output the special value of 'transparent' can also be used. For JPG output the default is black (#000000)"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "string",
              "default": "",
              "format": "binary"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/qr-code": {
      "post": {
        "description": "Generate a QR code as a PNG image",
        "summary": "QR Code",
        "tags": [
          "Imaging"
        ],
        "operationId": "QRCode",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "consumes": [
          "application/x-www-form-urlencoded"
        ],
        "parameters": [
          {
            "name": "content",
            "in": "formData",
            "required": true,
            "type": "string",
            "description": "The content to encode into the QR code (e.g. a URL or a phone number)"
          },
          {
            "name": "width",
            "in": "formData",
            "required": false,
            "default": 256,
            "type": "integer",
            "format": "int32",
            "description": "The width of the QR code (in px)"
          },
          {
            "name": "height",
            "in": "formData",
            "required": false,
            "default": 256,
            "type": "integer",
            "format": "int32",
            "description": "The height of the QR code (in px)"
          },
          {
            "name": "fg-color",
            "in": "formData",
            "required": false,
            "default": "#000000",
            "type": "string",
            "description": "The QR code foreground color"
          },
          {
            "name": "bg-color",
            "in": "formData",
            "required": false,
            "default": "#ffffff",
            "type": "string",
            "description": "The QR code background color"
          },
          {
            "name": "code-format",
            "in": "formData",
            "required": false,
            "default": "qr",
            "type": "string",
            "description": "The barcode format to output. Accepted formats are: qr, c128"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "string",
              "default": "",
              "format": "binary"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/image-resize": {
      "post": {
        "description": "Resize an image and output as either JPEG or PNG",
        "summary": "Image Resize",
        "tags": [
          "Imaging"
        ],
        "operationId": "ImageResize",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "consumes": [
          "application/x-www-form-urlencoded"
        ],
        "parameters": [
          {
            "name": "image-url",
            "in": "formData",
            "required": true,
            "type": "string",
            "description": "The URL or Base64 encoded Data URL for the source image. You can also upload an image file directly using multipart/form-data"
          },
          {
            "name": "width",
            "in": "formData",
            "required": true,
            "type": "integer",
            "format": "int32",
            "description": "The width to resize to (in px)"
          },
          {
            "name": "height",
            "in": "formData",
            "required": false,
            "type": "integer",
            "format": "int32",
            "description": "The height to resize to (in px). If you don't set this field then the height will be automatic based on the requested width and image aspect ratio"
          },
          {
            "name": "format",
            "in": "formData",
            "required": false,
            "default": "png",
            "type": "string",
            "description": "The output image format, can be either png or jpg"
          },
          {
            "name": "resize-mode",
            "in": "formData",
            "required": false,
            "default": "scale",
            "type": "string",
            "description": "The resize mode to use, we support 3 main resizing modes: <ul> <li><b>scale</b> <br> Resize to within the width and height specified while preserving aspect ratio. In this mode the width or height will be automatically adjusted to fit the aspect ratio</li> <li><b>pad</b> <br> Resize to exactly the width and height specified while preserving aspect ratio and pad any space left over. Any padded space will be filled in with the 'bg-color' value</li> <li><b>crop</b> <br> Resize to exactly the width and height specified while preserving aspect ratio and crop any space which fall outside the area. The cropping window is centered on the original image</li> </ul>"
          },
          {
            "name": "bg-color",
            "in": "formData",
            "required": false,
            "default": "transparent",
            "type": "string",
            "description": "The image background color in hexadecimal notation (e.g. #0000ff). For PNG output the special value of 'transparent' can also be used. For JPG output the default is black (#000000)"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "string",
              "default": "",
              "format": "binary"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/sms-verify": {
      "post": {
        "description": "Send a unique security code to any mobile device via SMS",
        "summary": "SMS Verify",
        "tags": [
          "Telephony"
        ],
        "operationId": "SMSVerify",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "consumes": [
          "application/x-www-form-urlencoded"
        ],
        "parameters": [
          {
            "name": "number",
            "in": "formData",
            "required": true,
            "type": "string",
            "description": "The phone number to send a verification code to"
          },
          {
            "name": "code-length",
            "in": "formData",
            "required": false,
            "default": 5,
            "type": "integer",
            "format": "int32",
            "description": "The number of digits to use in the security code (must be between 4 and 12)"
          },
          {
            "name": "security-code",
            "in": "formData",
            "required": false,
            "type": "integer",
            "format": "int32",
            "description": "Pass in your own security code. This is useful if you have implemented TOTP or similar 2FA methods. If not set then we will generate a secure random code"
          },
          {
            "name": "country-code",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "ISO 2-letter country code, assume numbers are based in this country. <br> If not set numbers are assumed to be in international format (with or without the leading + sign)"
          },
          {
            "name": "language-code",
            "in": "formData",
            "required": false,
            "default": "en",
            "type": "string",
            "description": "The language to send the verification code in, available languages are: <ul> <li>de - German</li> <li>en - English</li> <li>es - Spanish</li> <li>fr - French</li> <li>it - Italian</li> <li>pt - Portuguese</li> <li>ru - Russian</li> </ul>"
          },
          {
            "name": "limit",
            "in": "formData",
            "required": false,
            "default": 10,
            "type": "integer",
            "format": "int32",
            "description": "Limit the total number of SMS allowed to the supplied phone number, if the limit is reached within the TTL then error code 14 will be returned"
          },
          {
            "name": "limit-ttl",
            "in": "formData",
            "required": false,
            "default": 1,
            "type": "integer",
            "format": "int32",
            "description": "Set the TTL in number of days that the 'limit' option will remember a phone number (the default is 1 day and the maximum is 365 days)"
          },
          {
            "name": "brand-name",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "Set a custom brand or product name in the verification message"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/SMSVerifyResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/phone-playback": {
      "post": {
        "description": "Make an automated call to any valid phone number and playback an audio message",
        "summary": "Phone Playback",
        "tags": [
          "Telephony"
        ],
        "operationId": "PhonePlayback",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "consumes": [
          "application/x-www-form-urlencoded"
        ],
        "parameters": [
          {
            "name": "number",
            "in": "formData",
            "required": true,
            "type": "string",
            "description": "The phone number to call. Must be in valid international format"
          },
          {
            "name": "audio-url",
            "in": "formData",
            "required": true,
            "type": "string",
            "description": "A URL to a valid audio file. Accepted audio formats are: <ul> <li>MP3</li> <li>WAV</li> <li>OGG</li> </ul> You can use the following MP3 URL for testing: <br> https://www.neutrinoapi.com/test-files/test1.mp3"
          },
          {
            "name": "limit",
            "in": "formData",
            "required": false,
            "default": 3,
            "type": "integer",
            "format": "int32",
            "description": "Limit the total number of calls allowed to the supplied phone number, if the limit is reached within the TTL then error code 14 will be returned"
          },
          {
            "name": "limit-ttl",
            "in": "formData",
            "required": false,
            "default": 1,
            "type": "integer",
            "format": "int32",
            "description": "Set the TTL in number of days that the 'limit' option will remember a phone number (the default is 1 day and the maximum is 365 days)"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/PhonePlaybackResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/hlr-lookup": {
      "get": {
        "description": "Connect to the global mobile cellular network and retrieve the status of a mobile device",
        "summary": "HLR Lookup",
        "tags": [
          "Telephony"
        ],
        "operationId": "HLRLookup",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "number",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "A phone number"
          },
          {
            "name": "country-code",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "ISO 2-letter country code, assume numbers are based in this country. <br> If not set numbers are assumed to be in international format (with or without the leading + sign)"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/HLRLookupResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/verify-security-code": {
      "get": {
        "description": "Check if a security code sent via SMS Verify or Phone Verify is valid",
        "summary": "Verify Security Code",
        "tags": [
          "Telephony"
        ],
        "operationId": "VerifySecurityCode",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "security-code",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "The security code to verify"
          },
          {
            "name": "limit-by",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "If set then enable additional brute-force protection by limiting the number of attempts by the supplied value. This can be set to any unique identifier you would like to limit by, for example a hash of the users email, phone number or IP address. Requests to this API will be ignored after approximately 10 failed verification attempts"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/VerifySecurityCodeResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/phone-verify": {
      "post": {
        "description": "Make an automated call to any valid phone number and playback a unique security code",
        "summary": "Phone Verify",
        "tags": [
          "Telephony"
        ],
        "operationId": "PhoneVerify",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "consumes": [
          "application/x-www-form-urlencoded"
        ],
        "parameters": [
          {
            "name": "number",
            "in": "formData",
            "required": true,
            "type": "string",
            "description": "The phone number to send the verification code to"
          },
          {
            "name": "code-length",
            "in": "formData",
            "required": false,
            "default": 6,
            "type": "integer",
            "format": "int32",
            "description": "The number of digits to use in the security code (between 4 and 12)"
          },
          {
            "name": "security-code",
            "in": "formData",
            "required": false,
            "type": "integer",
            "format": "int32",
            "description": "Pass in your own security code. This is useful if you have implemented TOTP or similar 2FA methods. If not set then we will generate a secure random code"
          },
          {
            "name": "playback-delay",
            "in": "formData",
            "required": false,
            "default": 800,
            "type": "integer",
            "format": "int32",
            "description": "The delay in milliseconds between the playback of each security code"
          },
          {
            "name": "country-code",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "ISO 2-letter country code, assume numbers are based in this country. <br> If not set numbers are assumed to be in international format (with or without the leading + sign)"
          },
          {
            "name": "language-code",
            "in": "formData",
            "required": false,
            "default": "en",
            "type": "string",
            "description": "The language to playback the verification code in, available languages are: <ul> <li>de - German</li> <li>en - English</li> <li>es - Spanish</li> <li>fr - French</li> <li>it - Italian</li> <li>pt - Portuguese</li> <li>ru - Russian</li> </ul>"
          },
          {
            "name": "limit",
            "in": "formData",
            "required": false,
            "default": 3,
            "type": "integer",
            "format": "int32",
            "description": "Limit the total number of calls allowed to the supplied phone number, if the limit is reached within the TTL then error code 14 will be returned"
          },
          {
            "name": "limit-ttl",
            "in": "formData",
            "required": false,
            "default": 1,
            "type": "integer",
            "format": "int32",
            "description": "Set the TTL in number of days that the 'limit' option will remember a phone number (the default is 1 day and the maximum is 365 days)"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/PhoneVerifyResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/email-validate": {
      "get": {
        "description": "Parse, validate and clean an email address",
        "summary": "Email Validate",
        "tags": [
          "Data Tools"
        ],
        "operationId": "EmailValidate",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "An email address"
          },
          {
            "name": "fix-typos",
            "in": "query",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Automatically attempt to fix typos in the address"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/EmailValidateResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/bad-word-filter": {
      "post": {
        "description": "Detect bad words, swear words and profanity in a given text",
        "summary": "Bad Word Filter",
        "tags": [
          "Data Tools"
        ],
        "operationId": "BadWordFilter",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "consumes": [
          "application/x-www-form-urlencoded"
        ],
        "parameters": [
          {
            "name": "content",
            "in": "formData",
            "required": true,
            "type": "string",
            "description": "The content to scan. This can be either a URL to load from, a file upload (multipart/form-data) or an HTML content string"
          },
          {
            "name": "censor-character",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "The character to use to censor out the bad words found"
          },
          {
            "name": "catalog",
            "in": "formData",
            "required": false,
            "default": "strict",
            "type": "string",
            "description": "Which catalog of bad words to use, we currently maintain two bad word catalogs: <br> <ul> <li>strict - the largest database of bad words which includes profanity, obscenity, sexual, rude, cuss, dirty, swear and objectionable words and phrases. This catalog is suitable for environments of all ages including educational or children's content</li> <li>obscene - like the strict catalog but does not include any mild profanities, idiomatic phrases or words which are considered formal terminology. This catalog is suitable for adult environments where certain types of bad words are considered OK</li> </ul>"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/BadWordFilterResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/ua-lookup": {
      "get": {
        "description": "Parse, validate and get detailed user-agent information from a user agent string or from client hints",
        "summary": "UA Lookup",
        "tags": [
          "Data Tools"
        ],
        "operationId": "UALookup",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "ua",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "The user-agent string to lookup. For client hints this corresponds to the 'sec-ch-ua' header or you can also pass the JSON data directly from the 'navigator.userAgentData.getHighEntropyValues()' JavaScript API"
          },
          {
            "name": "ua-version",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "For client hints this corresponds to the 'sec-ch-ua-full-version' header"
          },
          {
            "name": "ua-platform",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "For client hints this corresponds to the 'sec-ch-ua-platform' header"
          },
          {
            "name": "ua-platform-version",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "For client hints this corresponds to the 'sec-ch-ua-platform-version' header"
          },
          {
            "name": "ua-mobile",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "For client hints this corresponds to the 'sec-ch-ua-mobile' header"
          },
          {
            "name": "device-model",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "For client hints this corresponds to the 'sec-ch-ua-model' header. <br> You can also use this parameter to lookup a device directly by its model name, model code or hardware code, on android you can get the model name from: https://developer.android.com/reference/android/os/Build.html#MODEL"
          },
          {
            "name": "device-brand",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "This parameter is only used in combination with 'device-model' for direct device lookups without any user-agent data. Set this to the brand or manufacturer name, this is required for accurate device detection with ambiguous model names. On android you can get the device brand from: https://developer.android.com/reference/android/os/Build#MANUFACTURER"
          },
          {
            "name": "ua-arch",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "For client hints this corresponds to the 'sec-ch-ua-arch' header"
          },
          {
            "name": "ua-bitness",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "For client hints this corresponds to the 'sec-ch-ua-bitness' header"
          },
          {
            "name": "ua-form-factors",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "For client hints this corresponds to the 'sec-ch-ua-form-factors' header"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/UALookupResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/phone-validate": {
      "get": {
        "description": "Parse, validate and get location information about a phone number",
        "summary": "Phone Validate",
        "tags": [
          "Data Tools"
        ],
        "operationId": "PhoneValidate",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "number",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "A phone number. This can be in international format (E.164) or local format. If passing local format you must also set either the 'country-code' OR 'ip' options as well"
          },
          {
            "name": "country-code",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "ISO 2-letter country code, assume numbers are based in this country. If not set numbers are assumed to be in international format (with or without the leading + sign)"
          },
          {
            "name": "ip",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Pass in a users IP address and we will assume numbers are based in the country of the IP address"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/PhoneValidateResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/ip-blocklist-download": {
      "get": {
        "description": "This API is a direct feed to our IP blocklist data",
        "summary": "IP Blocklist Download",
        "tags": [
          "Security and Networking"
        ],
        "operationId": "IPBlocklistDownload",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "required": false,
            "default": "csv",
            "type": "string",
            "description": "The data format. Can be either CSV or TXT"
          },
          {
            "name": "cidr",
            "in": "query",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Output IPs using CIDR notation. This option should be preferred but is off by default for backwards compatibility"
          },
          {
            "name": "ip6",
            "in": "query",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Output the IPv6 version of the blocklist, the default is to output IPv4 only. Note that this option enables CIDR notation too as this is the only notation currently supported for IPv6"
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "default": "all",
            "type": "string",
            "description": "The category of IP addresses to include in the download file, possible values are: <br> <ul> <li>all - all IPs available on your current plan (excludes VPN providers for any plans lower than Tier 3)</li> <li>bot - all IPs hosting a malicious bot or part of a botnet. This is a broad category which includes brute-force crackers</li> <li>exploit-bot - all IPs hosting an exploit finding bot or running exploit scanning software</li> <li>hijacked - all IPs that are part of a hijacked netblock or a netblock controlled by a criminal organization</li> <li>malware - all IPs involved in distributing or running malware or spyware</li> <li>proxy - all IPs detected as an anonymous web proxy or anonymous HTTP proxy</li> <li>spam-bot - all IPs hosting a spam bot, comment spamming or any other spamming type software</li> <li>spider - all IPs running a hostile web spider / web crawler</li> <li>tor - all IPs that are Tor nodes or running a Tor related service</li> <li>vpn - all IPs belonging to public VPN providers (only available for Tier 3 or higher accounts)</li> </ul>"
          },
          {
            "name": "output-encoding",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Set this option to 'gzip' to have the output file compressed using gzip"
          },
          {
            "name": "checksum",
            "in": "query",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Do not download the file but just return the current files MurmurHash3 checksum. You can use this feature to check if the file has changed since a previous check"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "string",
              "default": "",
              "format": "binary"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/ip-probe": {
      "get": {
        "description": "Execute a realtime network probe against an IPv4 or IPv6 address",
        "summary": "IP Probe",
        "tags": [
          "Security and Networking"
        ],
        "operationId": "IPProbe",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "ip",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "An IPv4 or IPv6 address. Accepts standard IP notation and also CIDR notation"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/IPProbeResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/host-reputation": {
      "get": {
        "description": "Check the reputation of an IP address, domain name or URL against a comprehensive list of blacklists and blocklists",
        "summary": "Host Reputation",
        "tags": [
          "Security and Networking"
        ],
        "operationId": "HostReputation",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "host",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "An IP address, domain name, FQDN or URL. <br> If you supply a domain/URL it will be checked against the URI DNSBL lists"
          },
          {
            "name": "list-rating",
            "in": "query",
            "required": false,
            "default": 3,
            "type": "integer",
            "format": "int32",
            "description": "Only check lists with this rating or better"
          },
          {
            "name": "zones",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Only check these DNSBL zones/hosts. Multiple zones can be supplied as comma-separated values"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/HostReputationResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/email-verify": {
      "get": {
        "description": "SMTP based email address verification",
        "summary": "Email Verify",
        "tags": [
          "Security and Networking"
        ],
        "operationId": "EmailVerify",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "An email address"
          },
          {
            "name": "fix-typos",
            "in": "query",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Automatically attempt to fix typos in the address"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/EmailVerifyResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/domain-lookup": {
      "get": {
        "description": "Retrieve domain name details and detect potentially malicious or dangerous domains",
        "summary": "Domain Lookup",
        "tags": [
          "Security and Networking"
        ],
        "operationId": "DomainLookup",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "host",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "A domain name, hostname, FQDN, URL, HTML link or email address to lookup"
          },
          {
            "name": "live",
            "in": "query",
            "required": false,
            "default": true,
            "type": "boolean",
            "description": "For domains that we have never seen before then perform various live checks and realtime reconnaissance. <br> NOTE: this option may add additional non-deterministic delay to the request, if you require consistently fast API response times or just want to check our domain blocklists then you can disable this option"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/DomainLookupResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/ip-blocklist": {
      "get": {
        "description": "The IP Blocklist API will detect potentially malicious or dangerous IP addresses",
        "summary": "IP Blocklist",
        "tags": [
          "Security and Networking"
        ],
        "operationId": "IPBlocklist",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "ip",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "An IPv4 or IPv6 address. Accepts standard IP notation (with or without port number), CIDR notation and IPv6 compressed notation. If multiple IPs are passed using comma-separated values the first non-bogon address on the list will be checked"
          },
          {
            "name": "vpn-lookup",
            "in": "query",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Include public VPN provider IP addresses. <br> <b>NOTE</b>: For more advanced VPN detection including the ability to identify private and stealth VPNs use the <a href=\"https://www.neutrinoapi.com/api/ip-probe/\">IP Probe API</a>"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/IPBlocklistResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/ip-info": {
      "get": {
        "description": "Get location information about an IP address and do reverse DNS (PTR) lookups",
        "summary": "IP Info",
        "tags": [
          "Geolocation"
        ],
        "operationId": "IPInfo",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "ip",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "An IPv4 or IPv6 address. Accepts standard IP notation and also CIDR notation"
          },
          {
            "name": "reverse-lookup",
            "in": "query",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Do a reverse DNS (PTR) lookup. This option can add extra delay to the request so only use it if you need it"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/IPInfoResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/geocode-reverse": {
      "get": {
        "description": "Convert a geographic coordinate (latitude and longitude) into a real world address",
        "summary": "Geocode Reverse",
        "tags": [
          "Geolocation"
        ],
        "operationId": "GeocodeReverse",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "latitude",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "The location latitude in decimal degrees format"
          },
          {
            "name": "longitude",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "The location longitude in decimal degrees format"
          },
          {
            "name": "language-code",
            "in": "query",
            "required": false,
            "default": "en",
            "type": "string",
            "description": "The language to display results in, available languages are: <ul> <li>ar, de, en, es, fr, it, ja, nl, pt, ru, zh</li> </ul>"
          },
          {
            "name": "zoom",
            "in": "query",
            "required": false,
            "default": "address",
            "type": "string",
            "description": "The zoom level to respond with: <br> <ul> <li>address - the most precise address available</li> <li>street - the street level</li> <li>city - the city level</li> <li>state - the state level</li> <li>country - the country level</li> </ul>"
          },
          {
            "name": "geohash",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Reverse lookup by a geohash instead of using latitude and longitude"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/GeocodeReverseResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/geocode-address": {
      "get": {
        "description": "Geocode an address, partial address or just the name of a place",
        "summary": "Geocode Address",
        "tags": [
          "Geolocation"
        ],
        "operationId": "GeocodeAddress",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "The full address, partial address or name of a place to try and locate. Comma separated address components are preferred."
          },
          {
            "name": "house-number",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "The house/building number to locate (for structured address searches)"
          },
          {
            "name": "street",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "The street/road name to locate (for structured address searches)"
          },
          {
            "name": "city",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "The city/town name to locate (for structured address searches)"
          },
          {
            "name": "county",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "The county/region name to locate (for structured address searches)"
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "The state name to locate (for structured address searches)"
          },
          {
            "name": "postal-code",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "The postal code to locate (for structured address searches)"
          },
          {
            "name": "country-code",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Prefer results from this country code (the default is no country bias)"
          },
          {
            "name": "language-code",
            "in": "query",
            "required": false,
            "default": "en",
            "type": "string",
            "description": "The language to display results in, available languages are: <ul> <li>ar, de, en, es, fr, it, ja, nl, pt, ru, zh</li> </ul>"
          },
          {
            "name": "fuzzy-search",
            "in": "query",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "If no matches are found for the given address, start performing a recursive fuzzy search until a geolocation is found. This option is useful for processing user supplied input that may be incomplete or have typos and where you do not mind some potential loss in precision"
          },
          {
            "name": "country-codes",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Prefer results from this list of country codes (space or comma separated values). Preference is in the order supplied, you can use the 'country-code' parameter to also set a dynamic or user supplied country code which takes precedence"
          },
          {
            "name": "auto-complete",
            "in": "query",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Enable auto-complete for search-as-you-type and search suggestions. This option can find addresses based on partial search terms, combine with 'country-code' for country specific searches. Auto-complete works best with 'fuzzy-search' disabled for the fastest response times but can be combined if required"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "default": 8,
            "type": "integer",
            "format": "int32",
            "description": "Limit search results to this many locations (between 1 and a maximum of 32)"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/GeocodeAddressResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/bin-list-download": {
      "get": {
        "description": "Download our entire BIN database for direct use on your own systems",
        "summary": "BIN List Download",
        "tags": [
          "E-commerce"
        ],
        "operationId": "BINListDownload",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "include-iso3",
            "in": "query",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Include ISO 3-letter country codes and ISO 3-letter currency codes in the data. These will be added to columns 10 and 11 respectively"
          },
          {
            "name": "include-8digit",
            "in": "query",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Include 8-digit and higher BIN codes. This option includes all 6-digit BINs and all 8-digit and higher BINs (including some 9, 10 and 11 digit BINs where available)"
          },
          {
            "name": "include-all",
            "in": "query",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Include all BINs and all available fields in the CSV file (overrides any values set for 'include-iso3' or 'include-8digit')"
          },
          {
            "name": "output-encoding",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Set this option to 'gzip' to have the output file compressed using gzip"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "string",
              "default": "",
              "format": "binary"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/convert": {
      "get": {
        "description": "A currency and unit conversion tool",
        "summary": "Convert",
        "tags": [
          "E-commerce"
        ],
        "operationId": "Convert",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "from-value",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "The value to convert from (e.g. 10.95)"
          },
          {
            "name": "from-type",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "The type of the value to convert from (e.g. USD)"
          },
          {
            "name": "to-type",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "The type to convert to (e.g. EUR)"
          },
          {
            "name": "historical-date",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Convert using the rate on a historical date, accepted date formats are: YYYY-MM-DD, YYYY-MM, YYYY. Historical rates are stored with daily granularity so the date format YYYY-MM-DD is preferred for the highest precision. If an invalid date or a date too far into the past is supplied then the API will respond with 'valid' as false and an empty 'historical-date'"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/ConvertResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/bin-lookup": {
      "get": {
        "description": "Perform a BIN (Bank Identification Number) or IIN (Issuer Identification Number) lookup",
        "summary": "BIN Lookup",
        "tags": [
          "E-commerce"
        ],
        "operationId": "BINLookup",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "bin-number",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "The BIN or IIN number. This is the first 6, 8 or 10 digits of a card number, use 8 (or more) digits for the highest level of accuracy"
          },
          {
            "name": "customer-ip",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Pass in the customers IP address and we will return some extra information about them"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/BINLookupResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/html-clean": {
      "post": {
        "description": "Clean and sanitize untrusted HTML",
        "summary": "HTML Clean",
        "tags": [
          "WWW"
        ],
        "operationId": "HTMLClean",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "consumes": [
          "application/x-www-form-urlencoded"
        ],
        "parameters": [
          {
            "name": "content",
            "in": "formData",
            "required": true,
            "type": "string",
            "description": "The HTML content. This can be either a URL to load from, a file upload (multipart/form-data) or an HTML content string"
          },
          {
            "name": "output-type",
            "in": "formData",
            "required": true,
            "type": "string",
            "description": "The level of sanitization, possible values are: <br> <b>plain-text</b>: reduce the content to plain text only (no HTML tags at all) <br> <b>simple-text</b>: allow only very basic text formatting tags like b, em, i, strong, u <br> <b>basic-html</b>: allow advanced text formatting and hyper links <br> <b>basic-html-with-images</b>: same as basic html but also allows image tags <br> <b>advanced-html</b>: same as basic html with images but also allows many more common HTML tags like table, ul, dl, pre <br>"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "string",
              "default": "",
              "format": "binary"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/url-info": {
      "get": {
        "description": "Parse, analyze and retrieve content from the supplied URL",
        "summary": "URL Info",
        "tags": [
          "WWW"
        ],
        "operationId": "URLInfo",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "The URL to probe"
          },
          {
            "name": "fetch-content",
            "in": "query",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "If this URL responds with html, text, json or xml then return the response. This option is useful if you want to perform further processing on the URL content (e.g. with the HTML Extract or HTML Clean APIs)"
          },
          {
            "name": "ignore-certificate-errors",
            "in": "query",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Ignore any TLS/SSL certificate errors and load the URL anyway"
          },
          {
            "name": "timeout",
            "in": "query",
            "required": false,
            "default": 60,
            "type": "integer",
            "format": "int32",
            "description": "Timeout in seconds. Give up if still trying to load the URL after this number of seconds"
          },
          {
            "name": "retry",
            "in": "query",
            "required": false,
            "default": 0,
            "type": "integer",
            "format": "int32",
            "description": "If the request fails for any reason try again this many times"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/URLInfoResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    },
    "/browser-bot": {
      "post": {
        "description": "Browser bot can extract content, interact with keyboard and mouse events, and execute JavaScript on a website",
        "summary": "Browser Bot",
        "tags": [
          "WWW"
        ],
        "operationId": "BrowserBot",
        "deprecated": false,
        "produces": [
          "application/json"
        ],
        "consumes": [
          "application/x-www-form-urlencoded"
        ],
        "parameters": [
          {
            "name": "url",
            "in": "formData",
            "required": true,
            "type": "string",
            "description": "The URL to load"
          },
          {
            "name": "timeout",
            "in": "formData",
            "required": false,
            "default": 30,
            "type": "integer",
            "format": "int32",
            "description": "Timeout in seconds. Give up if still trying to load the page after this number of seconds"
          },
          {
            "name": "delay",
            "in": "formData",
            "required": false,
            "default": 3,
            "type": "integer",
            "format": "int32",
            "description": "Delay in seconds to wait before capturing any page data, executing selectors or JavaScript"
          },
          {
            "name": "selector",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "Extract content from the page DOM using this selector. Commonly known as a CSS selector, you can find a good reference <a href=\"https://www.w3schools.com/cssref/css_selectors.asp\">here</a>"
          },
          {
            "name": "exec",
            "in": "formData",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Execute JavaScript on the website. This parameter accepts JavaScript as either a string containing JavaScript or for sending multiple separate statements a JSON array or POST array can also be used. If a statement returns any value it will be returned in the 'exec-results' response. You can also use the following specially defined user interaction functions: <br> <div> sleep(seconds); Just wait/sleep for the specified number of seconds. <br> click('selector'); Click on the first element matching the given selector. <br> focus('selector'); Focus on the first element matching the given selector. <br> keys('characters'); Send the specified keyboard characters. Use click() or focus() first to send keys to a specific element. <br> enter(); Send the Enter key. <br> tab(); Send the Tab key. <br> </div>"
          },
          {
            "name": "user-agent",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "Override the browsers default user-agent string with this one"
          },
          {
            "name": "ignore-certificate-errors",
            "in": "formData",
            "required": false,
            "default": false,
            "type": "boolean",
            "description": "Ignore any TLS/SSL certificate errors and load the page anyway"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/BrowserBotResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Your API request has been rejected. Check error code for details",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "403": {
            "description": "You have failed to authenticate",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "500": {
            "description": "We messed up, sorry! Your request has caused a fatal exception",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          },
          "default": {
            "description": "We messed up, sorry! Your request has caused an error",
            "schema": {
              "$ref": "#/definitions/APIError"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "IPProbeResponse": {
      "title": "IPProbeResponse",
      "description": "Structure of ip-probe",
      "example": {
        "as-age": 35,
        "as-cidr": "194.233.98.0/24",
        "as-country-code": "GB",
        "as-country-code3": "GBR",
        "as-description": "CDNEXT, GB, Packethub S.A",
        "as-domains": [
          "sh.cz",
          "superhosting.cz",
          "datacamp.co.uk",
          "cdn77.com",
          "heficed.com",
          "packethub.tech"
        ],
        "asn": "212238",
        "city": "Atlanta",
        "continent-code": "NA",
        "country": "United States of America",
        "country-code": "US",
        "country-code3": "USA",
        "currency-code": "USD",
        "host-domain": "",
        "hostname": "",
        "ip": "194.233.98.38",
        "is-bogon": false,
        "is-hosting": true,
        "is-isp": false,
        "is-proxy": false,
        "is-v4-mapped": false,
        "is-v6": false,
        "is-vpn": true,
        "provider-description": "Dedikované servery, managed servery a server hosting: Řešení pro náročné zákazníky. Servery poskytujeme přes 18 let a pečujeme o více než třetinu českého internetu. Proto nám důvěřují nejnavštěvovanější weby",
        "provider-domain": "sh.cz",
        "provider-type": "vpn",
        "provider-website": "https://www.sh.cz/",
        "region": "Georgia",
        "region-code": "GA",
        "valid": true,
        "vpn-domain": ""
      },
      "type": "object",
      "properties": {
        "valid": {
          "description": "True if this is a valid IPv4 or IPv6 address",
          "type": "boolean"
        },
        "country": {
          "description": "Full country name",
          "type": "string"
        },
        "provider-type": {
          "description": "The detected provider type, possible values are: <br> <ul> <li>isp - IP belongs to an internet service provider. This includes both mobile, home and business internet providers</li> <li>hosting - IP belongs to a hosting company. This includes website hosting, cloud computing platforms and colocation facilities</li> <li>vpn - IP belongs to a VPN provider</li> <li>proxy - IP belongs to a proxy service. This includes HTTP/SOCKS proxies and browser based proxies</li> <li>university - IP belongs to a university/college/campus</li> <li>government - IP belongs to a government department. This includes military facilities</li> <li>commercial - IP belongs to a commercial entity such as a corporate headquarters or company office</li> <li>unknown - could not identify the provider type</li> </ul>",
          "type": "string"
        },
        "country-code": {
          "description": "ISO 2-letter country code",
          "type": "string"
        },
        "hostname": {
          "description": "The IPs full hostname (PTR)",
          "type": "string"
        },
        "provider-domain": {
          "description": "The domain name of the provider",
          "type": "string"
        },
        "city": {
          "description": "Full city name (if detectable)",
          "type": "string"
        },
        "provider-website": {
          "description": "The website URL for the provider",
          "type": "string"
        },
        "ip": {
          "description": "The IPv4 or IPv6 address returned",
          "type": "string"
        },
        "region": {
          "description": "Full region name (if detectable)",
          "type": "string"
        },
        "provider-description": {
          "description": "A description of the provider (usually extracted from the providers website)",
          "type": "string"
        },
        "continent-code": {
          "description": "ISO 2-letter continent code",
          "type": "string"
        },
        "is-hosting": {
          "description": "True if this IP belongs to a hosting company. Note that this can still be true even if the provider type is VPN/proxy, this occurs in the case that the IP is detected as both types",
          "type": "boolean"
        },
        "is-isp": {
          "description": "True if this IP belongs to an internet service provider. Note that this can still be true even if the provider type is VPN/proxy, this occurs in the case that the IP is detected as both types",
          "type": "boolean"
        },
        "country-code3": {
          "description": "ISO 3-letter country code",
          "type": "string"
        },
        "currency-code": {
          "description": "ISO 4217 currency code associated with the country",
          "type": "string"
        },
        "is-vpn": {
          "description": "True if this IP ia a VPN",
          "type": "boolean"
        },
        "is-proxy": {
          "description": "True if this IP is a proxy",
          "type": "boolean"
        },
        "asn": {
          "description": "The autonomous system (AS) number",
          "type": "string"
        },
        "as-cidr": {
          "description": "The autonomous system (AS) CIDR range",
          "type": "string"
        },
        "as-country-code": {
          "description": "The autonomous system (AS) ISO 2-letter country code",
          "type": "string"
        },
        "as-country-code3": {
          "description": "The autonomous system (AS) ISO 3-letter country code",
          "type": "string"
        },
        "as-domains": {
          "description": "Array of all the domains associated with the autonomous system (AS)",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "as-description": {
          "description": "The autonomous system (AS) description / company name",
          "type": "string"
        },
        "as-age": {
          "description": "The age of the autonomous system (AS) in number of years since registration",
          "type": "integer",
          "format": "int32"
        },
        "host-domain": {
          "description": "The IPs host domain",
          "type": "string"
        },
        "vpn-domain": {
          "description": "The domain of the VPN provider (may be empty if the VPN domain is not detectable)",
          "type": "string"
        },
        "is-v6": {
          "description": "True if this is a IPv6 address. False if IPv4",
          "type": "boolean"
        },
        "is-v4-mapped": {
          "description": "True if this is a <a href=\"https://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses\">IPv4 mapped IPv6 address</a>",
          "type": "boolean"
        },
        "is-bogon": {
          "description": "True if this is a bogon IP address such as a private network, local network or reserved address",
          "type": "boolean"
        },
        "region-code": {
          "description": "ISO 3166-2 region code (if detectable)",
          "type": "string"
        }
      },
      "required": [
        "valid",
        "country",
        "provider-type",
        "country-code",
        "hostname",
        "provider-domain",
        "city",
        "provider-website",
        "ip",
        "region",
        "provider-description",
        "continent-code",
        "is-hosting",
        "is-isp",
        "country-code3",
        "currency-code",
        "is-vpn",
        "is-proxy",
        "asn",
        "as-cidr",
        "as-country-code",
        "as-country-code3",
        "as-domains",
        "as-description",
        "as-age",
        "host-domain",
        "vpn-domain",
        "is-v6",
        "is-v4-mapped",
        "is-bogon",
        "region-code"
      ]
    },
    "ConvertResponse": {
      "title": "ConvertResponse",
      "description": "Structure of convert",
      "example": {
        "from-name": "United States Dollar",
        "from-symbol": "$",
        "from-type": "USD",
        "from-value": "100",
        "historical-date": "",
        "result": "86.259",
        "result-float": 86.259,
        "to-name": "Euro",
        "to-symbol": "€",
        "to-type": "EUR",
        "valid": true
      },
      "type": "object",
      "properties": {
        "valid": {
          "description": "True if the conversion was successful and produced a valid result",
          "type": "boolean"
        },
        "result": {
          "description": "The result of the conversion in string format",
          "type": "string"
        },
        "from-value": {
          "description": "The value being converted from",
          "type": "string"
        },
        "to-type": {
          "description": "The type being converted to",
          "type": "string"
        },
        "from-type": {
          "description": "The type of the value being converted from",
          "type": "string"
        },
        "result-float": {
          "description": "The result of the conversion as a floating-point number",
          "type": "number",
          "format": "double"
        },
        "from-name": {
          "description": "The full name of the type being converted from",
          "type": "string"
        },
        "from-symbol": {
          "description": "The standard UTF-8 symbol used to represent the type being converted from",
          "type": "string"
        },
        "to-name": {
          "description": "The full name of the type being converted to",
          "type": "string"
        },
        "to-symbol": {
          "description": "The standard UTF-8 symbol used to represent the type being converted to",
          "type": "string"
        },
        "historical-date": {
          "description": "If a historical conversion was made using the 'historical-date' request option this will contain the exact date used for the conversion in ISO format: YYYY-MM-DD",
          "type": "string"
        }
      },
      "required": [
        "valid",
        "result",
        "from-value",
        "to-type",
        "from-type",
        "result-float",
        "from-name",
        "from-symbol",
        "to-name",
        "to-symbol",
        "historical-date"
      ]
    },
    "PhonePlaybackResponse": {
      "title": "PhonePlaybackResponse",
      "description": "Structure of phone-playback",
      "type": "object",
      "properties": {
        "calling": {
          "description": "True if the call is being made now",
          "type": "boolean"
        },
        "number-valid": {
          "description": "True if this a valid phone number",
          "type": "boolean"
        }
      },
      "required": [
        "calling",
        "number-valid"
      ]
    },
    "GeocodeAddressResponse": {
      "title": "GeocodeAddressResponse",
      "description": "Structure of geocode-address",
      "example": {
        "found": 1,
        "locations": [
          {
            "address": "1 Molesworth Street, Pipitea, Wellington 6145, New Zealand",
            "address-components": {
              "city": "Wellington",
              "country": "New Zealand",
              "county": "Wellington City",
              "house-number": "1",
              "neighbourhood": "Lambton",
              "postal-code": "6145",
              "road": "Molesworth Street",
              "state": "Wellington",
              "suburb": "Pipitea"
            },
            "address-structured": {
              "area": "Pipitea",
              "city": "Wellington",
              "country": "New Zealand",
              "county": "Wellington City",
              "name": "",
              "number": "1",
              "postal-code": "6145",
              "state": "Wellington",
              "street": "Molesworth Street"
            },
            "building-type": "house",
            "city": "Wellington",
            "continent-code": "OC",
            "country": "New Zealand",
            "country-code": "NZ",
            "country-code3": "NZL",
            "currency-code": "NZD",
            "geohash": "rbsm1jthekqy",
            "language-code": "en",
            "latitude": -41.277585,
            "location-profile": {},
            "location-tags": [
              "house"
            ],
            "location-type": "address",
            "longitude": 174.777523,
            "postal-address": "1 Molesworth Street\nPipitea\nWellington 6145\nNew Zealand",
            "postal-code": "6145",
            "region-code": "WGN",
            "state": "Wellington",
            "timezone": {
              "abbr": "NZDT",
              "date": "2025-11-18",
              "id": "Pacific/Auckland",
              "name": "New Zealand Daylight Time",
              "offset": "+13:00",
              "time": "17:05:02.561760836"
            }
          }
        ]
      },
      "type": "object",
      "properties": {
        "found": {
          "description": "The number of possible matching locations found",
          "type": "integer",
          "format": "int32"
        },
        "locations": {
          "description": "Array of matching location objects",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Location"
          }
        }
      },
      "required": [
        "found",
        "locations"
      ]
    },
    "IPInfoResponse": {
      "title": "IPInfoResponse",
      "description": "Structure of ip-info",
      "example": {
        "city": "Hong Kong",
        "continent-code": "AS",
        "country": "China, Hong Kong Special Administrative Region",
        "country-code": "HK",
        "country-code3": "HKG",
        "currency-code": "HKD",
        "host-domain": "",
        "hostname": "",
        "ip": "1.1.1.1",
        "is-bogon": false,
        "is-v4-mapped": false,
        "is-v6": false,
        "language-code": "zh",
        "latitude": 22.28552,
        "longitude": 114.15769,
        "region": "Hong Kong",
        "region-code": "HK",
        "timezone": {
          "abbr": "HKT",
          "date": "2025-11-18",
          "id": "Asia/Hong_Kong",
          "name": "Hong Kong Standard Time",
          "offset": "+08:00",
          "time": "12:05:01.242079452"
        },
        "valid": true
      },
      "type": "object",
      "properties": {
        "valid": {
          "description": "True if this is a valid IPv4 or IPv6 address",
          "type": "boolean"
        },
        "country": {
          "description": "Full country name",
          "type": "string"
        },
        "hostname": {
          "description": "The IPs full hostname (only set if reverse-lookup has been used)",
          "type": "string"
        },
        "city": {
          "description": "Name of the city (if detectable)",
          "type": "string"
        },
        "country-code": {
          "description": "ISO 2-letter country code",
          "type": "string"
        },
        "latitude": {
          "description": "Location latitude",
          "type": "number",
          "format": "double"
        },
        "region": {
          "description": "Name of the region (if detectable)",
          "type": "string"
        },
        "longitude": {
          "description": "Location longitude",
          "type": "number",
          "format": "double"
        },
        "continent-code": {
          "description": "ISO 2-letter continent code",
          "type": "string"
        },
        "ip": {
          "description": "The IPv4 or IPv6 address returned",
          "type": "string"
        },
        "country-code3": {
          "description": "ISO 3-letter country code",
          "type": "string"
        },
        "currency-code": {
          "description": "ISO 4217 currency code associated with the country",
          "type": "string"
        },
        "host-domain": {
          "description": "The IPs host domain (only set if reverse-lookup has been used)",
          "type": "string"
        },
        "timezone": {
          "$ref": "#/definitions/Timezone"
        },
        "is-v6": {
          "description": "True if this is a IPv6 address. False if IPv4",
          "type": "boolean"
        },
        "is-v4-mapped": {
          "description": "True if this is a <a href=\"https://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses\">IPv4 mapped IPv6 address</a>",
          "type": "boolean"
        },
        "is-bogon": {
          "description": "True if this is a bogon IP address such as a private network, local network or reserved address",
          "type": "boolean"
        },
        "region-code": {
          "description": "ISO 3166-2 region code (if detectable)",
          "type": "string"
        },
        "language-code": {
          "description": "The ISO 2-letter language code for the official language spoken in the country",
          "type": "string"
        }
      },
      "required": [
        "valid",
        "country",
        "hostname",
        "city",
        "country-code",
        "latitude",
        "region",
        "longitude",
        "continent-code",
        "ip",
        "country-code3",
        "currency-code",
        "host-domain",
        "timezone",
        "is-v6",
        "is-v4-mapped",
        "is-bogon",
        "region-code",
        "language-code"
      ]
    },
    "UALookupResponse": {
      "title": "UALookupResponse",
      "description": "Structure of ua-lookup",
      "example": {
        "browser-engine": "Blink",
        "browser-release": "2020",
        "device-brand": "Samsung",
        "device-height-mm": 157,
        "device-height-px": 1066,
        "device-model": "Galaxy S21 Ultra 5G",
        "device-model-code": "SM-G9980U1",
        "device-pixel-ratio": 3,
        "device-ppi": 515,
        "device-price": 1400,
        "device-release": "2021",
        "device-resolution": "1440x3200",
        "device-width-mm": 70,
        "device-width-px": 480,
        "is-current": false,
        "is-mobile": true,
        "is-ua-frozen": false,
        "is-webview": false,
        "name": "Chrome",
        "os": "Android 11",
        "os-family": "Android",
        "os-version": "11",
        "os-version-major": "11",
        "type": "phone",
        "ua": "Mozilla/5.0 (Linux; Android 11; SM-G9980U1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.101 Mobile Safari/537.36",
        "version": "87.0.4280.101",
        "version-major": "87"
      },
      "type": "object",
      "properties": {
        "ua": {
          "description": "The user agent string",
          "type": "string"
        },
        "type": {
          "description": "The user agent type, possible values are: <br> <ul> <li>desktop</li> <li>phone</li> <li>tablet</li> <li>wearable</li> <li>tv</li> <li>console</li> <li>email</li> <li>library</li> <li>robot</li> <li>unknown</li> </ul>",
          "type": "string"
        },
        "name": {
          "description": "The client software name / user agent name",
          "type": "string"
        },
        "version": {
          "description": "The user agent software full version",
          "type": "string"
        },
        "version-major": {
          "description": "The user agent software major version",
          "type": "string"
        },
        "browser-engine": {
          "description": "For web browsers which underlying browser engine does it use",
          "type": "string"
        },
        "browser-release": {
          "description": "For web browsers which year was this browser version released",
          "type": "string"
        },
        "os": {
          "description": "The full operating system name",
          "type": "string"
        },
        "os-family": {
          "description": "The operating system family. The major OS families are: Android, Windows, macOS, iOS, Linux",
          "type": "string"
        },
        "os-version": {
          "description": "The operating system full version",
          "type": "string"
        },
        "os-version-major": {
          "description": "The operating system major version",
          "type": "string"
        },
        "is-mobile": {
          "description": "Is this a mobile device (e.g. a phone or tablet)",
          "type": "boolean"
        },
        "is-webview": {
          "description": "Is this a WebView or embedded web browser. This includes mobile and desktop apps using WebViews",
          "type": "boolean"
        },
        "device-brand": {
          "description": "The device brand / manufacturer",
          "type": "string"
        },
        "device-model": {
          "description": "The device model",
          "type": "string"
        },
        "device-model-code": {
          "description": "The device model code",
          "type": "string"
        },
        "device-release": {
          "description": "The year when this device model was released",
          "type": "string"
        },
        "device-price": {
          "description": "The average device price on release in USD",
          "type": "number",
          "format": "double"
        },
        "device-resolution": {
          "description": "The device display resolution in physical pixels (e.g. 720x1280)",
          "type": "string"
        },
        "device-ppi": {
          "description": "The device display PPI (pixels per inch)",
          "type": "number",
          "format": "double"
        },
        "device-pixel-ratio": {
          "description": "The device display pixel ratio (the ratio of the resolution in physical pixels to the resolution in CSS pixels)",
          "type": "number",
          "format": "double"
        },
        "device-width-px": {
          "description": "The device display width in CSS 'px'",
          "type": "number",
          "format": "double"
        },
        "device-height-px": {
          "description": "The device display height in CSS 'px'",
          "type": "number",
          "format": "double"
        },
        "is-current": {
          "description": "For web browsers is the version up-to-date with the current stable release (+/- one version)",
          "type": "boolean"
        },
        "is-ua-frozen": {
          "description": "For chrome/chromium based browsers is this user agent string frozen and requires client hints for more accurate details. For more information see <a href=\"https://www.chromium.org/updates/ua-reduction/\">user-agent reduction</a> and to test a browser for client hints go to the <a href=\"https://www.neutrinoapi.com/client-hints-analyzer/\">client hints analyzer</a> test page",
          "type": "boolean"
        },
        "device-width-mm": {
          "description": "The device display width in millimeters",
          "type": "integer",
          "format": "int32"
        },
        "device-height-mm": {
          "description": "The device display height in millimeters",
          "type": "integer",
          "format": "int32"
        }
      },
      "required": [
        "ua",
        "type",
        "name",
        "version",
        "version-major",
        "browser-engine",
        "browser-release",
        "os",
        "os-family",
        "os-version",
        "os-version-major",
        "is-mobile",
        "is-webview",
        "device-brand",
        "device-model",
        "device-model-code",
        "device-release",
        "device-price",
        "device-resolution",
        "device-ppi",
        "device-pixel-ratio",
        "device-width-px",
        "device-height-px",
        "is-current",
        "is-ua-frozen",
        "device-width-mm",
        "device-height-mm"
      ]
    },
    "HTMLElement": {
      "title": "HTMLElement",
      "description": "Structure of elements",
      "type": "object",
      "properties": {
        "class": {
          "description": "The 'class' attribute of the element",
          "type": "string"
        },
        "href": {
          "description": "The 'href' attribute of the element",
          "type": "string"
        },
        "html": {
          "description": "The raw HTML of the element",
          "type": "string"
        },
        "id": {
          "description": "The 'id' attribute of the element",
          "type": "string"
        },
        "text": {
          "description": "The plain-text content of the element with normalized whitespace",
          "type": "string"
        }
      },
      "required": [
        "class",
        "href",
        "html",
        "id",
        "text"
      ]
    },
    "PhoneValidateResponse": {
      "title": "PhoneValidateResponse",
      "description": "Structure of phone-validate",
      "example": {
        "country": "New Zealand",
        "country-code": "NZ",
        "country-code3": "NZL",
        "currency-code": "NZD",
        "international-calling-code": "64",
        "international-number": "+6495552000",
        "is-mobile": false,
        "local-number": "09 555 2000",
        "location": "Auckland",
        "prefix-network": "",
        "type": "fixed-line",
        "valid": true
      },
      "type": "object",
      "properties": {
        "valid": {
          "description": "Is this a valid phone number",
          "type": "boolean"
        },
        "international-calling-code": {
          "description": "The international calling code",
          "type": "string"
        },
        "country-code": {
          "description": "The phone number country as an ISO 2-letter country code",
          "type": "string"
        },
        "location": {
          "description": "The phone number location. Could be the city, region or country depending on the type of number",
          "type": "string"
        },
        "is-mobile": {
          "description": "True if this is a mobile number. If the number type is unknown this value will be false",
          "type": "boolean"
        },
        "type": {
          "description": "The number type based on the number prefix. <br> Possible values are: <br> <ul> <li>mobile</li> <li>fixed-line</li> <li>premium-rate</li> <li>toll-free</li> <li>voip</li> <li>unknown (use HLR lookup)</li> </ul>",
          "type": "string"
        },
        "international-number": {
          "description": "The number represented in full international format (E.164)",
          "type": "string"
        },
        "local-number": {
          "description": "The number represented in local dialing format",
          "type": "string"
        },
        "country": {
          "description": "The phone number country",
          "type": "string"
        },
        "country-code3": {
          "description": "The phone number country as an ISO 3-letter country code",
          "type": "string"
        },
        "currency-code": {
          "description": "ISO 4217 currency code associated with the country",
          "type": "string"
        },
        "prefix-network": {
          "description": "The network/carrier who owns the prefix (this only works for some countries, use HLR lookup for global network detection)",
          "type": "string"
        }
      },
      "required": [
        "valid",
        "international-calling-code",
        "country-code",
        "location",
        "is-mobile",
        "type",
        "international-number",
        "local-number",
        "country",
        "country-code3",
        "currency-code",
        "prefix-network"
      ]
    },
    "VerifySecurityCodeResponse": {
      "title": "VerifySecurityCodeResponse",
      "description": "Structure of verify-security-code",
      "example": {
        "verified": false
      },
      "type": "object",
      "properties": {
        "verified": {
          "description": "True if the code is valid",
          "type": "boolean"
        }
      },
      "required": [
        "verified"
      ]
    },
    "BlocklistSensor": {
      "title": "BlocklistSensor",
      "description": "Structure of sensors",
      "type": "object",
      "properties": {
        "id": {
          "description": "The sensor ID. This is a permanent and unique ID for each sensor",
          "type": "integer",
          "format": "int32"
        },
        "blocklist": {
          "description": "The primary blocklist category this sensor belongs to",
          "type": "string"
        },
        "description": {
          "description": "Contains details about the sensor source and what type of malicious activity was detected",
          "type": "string"
        }
      },
      "required": [
        "id",
        "blocklist",
        "description"
      ]
    },
    "EmailValidateResponse": {
      "title": "EmailValidateResponse",
      "description": "Structure of email-validate",
      "example": {
        "domain": "neutrinoapi.com",
        "domain-error": false,
        "domain-status": "ok",
        "email": "tech@neutrinoapi.com",
        "is-disposable": false,
        "is-freemail": false,
        "is-personal": false,
        "mx-ip": "111.65.230.108",
        "provider": "isx.net.nz",
        "syntax-error": false,
        "typos-fixed": false,
        "valid": true
      },
      "type": "object",
      "properties": {
        "valid": {
          "description": "Is this a valid email address. To be valid an email must have: correct syntax, a registered and active domain name, correct DNS records and operational MX servers",
          "type": "boolean"
        },
        "syntax-error": {
          "description": "True if this address has any syntax errors or is not in RFC compliant formatting",
          "type": "boolean"
        },
        "domain": {
          "description": "The domain name of this email address",
          "type": "string"
        },
        "domain-error": {
          "description": "True if this address has any domain name or DNS related errors. Check the 'domain-status' field for the detailed error reason",
          "type": "boolean"
        },
        "is-freemail": {
          "description": "True if this address is from a free email provider",
          "type": "boolean"
        },
        "email": {
          "description": "The complete email address. If you enabled the 'fix-typos' option then this will be the corrected address",
          "type": "string"
        },
        "is-disposable": {
          "description": "True if this address is a disposable, temporary or darknet related email address",
          "type": "boolean"
        },
        "typos-fixed": {
          "description": "True if any typos have been fixed. The 'fix-typos' option must be enabled for this to work",
          "type": "boolean"
        },
        "is-personal": {
          "description": "True if this address likely belongs to a person. False if this is a role based address, e.g. admin@, help@, office@, etc.",
          "type": "boolean"
        },
        "provider": {
          "description": "The domain name of the email hosting provider",
          "type": "string"
        },
        "mx-ip": {
          "description": "The first resolved IP address of the primary MX server, may be empty if there are domain errors present",
          "type": "string"
        },
        "domain-status": {
          "description": "The email domain status, possible values are: <br> <ul> <li>ok - the domain is in working order and can receive email</li> <li>invalid - the domain is not a conformant hostname. May contain invalid syntax or characters</li> <li>no-service - the domain owner has indicated there is no mail service on the domain (also known as the 'Null MX')</li> <li>no-mail - the domain has no valid MX records so cannot receive email</li> <li>mx-invalid - MX records contain invalid or non-conformant hostname values</li> <li>mx-bogon - MX records point to bogon IP addresses</li> <li>resolv-error - MX records do not resolve to any valid IP addresses</li> </ul>",
          "type": "string"
        }
      },
      "required": [
        "valid",
        "syntax-error",
        "domain",
        "domain-error",
        "is-freemail",
        "email",
        "is-disposable",
        "typos-fixed",
        "is-personal",
        "provider",
        "mx-ip",
        "domain-status"
      ]
    },
    "SMSVerifyResponse": {
      "title": "SMSVerifyResponse",
      "description": "Structure of sms-verify",
      "type": "object",
      "properties": {
        "number-valid": {
          "description": "True if this a valid phone number",
          "type": "boolean"
        },
        "security-code": {
          "description": "The security code generated, you can save this code to perform your own verification or you can use the <a href=\"https://www.neutrinoapi.com/api/verify-security-code/\">Verify Security Code API</a>",
          "type": "string"
        },
        "sent": {
          "description": "True if the SMS has been sent",
          "type": "boolean"
        }
      },
      "required": [
        "number-valid",
        "security-code",
        "sent"
      ]
    },
    "PhoneVerifyResponse": {
      "title": "PhoneVerifyResponse",
      "description": "Structure of phone-verify",
      "type": "object",
      "properties": {
        "number-valid": {
          "description": "True if this a valid phone number",
          "type": "boolean"
        },
        "calling": {
          "description": "True if the call is being made now",
          "type": "boolean"
        },
        "security-code": {
          "description": "The security code generated, you can save this code to perform your own verification or you can use the <a href=\"https://www.neutrinoapi.com/api/verify-security-code/\">Verify Security Code API</a>",
          "type": "string"
        }
      },
      "required": [
        "number-valid",
        "calling",
        "security-code"
      ]
    },
    "HLRLookupResponse": {
      "title": "HLRLookupResponse",
      "description": "Structure of hlr-lookup",
      "example": {
        "country": "United States",
        "country-code": "US",
        "country-code3": "USA",
        "currency-code": "USD",
        "current-network": "Sinch Voice",
        "hlr-status": "voip",
        "hlr-valid": false,
        "imsi": "",
        "international-calling-code": "1",
        "international-number": "+12106100045",
        "is-mobile": false,
        "is-ported": true,
        "is-roaming": false,
        "local-number": "(210) 610-0045",
        "location": "San Antonio, TX",
        "mcc": "",
        "mnc": "",
        "msc": "LANDLINE",
        "msin": "",
        "network-tags": "NSR-10X-Port/1",
        "number-type": "voip",
        "number-valid": true,
        "origin-network": "BANDWIDTH.COM",
        "ported-network": "Sinch Voice",
        "roaming-country-code": ""
      },
      "type": "object",
      "properties": {
        "number-valid": {
          "description": "True if this a valid phone number",
          "type": "boolean"
        },
        "international-calling-code": {
          "description": "The international calling code",
          "type": "string"
        },
        "mnc": {
          "description": "The mobile MNC number (Mobile Network Code)",
          "type": "string"
        },
        "number-type": {
          "description": "The number type, possible values are: <br> <ul> <li>mobile</li> <li>fixed-line</li> <li>premium-rate</li> <li>toll-free</li> <li>voip</li> <li>unknown</li> </ul>",
          "type": "string"
        },
        "hlr-valid": {
          "description": "Was the HLR lookup successful. If true then this is a working and registered cell-phone or mobile device (SMS and phone calls will be delivered)",
          "type": "boolean"
        },
        "hlr-status": {
          "description": "The HLR lookup status, possible values are: <br> <ul> <li>ok - the HLR lookup was successful and the device is connected</li> <li>absent - the number was once registered but the device has been switched off or out of network range for some time</li> <li>unknown - the number is not known by the mobile network</li> <li>invalid - the number is not a valid mobile MSISDN number</li> <li>fixed-line - the number is a registered fixed-line not mobile</li> <li>voip - the number has been detected as a VOIP line</li> <li>failed - the HLR lookup has failed, we could not determine the real status of this number</li> </ul>",
          "type": "string"
        },
        "ported-network": {
          "description": "The ported to network/carrier name (only set if the number has been ported)",
          "type": "string"
        },
        "imsi": {
          "description": "The mobile IMSI number (International Mobile Subscriber Identity)",
          "type": "string"
        },
        "mcc": {
          "description": "The mobile MCC number (Mobile Country Code)",
          "type": "string"
        },
        "international-number": {
          "description": "The number represented in full international format",
          "type": "string"
        },
        "local-number": {
          "description": "The number represented in local dialing format",
          "type": "string"
        },
        "country-code": {
          "description": "The number location as an ISO 2-letter country code",
          "type": "string"
        },
        "is-ported": {
          "description": "Has this number been ported to another network",
          "type": "boolean"
        },
        "msin": {
          "description": "The mobile MSIN number (Mobile Subscription Identification Number)",
          "type": "string"
        },
        "location": {
          "description": "The number location. Could be a city, region or country depending on the type of number",
          "type": "string"
        },
        "origin-network": {
          "description": "The origin network/carrier name",
          "type": "string"
        },
        "is-mobile": {
          "description": "True if this is a mobile number (only true with 100% certainty, if the number type is unknown this value will be false)",
          "type": "boolean"
        },
        "is-roaming": {
          "description": "Is this number currently roaming from its origin country",
          "type": "boolean"
        },
        "country": {
          "description": "The phone number country",
          "type": "string"
        },
        "country-code3": {
          "description": "The number location as an ISO 3-letter country code",
          "type": "string"
        },
        "currency-code": {
          "description": "ISO 4217 currency code associated with the country",
          "type": "string"
        },
        "roaming-country-code": {
          "description": "If the number is currently roaming, the ISO 2-letter country code of the roaming in country",
          "type": "string"
        },
        "msc": {
          "description": "The mobile MSC number (Mobile Switching Center)",
          "type": "string"
        },
        "current-network": {
          "description": "The currently used network/carrier name",
          "type": "string"
        },
        "network-tags": {
          "description": "Contains any additional details about the current network such as former network names and mobile technology utilized",
          "type": "string"
        }
      },
      "required": [
        "number-valid",
        "international-calling-code",
        "mnc",
        "number-type",
        "hlr-valid",
        "hlr-status",
        "ported-network",
        "imsi",
        "mcc",
        "international-number",
        "local-number",
        "country-code",
        "is-ported",
        "msin",
        "location",
        "origin-network",
        "is-mobile",
        "is-roaming",
        "country",
        "country-code3",
        "currency-code",
        "roaming-country-code",
        "msc",
        "current-network",
        "network-tags"
      ]
    },
    "Timezone": {
      "title": "Timezone",
      "description": "Structure of timezone",
      "type": "object",
      "properties": {
        "id": {
          "description": "The time zone ID as per the IANA time zone database (tzdata). If empty then no valid timezone was detected",
          "example": "America/New_York",
          "type": "string"
        },
        "name": {
          "description": "The full time zone name",
          "example": "Eastern Daylight Time",
          "type": "string"
        },
        "abbr": {
          "description": "The time zone abbreviation",
          "example": "EDT",
          "type": "string"
        },
        "date": {
          "description": "The current date at the time zone (ISO 8601 format 'YYYY-MM-DD')",
          "example": "2021-01-01",
          "type": "string"
        },
        "time": {
          "description": "The current time at the time zone (ISO 8601 format 'hh:mm:ss.sss')",
          "example": "12:30:00.00",
          "type": "string"
        },
        "offset": {
          "description": "The UTC offset for the time zone (ISO 8601 format '±hh:mm')",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name",
        "abbr",
        "date",
        "time",
        "offset"
      ]
    },
    "URLInfoResponse": {
      "title": "URLInfoResponse",
      "description": "Structure of url-info",
      "example": {
        "content": "",
        "content-encoding": "gzip",
        "content-size": 104334,
        "content-type": "text/html; charset=UTF-8",
        "http-ok": true,
        "http-redirect": false,
        "http-status": 200,
        "http-status-message": "OK",
        "is-error": false,
        "is-timeout": false,
        "language-code": "en",
        "load-time": 0.351411411,
        "query": {},
        "real": true,
        "server-city": "Kansas City",
        "server-country": "United States of America",
        "server-country-code": "US",
        "server-hostname": "139.243.244.35.bc.googleusercontent.com",
        "server-ip": "35.244.243.139",
        "server-name": "nginx",
        "server-region": "Missouri",
        "title": "Neutrino API: The general-purpose API",
        "url": "https://www.neutrinoapi.com/",
        "url-path": "/",
        "url-port": 443,
        "url-protocol": "https",
        "valid": true
      },
      "type": "object",
      "properties": {
        "http-status-message": {
          "description": "The HTTP status message associated with the status code",
          "type": "string"
        },
        "server-region": {
          "description": "The servers IP geo-location: full region name (if detectable)",
          "type": "string"
        },
        "query": {
          "description": "A key-value map of the URL query parameters",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "server-name": {
          "description": "The name of the server software hosting this URL",
          "type": "string"
        },
        "url-port": {
          "description": "The URL port",
          "type": "integer",
          "format": "int32"
        },
        "server-country": {
          "description": "The servers IP geo-location: full country name",
          "type": "string"
        },
        "real": {
          "description": "Is this URL actually serving real content",
          "type": "boolean"
        },
        "server-city": {
          "description": "The servers IP geo-location: full city name (if detectable)",
          "type": "string"
        },
        "url-path": {
          "description": "The URL path",
          "type": "string"
        },
        "url": {
          "description": "The fully qualified URL. This may be different to the URL requested if http-redirect is true",
          "type": "string"
        },
        "valid": {
          "description": "Is this a valid well-formed URL",
          "type": "boolean"
        },
        "server-hostname": {
          "description": "The servers hostname (PTR record)",
          "type": "string"
        },
        "load-time": {
          "description": "The time taken to load the URL content in seconds",
          "type": "number",
          "format": "double"
        },
        "http-ok": {
          "description": "True if this URL responded with an HTTP OK (200) status",
          "type": "boolean"
        },
        "content-size": {
          "description": "The size of the URL content in bytes",
          "type": "integer",
          "format": "int32"
        },
        "http-status": {
          "description": "The HTTP status code this URL responded with. An HTTP status of 0 indicates a network level issue",
          "type": "integer",
          "format": "int32"
        },
        "server-country-code": {
          "description": "The servers IP geo-location: ISO 2-letter country code",
          "type": "string"
        },
        "content-encoding": {
          "description": "The encoding format the URL uses",
          "type": "string"
        },
        "server-ip": {
          "description": "The IP address of the server hosting this URL",
          "type": "string"
        },
        "url-protocol": {
          "description": "The URL protocol, usually http or https",
          "type": "string"
        },
        "content-type": {
          "description": "The content-type this URL serves",
          "type": "string"
        },
        "http-redirect": {
          "description": "True if this URL responded with an HTTP redirect",
          "type": "boolean"
        },
        "content": {
          "description": "The actual content this URL responded with. Only set if the 'fetch-content' option was used",
          "type": "string"
        },
        "is-timeout": {
          "description": "True if a timeout occurred while loading the URL. You can set the timeout with the request parameter 'timeout'",
          "type": "boolean"
        },
        "title": {
          "description": "The document title",
          "type": "string"
        },
        "language-code": {
          "description": "The ISO 2-letter language code of the page. Extracted from either the HTML document or via HTTP headers",
          "type": "string"
        },
        "is-error": {
          "description": "True if an error occurred while loading the URL. This includes network errors, TLS errors and timeouts",
          "type": "boolean"
        }
      },
      "required": [
        "http-status-message",
        "server-region",
        "query",
        "server-name",
        "url-port",
        "server-country",
        "real",
        "server-city",
        "url-path",
        "url",
        "valid",
        "server-hostname",
        "load-time",
        "http-ok",
        "content-size",
        "http-status",
        "server-country-code",
        "content-encoding",
        "server-ip",
        "url-protocol",
        "content-type",
        "http-redirect",
        "content",
        "is-timeout",
        "title",
        "language-code",
        "is-error"
      ]
    },
    "IPBlocklistResponse": {
      "title": "IPBlocklistResponse",
      "description": "Structure of ip-blocklist",
      "example": {
        "blocklists": [
          "bot",
          "exploit-bot",
          "proxy",
          "spam-bot",
          "tor",
          "vpn"
        ],
        "cidr": "104.244.72.115/32",
        "ip": "104.244.72.115",
        "is-bot": true,
        "is-dshield": false,
        "is-exploit-bot": true,
        "is-hijacked": false,
        "is-listed": true,
        "is-malware": false,
        "is-proxy": true,
        "is-spam-bot": true,
        "is-spider": false,
        "is-spyware": false,
        "is-tor": true,
        "is-vpn": true,
        "last-seen": 1763386800,
        "list-count": 29,
        "sensors": [
          {
            "blocklist": "tor",
            "description": "Tor router",
            "id": 1
          },
          {
            "blocklist": "bot",
            "description": "CINS army list",
            "id": 6
          },
          {
            "blocklist": "exploit-bot",
            "description": "Vulnerability scanning or DDoS bot",
            "id": 17
          },
          {
            "blocklist": "spam-bot",
            "description": "Comment and forum spammers",
            "id": 19
          },
          {
            "blocklist": "bot",
            "description": "Brute force bot (SSH, SMTP, IMAP or HTTP)",
            "id": 20
          },
          {
            "blocklist": "bot",
            "description": "Hacking or attack bot",
            "id": 22
          },
          {
            "blocklist": "tor",
            "description": "Tor node",
            "id": 32
          },
          {
            "blocklist": "exploit-bot",
            "description": "Exploit attacks against website",
            "id": 33
          },
          {
            "blocklist": "spam-bot",
            "description": "HTTP form spam bot",
            "id": 34
          },
          {
            "blocklist": "tor",
            "description": "Tor exit node",
            "id": 38
          },
          {
            "blocklist": "bot",
            "description": "Web server attack source",
            "id": 39
          },
          {
            "blocklist": "spam-bot",
            "description": "Harvester, spam or comment spam host",
            "id": 50
          },
          {
            "blocklist": "proxy",
            "description": "Public HTTP proxy",
            "id": 53
          },
          {
            "blocklist": "vpn",
            "description": "VPN service hosting",
            "id": 54
          },
          {
            "blocklist": "tor",
            "description": "Tor exit node",
            "id": 55
          },
          {
            "blocklist": "spam-bot",
            "description": "Forum, blog or other website spammer",
            "id": 58
          },
          {
            "blocklist": "bot",
            "description": "IP connected to a known honeypot",
            "id": 59
          },
          {
            "blocklist": "bot",
            "description": "Brute force bot (SSH)",
            "id": 60
          },
          {
            "blocklist": "bot",
            "description": "Brute force bot (SMTP)",
            "id": 61
          },
          {
            "blocklist": "bot",
            "description": "Brute force bot (Apache HTTP)",
            "id": 62
          },
          {
            "blocklist": "bot",
            "description": "Brute force bot (IMAP)",
            "id": 63
          },
          {
            "blocklist": "bot",
            "description": "Brute force bot (Website Logins)",
            "id": 66
          },
          {
            "blocklist": "exploit-bot",
            "description": "Hacking, exploit or other attack source",
            "id": 67
          },
          {
            "blocklist": "bot",
            "description": "Scanning or brute force attacks (last 30 days)",
            "id": 68
          },
          {
            "blocklist": "bot",
            "description": "Hacked IP or spam source",
            "id": 69
          },
          {
            "blocklist": "exploit-bot",
            "description": "HTTP attack source",
            "id": 73
          },
          {
            "blocklist": "spam-bot",
            "description": "Email/SMTP attack source",
            "id": 74
          },
          {
            "blocklist": "bot",
            "description": "SSH attack source",
            "id": 75
          },
          {
            "blocklist": "bot",
            "description": "Abuse source (hacking or spam)",
            "id": 76
          }
        ]
      },
      "type": "object",
      "properties": {
        "ip": {
          "description": "The IP address",
          "type": "string"
        },
        "is-bot": {
          "description": "IP is hosting a malicious bot or is part of a botnet. This is a broad category which includes brute-force crackers",
          "type": "boolean"
        },
        "is-exploit-bot": {
          "description": "IP is hosting an exploit finding bot or is running exploit scanning software",
          "type": "boolean"
        },
        "is-malware": {
          "description": "IP is involved in distributing or is running malware",
          "type": "boolean"
        },
        "is-spider": {
          "description": "IP is running a hostile web spider (deprecated but kept for backwards compatibility instead use UA/IP lookups for spider detection)",
          "type": "boolean"
        },
        "is-dshield": {
          "description": "IP has been flagged as a significant attack source by DShield (dshield.org)",
          "type": "boolean"
        },
        "list-count": {
          "description": "The number of blocklists the IP is listed on",
          "type": "integer",
          "format": "int32"
        },
        "is-proxy": {
          "description": "IP has been detected as an anonymous web proxy or anonymous HTTP proxy",
          "type": "boolean"
        },
        "is-hijacked": {
          "description": "IP is part of a hijacked netblock or a netblock controlled by a criminal organization",
          "type": "boolean"
        },
        "is-tor": {
          "description": "IP is a Tor node or running a Tor related service",
          "type": "boolean"
        },
        "is-spyware": {
          "description": "IP is involved in distributing or is running spyware",
          "type": "boolean"
        },
        "is-spam-bot": {
          "description": "IP address is hosting a spam bot, comment spamming or any other spamming type software",
          "type": "boolean"
        },
        "is-listed": {
          "description": "Is this IP on a blocklist",
          "type": "boolean"
        },
        "is-vpn": {
          "description": "IP belongs to a public VPN provider (only set if the 'vpn-lookup' option is enabled)",
          "type": "boolean"
        },
        "last-seen": {
          "description": "The unix time when this IP was last seen on any blocklist. IPs are automatically removed after 7 days therefor this value will never be older than 7 days",
          "type": "integer",
          "format": "int32"
        },
        "blocklists": {
          "description": "An array of strings indicating which blocklist categories this IP is listed on. Current possible values are: <br> <ul> <li>tor - IP is a Tor node or running a Tor related service</li> <li>proxy - IP has been detected as an anonymous web proxy or HTTP proxy</li> <li>vpn - IP belongs to a public VPN provider</li> <li>bot - IP is hosting a malicious bot or is part of a botnet. This is a broad category which includes brute-force crackers</li> <li>spam-bot - IP address is hosting a spam bot, comment spamming or any other spamming type software</li> <li>exploit-bot - IP is hosting an exploit finding bot or is running exploit scanning software</li> <li>hijacked - IP is part of a hijacked netblock or a netblock controlled by a criminal organization</li> <li>malware - IP is currently involved in distributing or is running malware</li> <li>spyware - IP is currently involved in distributing or is running spyware</li> <li>spider - IP is running a hostile web spider (deprecated but kept for backwards compatibility instead use UA/IP lookups for spider detection)</li> <li>dshield - IP has been flagged as a significant attack source by DShield (dshield.org)</li> </ul>",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "sensors": {
          "description": "An array of objects containing details on which specific sensors detected the IP",
          "type": "array",
          "items": {
            "$ref": "#/definitions/BlocklistSensor"
          }
        },
        "cidr": {
          "description": "The CIDR address for this listing (only set if the IP is listed)",
          "type": "string"
        }
      },
      "required": [
        "ip",
        "is-bot",
        "is-exploit-bot",
        "is-malware",
        "is-spider",
        "is-dshield",
        "list-count",
        "is-proxy",
        "is-hijacked",
        "is-tor",
        "is-spyware",
        "is-spam-bot",
        "is-listed",
        "is-vpn",
        "last-seen",
        "blocklists",
        "sensors",
        "cidr"
      ]
    },
    "DomainLookupResponse": {
      "title": "DomainLookupResponse",
      "description": "Structure of domain-lookup",
      "example": {
        "age": 4447,
        "blocklists": [],
        "dns-provider": "constellix.com",
        "domain": "neutrinoapi.com",
        "expiry-date": "2031-09-15",
        "fqdn": "neutrinoapi.com",
        "is-adult": false,
        "is-gov": false,
        "is-malicious": false,
        "is-opennic": false,
        "is-pending": false,
        "is-subdomain": false,
        "mail-provider": "isx.net.nz",
        "mail-status": "ok",
        "rank": 746021,
        "registered-date": "2013-09-15",
        "registrar-id": 468,
        "registrar-name": "Amazon Registrar, Inc.",
        "sensors": [],
        "tld": "com",
        "tld-cc": "",
        "valid": true,
        "website-provider": "cloud.google.com",
        "website-status": "ok"
      },
      "type": "object",
      "properties": {
        "domain": {
          "description": "The primary domain name excluding any subdomains. This is also referred to as the second-level domain (SLD)",
          "type": "string"
        },
        "is-malicious": {
          "description": "Consider this domain malicious as it is currently listed on at least 1 blocklist",
          "type": "boolean"
        },
        "blocklists": {
          "description": "An array of strings indicating which blocklist categories this domain is listed on. Current possible values are: <br> <ul> <li>phishing - Domain has recently been hosting phishing links or involved in the sending of phishing messages</li> <li>malware - Domain has recently been hosting malware or involved in the distribution of malware</li> <li>spam - Domain has recently been sending spam either directly or indirectly</li> <li>anonymizer - Domain is involved in anonymizer activity such as disposable email, hosting proxies or tor services</li> <li>nefarious - Domain is involved in nefarious or malicious activity such as hacking, fraud or other abusive behavior</li> </ul>",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "sensors": {
          "description": "An array of objects containing details on which specific blocklist sensors have detected this domain",
          "type": "array",
          "items": {
            "$ref": "#/definitions/BlocklistSensor"
          }
        },
        "valid": {
          "description": "True if a valid domain was found. For a domain to be considered valid it must be registered and have valid DNS NS records",
          "type": "boolean"
        },
        "fqdn": {
          "description": "The fully qualified domain name (FQDN)",
          "type": "string"
        },
        "is-subdomain": {
          "description": "Is the FQDN a subdomain of the primary domain",
          "type": "boolean"
        },
        "tld": {
          "description": "The top-level domain (TLD)",
          "type": "string"
        },
        "tld-cc": {
          "description": "For a country code top-level domain (ccTLD) this will contain the associated ISO 2-letter country code",
          "type": "string"
        },
        "rank": {
          "description": "The domains estimated global traffic rank with the highest rank being 1. A value of 0 indicates the domain is currently ranked outside of the top 1M of domains",
          "type": "integer",
          "format": "int32"
        },
        "is-gov": {
          "description": "Is this domain under a government or military TLD",
          "type": "boolean"
        },
        "is-opennic": {
          "description": "Is this domain under an OpenNIC TLD",
          "type": "boolean"
        },
        "is-pending": {
          "description": "True if this domain is unseen and is currently being processed in the background. This field only matters when the 'live' lookup setting has been explicitly disabled and indicates that not all domain data my be present yet",
          "type": "boolean"
        },
        "is-adult": {
          "description": "This domain is hosting adult content such as porn, webcams, escorts, etc",
          "type": "boolean"
        },
        "registered-date": {
          "description": "The ISO date this domain was registered or first seen on the internet. An empty value indicates we could not reliably determine the date",
          "type": "string"
        },
        "age": {
          "description": "The number of days since the domain was registered. A domain age of under 90 days is generally considered to be potentially risky. A value of 0 indicates no registration date was found for this domain",
          "type": "integer",
          "format": "int32"
        },
        "registrar-name": {
          "description": "The name of the domain registrar owning this domain",
          "type": "string"
        },
        "registrar-id": {
          "description": "The IANA registrar ID (0 if no registrar ID was found)",
          "type": "integer",
          "format": "int32"
        },
        "dns-provider": {
          "description": "The primary domain of the DNS provider for this domain",
          "type": "string"
        },
        "mail-provider": {
          "description": "The primary domain of the email provider for this domain. An empty value indicates the domain has no valid MX records",
          "type": "string"
        },
        "expiry-date": {
          "description": "The ISO date this domain is due to expire. An empty value indicates we could not reliably determine the date",
          "type": "string"
        },
        "mail-status": {
          "description": "The status of the domains mail configuration, possible values are: <br> <ul> <li>ok - the domain is in working order and can receive email</li> <li>invalid - the domain is not a conformant hostname. May contain invalid syntax or characters</li> <li>no-service - the domain owner has indicated there is no mail service on the domain (also known as the 'Null MX')</li> <li>no-mail - the domain has no valid MX records so cannot receive email</li> <li>mx-invalid - MX records contain invalid or non-conformant hostname values</li> <li>mx-bogon - MX records point to bogon IP addresses</li> <li>resolv-error - MX records do not resolve to any valid IP addresses</li> <li>unknown - mail status is currently unknown (the domain may still be pending processing)</li> </ul>",
          "type": "string"
        },
        "website-status": {
          "description": "The status of the domains website configuration, possible values are: <br> <ul> <li>ok - the domain has a valid and working website</li> <li>no-http - the domain has website records but the HTTP servers are unresponsive or dead</li> <li>no-ip - the domain has no valid A or AAAA website records</li> <li>bogon-ip - the domains website records point to bogon or invalid IP addresses</li> <li>parked - the domain has a working website but indicates it is currently parked or for sale</li> <li>unknown - website status is currently unknown (the domain may still be pending processing)</li> </ul>",
          "type": "string"
        },
        "website-provider": {
          "description": "The primary domain of the website hosting provider for this domain. An empty value indicates the domain has no active website provider",
          "type": "string"
        }
      },
      "required": [
        "domain",
        "is-malicious",
        "blocklists",
        "sensors",
        "valid",
        "fqdn",
        "is-subdomain",
        "tld",
        "tld-cc",
        "rank",
        "is-gov",
        "is-opennic",
        "is-pending",
        "is-adult",
        "registered-date",
        "age",
        "registrar-name",
        "registrar-id",
        "dns-provider",
        "mail-provider",
        "expiry-date",
        "mail-status",
        "website-status",
        "website-provider"
      ]
    },
    "EmailVerifyResponse": {
      "title": "EmailVerifyResponse",
      "description": "Structure of email-verify",
      "example": {
        "domain": "neutrinoapi.com",
        "domain-error": false,
        "domain-status": "ok",
        "email": "tech@neutrinoapi.com",
        "is-catch-all": false,
        "is-deferred": false,
        "is-disposable": false,
        "is-freemail": false,
        "is-personal": false,
        "mx-ip": "111.65.230.109",
        "provider": "isx.net.nz",
        "smtp-response": "250 Accepted",
        "smtp-status": "ok",
        "syntax-error": false,
        "typos-fixed": false,
        "valid": true,
        "verified": true
      },
      "type": "object",
      "properties": {
        "valid": {
          "description": "Is this a valid email address. To be valid an email must have: correct syntax, a registered and active domain name, correct DNS records and operational MX servers",
          "type": "boolean"
        },
        "verified": {
          "description": "True if this email address has passed SMTP username verification. Check the 'smtp-status' and 'domain-status' fields for specific verification details",
          "type": "boolean"
        },
        "email": {
          "description": "The complete email address. If you enabled the 'fix-typos' option then this will be the corrected address",
          "type": "string"
        },
        "typos-fixed": {
          "description": "True if any typos have been fixed. The 'fix-typos' option must be enabled for this to work",
          "type": "boolean"
        },
        "syntax-error": {
          "description": "True if this address has any syntax errors or is not in RFC compliant formatting",
          "type": "boolean"
        },
        "domain-error": {
          "description": "True if this address has any domain name or DNS related errors. Check the 'domain-status' field for the detailed error reason",
          "type": "boolean"
        },
        "domain": {
          "description": "The domain name of this email address",
          "type": "string"
        },
        "provider": {
          "description": "The domain name of the email hosting provider",
          "type": "string"
        },
        "is-freemail": {
          "description": "True if this address is from a free email provider",
          "type": "boolean"
        },
        "is-disposable": {
          "description": "True if this address is a disposable, temporary or darknet related email address",
          "type": "boolean"
        },
        "is-personal": {
          "description": "True if this address likely belongs to a person. False if this is a role based address, e.g. admin@, help@, office@, etc.",
          "type": "boolean"
        },
        "smtp-status": {
          "description": "The SMTP username verification status for this address: <br> <ul> <li>ok - verification was successful, this is a real username that can receive mail</li> <li>absent - this username or domain is not registered with the email service provider</li> <li>invalid - not a valid email address, check the 'domain-status' field for specific details</li> <li>unresponsive - the mail servers for this domain have repeatedly timed-out or refused multiple connection attempts</li> <li>unknown - sorry, we could not reliably determine the status of this username</li> </ul>",
          "type": "string"
        },
        "smtp-response": {
          "description": "The raw SMTP response message received during verification",
          "type": "string"
        },
        "is-catch-all": {
          "description": "True if this email domain has a catch-all policy. A catch-all domain will accept mail for any username so therefor the 'smtp-status' will always be 'ok'",
          "type": "boolean"
        },
        "is-deferred": {
          "description": "True if the mail server responded with a temporary failure (either a 4xx response code or unresponsive server). You can retry this address later, we recommend waiting at least 15 minutes before retrying",
          "type": "boolean"
        },
        "mx-ip": {
          "description": "The first resolved IP address of the primary MX server, may be empty if there are domain errors present",
          "type": "string"
        },
        "domain-status": {
          "description": "The email domain status, possible values are: <br> <ul> <li>ok - the domain is in working order and can receive email</li> <li>invalid - the domain is not a conformant hostname. May contain invalid syntax or characters</li> <li>no-service - the domain owner has indicated there is no mail service on the domain (also known as the 'Null MX')</li> <li>no-mail - the domain has no valid MX records so cannot receive email</li> <li>mx-invalid - MX records contain invalid or non-conformant hostname values</li> <li>mx-bogon - MX records point to bogon IP addresses</li> <li>resolv-error - MX records do not resolve to any valid IP addresses</li> </ul>",
          "type": "string"
        }
      },
      "required": [
        "valid",
        "verified",
        "email",
        "typos-fixed",
        "syntax-error",
        "domain-error",
        "domain",
        "provider",
        "is-freemail",
        "is-disposable",
        "is-personal",
        "smtp-status",
        "smtp-response",
        "is-catch-all",
        "is-deferred",
        "mx-ip",
        "domain-status"
      ]
    },
    "BrowserBotResponse": {
      "title": "BrowserBotResponse",
      "description": "Structure of browser-bot",
      "example": {
        "content": "<html>...</html>",
        "content-size": 104343,
        "elements": [
          {
            "class": "button button-selected",
            "href": "https://www.neutrinoapi.com/",
            "html": "<a href=\"https://www.neutrinoapi.com/\" class=\"button button-selected\">Overview</a>",
            "id": "",
            "text": "Overview"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/api/api-basics/",
            "html": "<a href=\"https://www.neutrinoapi.com/api/api-basics/\" class=\"button \">API&nbsp;Docs</a>",
            "id": "",
            "text": "API Docs"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/plans/",
            "html": "<a href=\"https://www.neutrinoapi.com/plans/\" class=\"button \">Plans</a>",
            "id": "",
            "text": "Plans"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/signup/",
            "html": "<a href=\"https://www.neutrinoapi.com/signup/\" class=\"button \">Sign&nbsp;Up</a>",
            "id": "",
            "text": "Sign Up"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/updates/",
            "html": "<a href=\"https://www.neutrinoapi.com/updates/\" class=\"button \">Updates</a>",
            "id": "",
            "text": "Updates"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/status/",
            "html": "<a href=\"https://www.neutrinoapi.com/status/\" class=\"button \">Status</a>",
            "id": "",
            "text": "Status"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/about-us/",
            "html": "<a href=\"https://www.neutrinoapi.com/about-us/\" class=\"button \">About</a>",
            "id": "",
            "text": "About"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/contact-us/",
            "html": "<a href=\"https://www.neutrinoapi.com/contact-us/\" class=\"button \">Contact</a>",
            "id": "",
            "text": "Contact"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/account/login/",
            "html": "<a href=\"https://www.neutrinoapi.com/account/login/\" class=\"button \">Login</a>",
            "id": "",
            "text": "Login"
          },
          {
            "class": "button button-selected",
            "href": "https://www.neutrinoapi.com/",
            "html": "<a href=\"https://www.neutrinoapi.com/\" class=\"button button-selected\">Overview</a>",
            "id": "",
            "text": "Overview"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/api/index/",
            "html": "<a href=\"https://www.neutrinoapi.com/api/index/\" class=\"button \">API&nbsp;Docs</a>",
            "id": "",
            "text": "API Docs"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/plans/",
            "html": "<a href=\"https://www.neutrinoapi.com/plans/\" class=\"button \">Plans</a>",
            "id": "",
            "text": "Plans"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/signup/",
            "html": "<a href=\"https://www.neutrinoapi.com/signup/\" class=\"button \">Sign&nbsp;Up</a>",
            "id": "",
            "text": "Sign Up"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/updates/",
            "html": "<a href=\"https://www.neutrinoapi.com/updates/\" class=\"button \">Updates</a>",
            "id": "",
            "text": "Updates"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/status/",
            "html": "<a href=\"https://www.neutrinoapi.com/status/\" class=\"button \">Status</a>",
            "id": "",
            "text": "Status"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/about-us/",
            "html": "<a href=\"https://www.neutrinoapi.com/about-us/\" class=\"button \">About</a>",
            "id": "",
            "text": "About"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/contact-us/",
            "html": "<a href=\"https://www.neutrinoapi.com/contact-us/\" class=\"button \">Contact</a>",
            "id": "",
            "text": "Contact"
          },
          {
            "class": "button ",
            "href": "https://www.neutrinoapi.com/account/login/",
            "html": "<a href=\"https://www.neutrinoapi.com/account/login/\" class=\"button \">Login</a>",
            "id": "",
            "text": "Login"
          }
        ],
        "error-message": "",
        "exec-results": [
          {
            "result": "",
            "statement": "[click('#button-id'), sleep(1), click('.class'), keys('1234'), enter()]"
          }
        ],
        "http-redirect-url": "",
        "http-status-code": 200,
        "http-status-message": "OK",
        "is-error": false,
        "is-http-ok": true,
        "is-http-redirect": false,
        "is-secure": true,
        "is-timeout": false,
        "language-code": "en",
        "load-time": 1.402569385,
        "mime-type": "text/html",
        "response-headers": {
          "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000",
          "content-encoding": "gzip",
          "content-security-policy": "default-src 'self'; base-uri 'none'; object-src 'none'; frame-ancestors 'none'; frame-src 'none'; form-action 'self' secure.ewaypayments.com; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; report-uri https://www.neutrinoapi.com/csp-report/",
          "content-type": "text/html; charset=UTF-8",
          "date": "Tue, 18 Nov 2025 04:05:04 GMT",
          "referrer-policy": "strict-origin",
          "server": "nginx",
          "strict-transport-security": "max-age=31536000",
          "via": "1.1 google",
          "x-content-type-options": "nosniff"
        },
        "security-details": {
          "cipher": "AES_128_GCM",
          "issuer": "GlobalSign RSA OV SSL CA 2018",
          "protocol": "TLS 1.3",
          "subject-name": "*.neutrinoapi.com"
        },
        "server-hostname": "139.243.244.35.bc.googleusercontent.com",
        "server-ip": "35.244.243.139",
        "title": "Neutrino API: The general-purpose API",
        "url": "https://www.neutrinoapi.com/",
        "url-components": {
          "host": "www.neutrinoapi.com",
          "path": "/",
          "port": 443,
          "protocol": "https",
          "query": {},
          "url": "https://www.neutrinoapi.com/"
        },
        "url-valid": true
      },
      "type": "object",
      "properties": {
        "url": {
          "description": "The requested URL. This may not be the same as the final destination URL, if the URL redirects then it will be set in 'http-redirect-url' and 'is-http-redirect' will also be true",
          "type": "string"
        },
        "content": {
          "description": "The complete raw, decompressed and decoded page content. Usually will be either HTML, JSON or XML",
          "type": "string"
        },
        "mime-type": {
          "description": "The document MIME type",
          "type": "string"
        },
        "title": {
          "description": "The document title",
          "type": "string"
        },
        "is-error": {
          "description": "True if an error has occurred loading the page. Check the 'error-message' field for details",
          "type": "boolean"
        },
        "is-timeout": {
          "description": "True if a timeout occurred while loading the page. You can set the timeout with the request parameter 'timeout'",
          "type": "boolean"
        },
        "error-message": {
          "description": "Contains the error message if an error has occurred ('is-error' will be true)",
          "type": "string"
        },
        "http-status-code": {
          "description": "The HTTP status code the URL returned",
          "type": "integer",
          "format": "int32"
        },
        "http-status-message": {
          "description": "The HTTP status message the URL returned",
          "type": "string"
        },
        "is-http-ok": {
          "description": "True if the HTTP status is OK (200)",
          "type": "boolean"
        },
        "is-http-redirect": {
          "description": "True if the URL responded with an HTTP redirect",
          "type": "boolean"
        },
        "http-redirect-url": {
          "description": "The redirected URL if the URL responded with an HTTP redirect",
          "type": "string"
        },
        "server-ip": {
          "description": "The HTTP servers IP address",
          "type": "string"
        },
        "load-time": {
          "description": "The number of seconds taken to load the page (from initial request until DOM ready)",
          "type": "number",
          "format": "double"
        },
        "response-headers": {
          "description": "Map containing all the HTTP response headers the URL responded with",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "is-secure": {
          "description": "True if the page is secured using TLS/SSL",
          "type": "boolean"
        },
        "security-details": {
          "description": "Map containing details of the TLS/SSL setup",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "elements": {
          "description": "Array containing all the elements matching the supplied selector",
          "type": "array",
          "items": {
            "$ref": "#/definitions/HTMLElement"
          }
        },
        "exec-results": {
          "description": "If you executed any JavaScript this array holds the results as objects",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExecResult"
          }
        },
        "language-code": {
          "description": "The ISO 2-letter language code of the page. Extracted from either the HTML document or via HTTP headers",
          "type": "string"
        },
        "url-components": {
          "$ref": "#/definitions/URLComponents"
        },
        "url-valid": {
          "description": "True if the URL supplied is valid",
          "type": "boolean"
        },
        "content-size": {
          "description": "The size of the returned content in bytes",
          "type": "integer",
          "format": "int32"
        },
        "server-hostname": {
          "description": "The HTTP servers hostname (PTR/RDNS record)",
          "type": "string"
        }
      },
      "required": [
        "url",
        "content",
        "mime-type",
        "title",
        "is-error",
        "is-timeout",
        "error-message",
        "http-status-code",
        "http-status-message",
        "is-http-ok",
        "is-http-redirect",
        "http-redirect-url",
        "server-ip",
        "load-time",
        "response-headers",
        "is-secure",
        "security-details",
        "elements",
        "exec-results",
        "language-code",
        "url-components",
        "url-valid",
        "content-size",
        "server-hostname"
      ]
    },
    "GeocodeReverseResponse": {
      "title": "GeocodeReverseResponse",
      "description": "Structure of geocode-reverse",
      "example": {
        "address": "1 Molesworth Street, Pipitea, Wellington 6145, New Zealand",
        "address-components": {
          "city": "Wellington",
          "country": "New Zealand",
          "county": "Wellington City",
          "house-number": "1",
          "neighbourhood": "Lambton",
          "postal-code": "6145",
          "road": "Molesworth Street",
          "state": "Wellington",
          "suburb": "Pipitea"
        },
        "address-structured": {
          "area": "Pipitea",
          "city": "Wellington",
          "country": "New Zealand",
          "county": "Wellington City",
          "name": "",
          "number": "1",
          "postal-code": "6145",
          "state": "Wellington",
          "street": "Molesworth Street"
        },
        "building-type": "house",
        "city": "Wellington",
        "continent-code": "OC",
        "country": "New Zealand",
        "country-code": "NZ",
        "country-code3": "NZL",
        "currency-code": "NZD",
        "found": true,
        "geohash": "rbsm1jthekqy",
        "language-code": "en",
        "latitude": -41.277585,
        "location-profile": {},
        "location-tags": [
          "house"
        ],
        "location-type": "address",
        "longitude": 174.777523,
        "postal-address": "1 Molesworth Street\nPipitea\nWellington 6145\nNew Zealand",
        "postal-code": "6145",
        "region-code": "WGN",
        "state": "Wellington",
        "timezone": {
          "abbr": "NZDT",
          "date": "2025-11-18",
          "id": "Pacific/Auckland",
          "name": "New Zealand Daylight Time",
          "offset": "+13:00",
          "time": "17:05:01.96639137"
        }
      },
      "type": "object",
      "properties": {
        "country": {
          "description": "The country of the location",
          "type": "string"
        },
        "found": {
          "description": "True if these coordinates map to a real location",
          "type": "boolean"
        },
        "address": {
          "description": "The full address string using comma-separated values, use 'postal-address' for the address string formatted using country/region specific rules",
          "type": "string"
        },
        "city": {
          "description": "The city of the location",
          "type": "string"
        },
        "country-code": {
          "description": "The ISO 2-letter country code of the location",
          "type": "string"
        },
        "postal-code": {
          "description": "The postal code for the location",
          "type": "string"
        },
        "state": {
          "description": "The state of the location",
          "type": "string"
        },
        "address-structured": {
          "$ref": "#/definitions/AddressStructured"
        },
        "address-components": {
          "description": "The components which make up the address such as road, city, state, etc. These are country/region specific values, use 'address-structured' for a strict address structure which is the same for all locations globally",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "country-code3": {
          "description": "The ISO 3-letter country code of the location",
          "type": "string"
        },
        "currency-code": {
          "description": "ISO 4217 currency code associated with the country",
          "type": "string"
        },
        "location-type": {
          "description": "The detected location type ordered roughly from most to least precise, possible values are: <br> <ul> <li>address - indicates a precise street address</li> <li>street - accurate to the street level but may not point to the exact location of the house/building number</li> <li>city - accurate to the city level, this includes villages, towns, suburbs, etc</li> <li>postal-code - indicates a postal code area (no house or street information present)</li> <li>railway - location is part of a rail network such as a station or railway track</li> <li>natural - indicates a natural feature, for example a mountain peak or a waterway</li> <li>island - location is an island or archipelago</li> <li>administrative - indicates an administrative boundary such as a country, state or province</li> </ul>",
          "type": "string"
        },
        "location-tags": {
          "description": "Array of strings containing any location tags associated with the address. Tags are additional pieces of metadata about a specific location, there are thousands of different tags. Some examples of tags: shop, office, cafe, bank, pub",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "latitude": {
          "description": "The location latitude",
          "type": "number",
          "format": "double"
        },
        "longitude": {
          "description": "The location longitude",
          "type": "number",
          "format": "double"
        },
        "timezone": {
          "$ref": "#/definitions/Timezone"
        },
        "region-code": {
          "description": "The ISO 3166-2 region code for the location",
          "type": "string"
        },
        "postal-address": {
          "description": "The formatted address using local standards suitable for printing on an envelope",
          "type": "string"
        },
        "language-code": {
          "description": "The ISO 2-letter language code for the official language spoken in the country",
          "type": "string"
        },
        "geohash": {
          "description": "The location <a href=\"https://en.wikipedia.org/wiki/Geohash\">geohash</a>",
          "type": "string"
        },
        "continent-code": {
          "description": "ISO 2-letter continent code",
          "type": "string"
        },
        "building-type": {
          "description": "The detected building type for the address, possible values are: <br> <ul> <li>none - no building type was detected for this location</li> <li>house - a residential house/property</li> <li>apartment - a residential apartment complex</li> <li>office - a commercial/business office</li> <li>accommodation - a hotel/motel or other type of accommodation</li> <li>education - a school or university</li> <li>food - a restaurant or place where food can be purchased</li> <li>shop - a shop selling any type of goods</li> <li>attraction - an attraction such as theme parks or tourist activities</li> <li>medical - a hospital or other medical facility</li> <li>transport - a transportation building such as a bus or train depot</li> <li>commercial - a commercial/industrial building</li> <li>government - a government or military facility</li> <li>public - a public building such as a townhall or community centre</li> </ul>",
          "type": "string"
        },
        "location-profile": {
          "description": "Map containing any external metadata linked to the location. Currently supports the following values which are only set if known: website-url, phone-number, org-name, wikipedia-title, wikidata-entity",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "required": [
        "country",
        "found",
        "address",
        "city",
        "country-code",
        "postal-code",
        "state",
        "address-structured",
        "address-components",
        "country-code3",
        "currency-code",
        "location-type",
        "location-tags",
        "latitude",
        "longitude",
        "timezone",
        "region-code",
        "postal-address",
        "language-code",
        "geohash",
        "continent-code",
        "building-type",
        "location-profile"
      ]
    },
    "HostReputationResponse": {
      "title": "HostReputationResponse",
      "description": "Structure of host-reputation",
      "example": {
        "host": "neutrinoapi.com",
        "is-listed": false,
        "list-count": 0,
        "lists": [
          {
            "is-listed": false,
            "list-host": "uribl.zeustracker.abuse.ch",
            "list-name": "abuse.ch ZeuS Tracker Domain",
            "list-rating": 3,
            "response-time": 16,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "uribl.abuse.ro",
            "list-name": "abuse.ro URI RBL",
            "list-rating": 3,
            "response-time": 49,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "dblack.mail.abusix.zone",
            "list-name": "Abusix Domain Spam",
            "list-rating": 2,
            "response-time": 61,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "bsb.empty.us",
            "list-name": "Blog Spam Blocklist (empty.us)",
            "list-rating": 3,
            "response-time": 16,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "bsb.spamlookup.net",
            "list-name": "Blog Spam Blocklist (spamlookup.net)",
            "list-rating": 3,
            "response-time": 27,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "bl.fmb.la",
            "list-name": "fmb.la",
            "list-rating": 3,
            "response-time": 16,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "dbl.nordspam.com",
            "list-name": "NordSpam Domain Blacklist",
            "list-rating": 2,
            "response-time": 18,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "ubl.nszones.com",
            "list-name": "nsZones.com SURBL",
            "list-rating": 3,
            "response-time": 19,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "rhsbl.rymsho.ru",
            "list-name": "Rymsho's RHSBL",
            "list-rating": 3,
            "response-time": 51,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "public.sarbl.org",
            "list-name": "SARBL",
            "list-rating": 2,
            "response-time": 12,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "rhsbl.scientificspam.net",
            "list-name": "Scientific Spam",
            "list-rating": 2,
            "response-time": 4,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "nomail.rhsbl.sorbs.net",
            "list-name": "SORBS Domain names indicating no email sender",
            "list-rating": 2,
            "response-time": 45,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "badconf.rhsbl.sorbs.net",
            "list-name": "SORBS Domain names pointing to bad addresses",
            "list-rating": 2,
            "response-time": 23,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "fresh.spameatingmonkey.net",
            "list-name": "Spam Eating Monkey SEM-FRESH",
            "list-rating": 2,
            "response-time": 90,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "fresh10.spameatingmonkey.net",
            "list-name": "Spam Eating Monkey SEM-FRESH10",
            "list-rating": 2,
            "response-time": 86,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "fresh15.spameatingmonkey.net",
            "list-name": "Spam Eating Monkey SEM-FRESH15",
            "list-rating": 2,
            "response-time": 87,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "uribl.spameatingmonkey.net",
            "list-name": "Spam Eating Monkey SEM-URI",
            "list-rating": 2,
            "response-time": 85,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "urired.spameatingmonkey.net",
            "list-name": "Spam Eating Monkey SEM-URIRED",
            "list-rating": 2,
            "response-time": 88,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "dbl.spamhaus.org",
            "list-name": "Spamhaus DBL Domain Block List",
            "list-rating": 1,
            "response-time": 39,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "dbl.suomispam.net",
            "list-name": "Suomispam Domain Blacklist",
            "list-rating": 2,
            "response-time": 21,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "multi.surbl.org",
            "list-name": "SURBL multi (Combined SURBL list)",
            "list-rating": 1,
            "response-time": 21,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "uribl.swinog.ch",
            "list-name": "Swinog URIBL",
            "list-rating": 2,
            "response-time": 24,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "dob.sibl.support-intelligence.net",
            "list-name": "The Day Old Bread List (aka DOB)",
            "list-rating": 3,
            "response-time": 139,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "black.uribl.com",
            "list-name": "URIBL black",
            "list-rating": 1,
            "response-time": 77,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "uri.blacklist.woody.ch",
            "list-name": "Woody's SMTP Blacklist URIBL",
            "list-rating": 3,
            "response-time": 21,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "rhsbl.zapbl.net",
            "list-name": "ZapBL RHSBL",
            "list-rating": 3,
            "response-time": 13,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "zebl.zoneedit.com",
            "list-name": "ZoneEdit combined RHSBL",
            "list-rating": 3,
            "response-time": 4,
            "return-code": "",
            "txt-record": ""
          },
          {
            "is-listed": false,
            "list-host": "ban.zebl.zoneedit.com",
            "list-name": "ZoneEdit deny DNS services domains",
            "list-rating": 3,
            "response-time": 17,
            "return-code": "",
            "txt-record": ""
          }
        ]
      },
      "type": "object",
      "properties": {
        "is-listed": {
          "description": "Is this host blacklisted",
          "type": "boolean"
        },
        "lists": {
          "description": "Array of objects for each DNSBL checked",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Blacklist"
          }
        },
        "list-count": {
          "description": "The number of DNSBLs the host is listed on",
          "type": "integer",
          "format": "int32"
        },
        "host": {
          "description": "The IP address or host name",
          "type": "string"
        }
      },
      "required": [
        "is-listed",
        "lists",
        "list-count",
        "host"
      ]
    },
    "BadWordFilterResponse": {
      "title": "BadWordFilterResponse",
      "description": "Structure of bad-word-filter",
      "example": {
        "bad-words-list": [
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED",
          "REDACTED"
        ],
        "bad-words-total": 50,
        "censored-content": "",
        "is-bad": true
      },
      "type": "object",
      "properties": {
        "bad-words-list": {
          "description": "An array of the bad words found",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "bad-words-total": {
          "description": "Total number of bad words detected",
          "type": "integer",
          "format": "int32"
        },
        "censored-content": {
          "description": "The censored content (only set if censor-character has been set)",
          "type": "string"
        },
        "is-bad": {
          "description": "Does the text contain bad words",
          "type": "boolean"
        }
      },
      "required": [
        "bad-words-list",
        "bad-words-total",
        "censored-content",
        "is-bad"
      ]
    },
    "Blacklist": {
      "title": "Blacklist",
      "description": "Structure of lists",
      "type": "object",
      "properties": {
        "is-listed": {
          "description": "True if the host is currently black-listed",
          "type": "boolean"
        },
        "list-host": {
          "description": "The hostname of the DNSBL",
          "type": "string"
        },
        "list-rating": {
          "description": "The list rating [1-3] with 1 being the best rating and 3 the lowest rating",
          "type": "integer",
          "format": "int32"
        },
        "list-name": {
          "description": "The name of the DNSBL",
          "type": "string"
        },
        "txt-record": {
          "description": "The TXT record returned for this listing (only set if listed)",
          "type": "string"
        },
        "return-code": {
          "description": "The specific return code for this listing (only set if listed)",
          "type": "string"
        },
        "response-time": {
          "description": "The DNSBL server response time in milliseconds",
          "type": "integer",
          "format": "int32"
        }
      },
      "required": [
        "is-listed",
        "list-host",
        "list-rating",
        "list-name",
        "txt-record",
        "return-code",
        "response-time"
      ]
    },
    "BINLookupResponse": {
      "title": "BINLookupResponse",
      "description": "Structure of bin-lookup",
      "example": {
        "bin-number": "48334884",
        "card-brand": "VISA",
        "card-category": "PLATINUM",
        "card-type": "CREDIT",
        "country": "NEW ZEALAND",
        "country-code": "NZ",
        "country-code3": "NZL",
        "currency-code": "NZD",
        "ip-blocklisted": false,
        "ip-blocklists": [],
        "ip-city": "",
        "ip-country": "",
        "ip-country-code": "",
        "ip-country-code3": "",
        "ip-matches-bin": false,
        "ip-region": "",
        "is-commercial": false,
        "is-prepaid": false,
        "is-reloadable": true,
        "issuer": "KIWIBANK, LTD.",
        "issuer-phone": "",
        "issuer-website": "http://www.kiwibank.co.nz",
        "valid": true
      },
      "type": "object",
      "properties": {
        "country": {
          "description": "The full country name of the issuer",
          "type": "string"
        },
        "ip-city": {
          "description": "The city of the customers IP (if detectable)",
          "type": "string"
        },
        "ip-matches-bin": {
          "description": "True if the customers IP country matches the BIN country",
          "type": "boolean"
        },
        "card-type": {
          "description": "The card type, will always be one of: DEBIT, CREDIT, CHARGE CARD",
          "type": "string"
        },
        "card-category": {
          "description": "The card category. There are many different card categories the most common card categories are: CLASSIC, BUSINESS, CORPORATE, PLATINUM, PREPAID",
          "type": "string"
        },
        "ip-country-code": {
          "description": "The ISO 2-letter country code of the customers IP",
          "type": "string"
        },
        "ip-country": {
          "description": "The country of the customers IP",
          "type": "string"
        },
        "issuer": {
          "description": "The card issuer",
          "type": "string"
        },
        "ip-blocklisted": {
          "description": "True if the customers IP is listed on one of our blocklists, see the <a href=\"http://www.neutrinoapi.com/api/ip-blocklist/\">IP Blocklist API</a>",
          "type": "boolean"
        },
        "valid": {
          "description": "Is this a valid BIN or IIN number",
          "type": "boolean"
        },
        "ip-blocklists": {
          "description": "An array of strings indicating which blocklists this IP is listed on",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "issuer-website": {
          "description": "The card issuers website",
          "type": "string"
        },
        "country-code": {
          "description": "The ISO 2-letter country code of the issuer",
          "type": "string"
        },
        "ip-region": {
          "description": "The region of the customers IP (if detectable)",
          "type": "string"
        },
        "card-brand": {
          "description": "The card brand (e.g. Visa or Mastercard)",
          "type": "string"
        },
        "issuer-phone": {
          "description": "The card issuers phone number",
          "type": "string"
        },
        "country-code3": {
          "description": "The ISO 3-letter country code of the issuer",
          "type": "string"
        },
        "currency-code": {
          "description": "ISO 4217 currency code associated with the country of the issuer",
          "type": "string"
        },
        "ip-country-code3": {
          "description": "The ISO 3-letter country code of the customers IP",
          "type": "string"
        },
        "is-commercial": {
          "description": "Is this a commercial/business use card",
          "type": "boolean"
        },
        "is-prepaid": {
          "description": "Is this a prepaid or prepaid reloadable card",
          "type": "boolean"
        },
        "bin-number": {
          "description": "The BIN number returned. You may count the number of digits in this field to determine if the BIN is likely to be based on an 8-digit or 6-digit card",
          "type": "string"
        },
        "is-reloadable": {
          "description": "Indicates the card can be reloaded with funds. This is mostly useful to distinguish between non-reloadable and reloadable prepaid card types",
          "type": "boolean"
        }
      },
      "required": [
        "country",
        "ip-city",
        "ip-matches-bin",
        "card-type",
        "card-category",
        "ip-country-code",
        "ip-country",
        "issuer",
        "ip-blocklisted",
        "valid",
        "ip-blocklists",
        "issuer-website",
        "country-code",
        "ip-region",
        "card-brand",
        "issuer-phone",
        "country-code3",
        "currency-code",
        "ip-country-code3",
        "is-commercial",
        "is-prepaid",
        "bin-number",
        "is-reloadable"
      ]
    },
    "Location": {
      "title": "Location",
      "description": "Structure of locations",
      "type": "object",
      "properties": {
        "country": {
          "description": "The country of the location",
          "type": "string"
        },
        "address": {
          "description": "The full address string using comma-separated values, use 'postal-address' for the address string formatted using country/region specific rules",
          "type": "string"
        },
        "city": {
          "description": "The city of the location",
          "type": "string"
        },
        "country-code": {
          "description": "The ISO 2-letter country code of the location",
          "type": "string"
        },
        "country-code3": {
          "description": "The ISO 3-letter country code of the location",
          "type": "string"
        },
        "latitude": {
          "description": "The location latitude",
          "type": "number",
          "format": "double"
        },
        "postal-code": {
          "description": "The postal code for the location",
          "type": "string"
        },
        "longitude": {
          "description": "The location longitude",
          "type": "number",
          "format": "double"
        },
        "state": {
          "description": "The state of the location",
          "type": "string"
        },
        "address-structured": {
          "$ref": "#/definitions/AddressStructured"
        },
        "address-components": {
          "description": "The components which make up the address such as road, city, state, etc. These are country/region specific values, use 'address-structured' for a strict address structure which is the same for all locations globally",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "currency-code": {
          "description": "ISO 4217 currency code associated with the country",
          "type": "string"
        },
        "location-type": {
          "description": "The detected location type ordered roughly from most to least precise, possible values are: <br> <ul> <li>address - indicates a precise street address</li> <li>street - accurate to the street level but may not point to the exact location of the house/building number</li> <li>city - accurate to the city level, this includes villages, towns, suburbs, etc</li> <li>postal-code - indicates a postal code area (no house or street information present)</li> <li>railway - location is part of a rail network such as a station or railway track</li> <li>natural - indicates a natural feature, for example a mountain peak or a waterway</li> <li>island - location is an island or archipelago</li> <li>administrative - indicates an administrative boundary such as a country, state or province</li> </ul>",
          "type": "string"
        },
        "location-tags": {
          "description": "Array of strings containing any location tags associated with the address. Tags are additional pieces of metadata about a specific location, there are thousands of different tags. Some examples of tags: shop, office, cafe, bank, pub",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "timezone": {
          "$ref": "#/definitions/Timezone"
        },
        "region-code": {
          "description": "The ISO 3166-2 region code for the location",
          "type": "string"
        },
        "postal-address": {
          "description": "The formatted address using local standards suitable for printing on an envelope",
          "type": "string"
        },
        "language-code": {
          "description": "The ISO 2-letter language code for the official language spoken in the country",
          "type": "string"
        },
        "geohash": {
          "description": "The location <a href=\"https://en.wikipedia.org/wiki/Geohash\">geohash</a>",
          "type": "string"
        },
        "continent-code": {
          "description": "ISO 2-letter continent code",
          "type": "string"
        },
        "building-type": {
          "description": "The detected building type for the address, possible values are: <br> <ul> <li>none - no building type was detected for this location</li> <li>house - a residential house/property</li> <li>apartment - a residential apartment complex</li> <li>office - a commercial/business office</li> <li>accommodation - a hotel/motel or other type of accommodation</li> <li>education - a school or university</li> <li>food - a restaurant or place where food can be purchased</li> <li>shop - a shop selling any type of goods</li> <li>attraction - an attraction such as theme parks or tourist activities</li> <li>medical - a hospital or other medical facility</li> <li>transport - a transportation building such as a bus or train depot</li> <li>commercial - a commercial/industrial building</li> <li>government - a government or military facility</li> <li>public - a public building such as a townhall or community centre</li> </ul>",
          "type": "string"
        },
        "location-profile": {
          "description": "Map containing any external metadata linked to the location. Currently supports the following values which are only set if known: website-url, phone-number, org-name, wikipedia-title, wikidata-entity",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "required": [
        "country",
        "address",
        "city",
        "country-code",
        "country-code3",
        "latitude",
        "postal-code",
        "longitude",
        "state",
        "address-structured",
        "address-components",
        "currency-code",
        "location-type",
        "location-tags",
        "timezone",
        "region-code",
        "postal-address",
        "language-code",
        "geohash",
        "continent-code",
        "building-type",
        "location-profile"
      ]
    },
    "APIError": {
      "title": "APIError",
      "description": "For non-200 responses this contains specific API error details",
      "example": {
        "api-error": 43,
        "api-error-msg": "ACCESS DENIED. USER ID OR API KEY INVALID"
      },
      "type": "object",
      "properties": {
        "api-error": {
          "description": "API error code. If set and > 0 then an API error has occurred your request could not be completed",
          "type": "integer",
          "format": "int32"
        },
        "api-error-msg": {
          "description": "API error message",
          "type": "string"
        }
      },
      "required": [
        "api-error",
        "api-error-msg"
      ]
    },
    "URLComponents": {
      "title": "URLComponents",
      "description": "Structure of url-components",
      "type": "object",
      "properties": {
        "url": {
          "description": "The complete and final URL",
          "type": "string"
        },
        "host": {
          "description": "The host of the URL. Will be either a domain name, sub-domain or IP address",
          "type": "string"
        },
        "protocol": {
          "description": "The protocol of the URL. For a website URL this will be either 'https' or 'http'",
          "type": "string"
        },
        "path": {
          "description": "The path of the URL. This is the part coming after the host and specifies which resource to load",
          "type": "string"
        },
        "port": {
          "description": "The port of the URL. This is usually 443 for HTTPS and 80 for HTTP unless otherwise specified in the URL",
          "type": "integer",
          "format": "int32"
        },
        "query": {
          "description": "The query of the URL. Contains a key/value map of any HTTP GET query parameters present in the URL",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "required": [
        "url",
        "host",
        "protocol",
        "path",
        "port",
        "query"
      ]
    },
    "ExecResult": {
      "title": "ExecResult",
      "description": "Structure of exec-results",
      "type": "object",
      "properties": {
        "statement": {
          "description": "The JavaScript statement that was executed",
          "type": "string"
        },
        "result": {
          "description": "The result of the executed JavaScript statement. Will be empty if the statement returned nothing",
          "type": "string"
        }
      },
      "required": [
        "statement",
        "result"
      ]
    },
    "AddressStructured": {
      "title": "AddressStructured",
      "description": "Structure of address-structured",
      "example": {
        "area": "Wellington Central",
        "country": "New Zealand",
        "number": "",
        "postal-code": "6145",
        "city": "Wellington",
        "street": "Bowen Street",
        "county": "Wellington City",
        "name": "The Beehive",
        "state": "Wellington"
      },
      "type": "object",
      "properties": {
        "name": {
          "description": "The name of the person or organization",
          "type": "string"
        },
        "number": {
          "description": "The house or building number",
          "type": "string"
        },
        "street": {
          "description": "The name of the street/road",
          "type": "string"
        },
        "area": {
          "description": "The name of the local area. Also known as: suburb/neighborhood/locality/subdivision",
          "type": "string"
        },
        "city": {
          "description": "The name of the city/town/village",
          "type": "string"
        },
        "county": {
          "description": "The name of the county. Also known as: district/municipality/province",
          "type": "string"
        },
        "state": {
          "description": "The name of the state/region",
          "type": "string"
        },
        "postal-code": {
          "description": "The postal code",
          "type": "string"
        },
        "country": {
          "description": "The name of the country",
          "type": "string"
        }
      },
      "required": [
        "name",
        "number",
        "street",
        "area",
        "city",
        "county",
        "state",
        "postal-code",
        "country"
      ]
    }
  },
  "security": [
    {
      "user-id": [],
      "api-key": []
    }
  ],
  "tags": [
    {
      "name": "Imaging",
      "description": "APIs for imaging and rendering"
    },
    {
      "name": "Telephony",
      "description": "APIs for live telephony"
    },
    {
      "name": "Data Tools",
      "description": "APIs for processing, cleaning and validating data"
    },
    {
      "name": "Security and Networking",
      "description": "APIs for security and networking tasks"
    },
    {
      "name": "Geolocation",
      "description": "APIs for geolocation tasks"
    },
    {
      "name": "E-commerce",
      "description": "APIs for E-commerce tasks"
    },
    {
      "name": "WWW",
      "description": "APIs for website and HTML processing"
    }
  ]
}