@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Neutrino API
@base https://neutrinoapi.net/
@version 3.7.2
@auth ApiKey user-id in header | ApiKey api-key in header
@endpoints 28
@hint download_for_search
@toc html-render(1), image-watermark(1), qr-code(1), image-resize(1), sms-verify(1), phone-playback(1), hlr-lookup(1), verify-security-code(1), phone-verify(1), email-validate(1), bad-word-filter(1), ua-lookup(1), phone-validate(1), ip-blocklist-download(1), ip-probe(1), host-reputation(1), email-verify(1), domain-lookup(1), ip-blocklist(1), ip-info(1), geocode-reverse(1), geocode-address(1), bin-list-download(1), convert(1), bin-lookup(1), html-clean(1), url-info(1), browser-bot(1)

@group html-render
@endpoint POST /html-render
@desc HTML Render
@required {content: any # The HTML content. This can be either a URL to load from, a file upload (multipart/form-data) or an HTML content string}
@optional {format: any # Which format to output, available options are: PDF, PNG, JPG, page-size: any # Set the document page size, can be one of: A0 - A9, B0 - B10, Comm10E, DLE or Letter, title: any # The document title, margin: any # The document margin (in mm), margin-left: any # The document left margin (in mm), margin-right: any # The document right margin (in mm), margin-top: any # The document top margin (in mm), margin-bottom: any # The document bottom margin (in mm), landscape: any # Set the document to landscape orientation, zoom: any # Set the zoom factor when rendering the page (2.0 for double size, 0.5 for half size), grayscale: any # Render the final document in grayscale, css: any # Inject custom CSS into the HTML. e.g. 'body { background-color: red;}', image-width: any # If rendering to an image format (PNG or JPG) use this image width (in pixels), image-height: any # 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, delay: any # Number of seconds to wait before rendering the page (can be useful for pages with animations etc), page-width: any # Set the PDF page width explicitly (in mm), page-height: any # Set the PDF page height explicitly (in mm), timeout: any # Timeout in seconds. Give up if still trying to load the HTML content after this number of seconds, ignore-certificate-errors: any # Ignore any TLS/SSL certificate errors, header: any # The header HTML to insert into each page. The following dynamic tags are supported: {date}, {title}, {url}, {pageNumber}, {totalPages}, footer: any # The footer HTML to insert into each page. The following dynamic tags are supported: {date}, {title}, {url}, {pageNumber}, {totalPages}, bg-color: any # 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, exec: any # 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:   sleep(seconds); Just wait/sleep for the specified number of seconds.  click('selector'); Click on the first element matching the given selector.  focus('selector'); Focus on the first element matching the given selector.  keys('characters'); Send the specified keyboard characters. Use click() or focus() first to send keys to a specific element.  enter(); Send the Enter key.  tab(); Send the Tab key., user-agent: any # Override the browsers default user-agent string with this one}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group image-watermark
@endpoint POST /image-watermark
@desc Image Watermark
@required {image-url: any # The URL or Base64 encoded Data URL for the source image. You can also upload an image file directly using multipart/form-data, watermark-url: any # The URL or Base64 encoded Data URL for the watermark image. You can also upload an image file directly using multipart/form-data}
@optional {opacity: any # The opacity of the watermark (0 to 100), format: any # The output image format, can be either png or jpg, position: any # The position of the watermark image, possible values are:  center, top-left, top-center, top-right, bottom-left, bottom-center, bottom-right, width: any # If set resize the resulting image to this width (in px), height: any # If set resize the resulting image to this height (in px), resize-mode: any # The resize mode to use, we support 3 main resizing modes:  scale  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 pad  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 crop  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, bg-color: any # 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)}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group qr-code
@endpoint POST /qr-code
@desc QR Code
@required {content: any # The content to encode into the QR code (e.g. a URL or a phone number)}
@optional {width: any # The width of the QR code (in px), height: any # The height of the QR code (in px), fg-color: any # The QR code foreground color, bg-color: any # The QR code background color, code-format: any # The barcode format to output. Accepted formats are: qr, c128}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group image-resize
@endpoint POST /image-resize
@desc Image Resize
@required {image-url: any # The URL or Base64 encoded Data URL for the source image. You can also upload an image file directly using multipart/form-data, width: any # The width to resize to (in px)}
@optional {height: any # 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, format: any # The output image format, can be either png or jpg, resize-mode: any # The resize mode to use, we support 3 main resizing modes:  scale  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 pad  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 crop  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, bg-color: any # 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)}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group sms-verify
@endpoint POST /sms-verify
@desc SMS Verify
@required {number: any # The phone number to send a verification code to}
@optional {code-length: any # The number of digits to use in the security code (must be between 4 and 12), security-code: any # 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, country-code: any # 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), language-code: any # The language to send the verification code in, available languages are:  de - German en - English es - Spanish fr - French it - Italian pt - Portuguese ru - Russian, limit: any # 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, limit-ttl: any # 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), brand-name: any # Set a custom brand or product name in the verification message}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group phone-playback
@endpoint POST /phone-playback
@desc Phone Playback
@required {number: any # The phone number to call. Must be in valid international format, audio-url: any # A URL to a valid audio file. Accepted audio formats are:  MP3 WAV OGG  You can use the following MP3 URL for testing:  https://www.neutrinoapi.com/test-files/test1.mp3}
@optional {limit: any # 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, limit-ttl: any # 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)}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group hlr-lookup
@endpoint GET /hlr-lookup
@desc HLR Lookup
@required {number: any # A phone number}
@optional {country-code: any # 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)}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group verify-security-code
@endpoint GET /verify-security-code
@desc Verify Security Code
@required {security-code: any # The security code to verify}
@optional {limit-by: any # 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}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group phone-verify
@endpoint POST /phone-verify
@desc Phone Verify
@required {number: any # The phone number to send the verification code to}
@optional {code-length: any # The number of digits to use in the security code (between 4 and 12), security-code: any # 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, playback-delay: any # The delay in milliseconds between the playback of each security code, country-code: any # 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), language-code: any # The language to playback the verification code in, available languages are:  de - German en - English es - Spanish fr - French it - Italian pt - Portuguese ru - Russian, limit: any # 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, limit-ttl: any # 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)}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group email-validate
@endpoint GET /email-validate
@desc Email Validate
@required {email: any # An email address}
@optional {fix-typos: any # Automatically attempt to fix typos in the address}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group bad-word-filter
@endpoint POST /bad-word-filter
@desc Bad Word Filter
@required {content: any # The content to scan. This can be either a URL to load from, a file upload (multipart/form-data) or an HTML content string}
@optional {censor-character: any # The character to use to censor out the bad words found, catalog: any # Which catalog of bad words to use, we currently maintain two bad word catalogs:   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 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}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group ua-lookup
@endpoint GET /ua-lookup
@desc UA Lookup
@required {ua: any # 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}
@optional {ua-version: any # For client hints this corresponds to the 'sec-ch-ua-full-version' header, ua-platform: any # For client hints this corresponds to the 'sec-ch-ua-platform' header, ua-platform-version: any # For client hints this corresponds to the 'sec-ch-ua-platform-version' header, ua-mobile: any # For client hints this corresponds to the 'sec-ch-ua-mobile' header, device-model: any # For client hints this corresponds to the 'sec-ch-ua-model' header.  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, device-brand: any # 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, ua-arch: any # For client hints this corresponds to the 'sec-ch-ua-arch' header, ua-bitness: any # For client hints this corresponds to the 'sec-ch-ua-bitness' header, ua-form-factors: any # For client hints this corresponds to the 'sec-ch-ua-form-factors' header}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group phone-validate
@endpoint GET /phone-validate
@desc Phone Validate
@required {number: any # 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}
@optional {country-code: any # 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), ip: any # Pass in a users IP address and we will assume numbers are based in the country of the IP address}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group ip-blocklist-download
@endpoint GET /ip-blocklist-download
@desc IP Blocklist Download
@optional {format: any # The data format. Can be either CSV or TXT, cidr: any # Output IPs using CIDR notation. This option should be preferred but is off by default for backwards compatibility, ip6: any # 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, category: any # The category of IP addresses to include in the download file, possible values are:   all - all IPs available on your current plan (excludes VPN providers for any plans lower than Tier 3) bot - all IPs hosting a malicious bot or part of a botnet. This is a broad category which includes brute-force crackers exploit-bot - all IPs hosting an exploit finding bot or running exploit scanning software hijacked - all IPs that are part of a hijacked netblock or a netblock controlled by a criminal organization malware - all IPs involved in distributing or running malware or spyware proxy - all IPs detected as an anonymous web proxy or anonymous HTTP proxy spam-bot - all IPs hosting a spam bot, comment spamming or any other spamming type software spider - all IPs running a hostile web spider / web crawler tor - all IPs that are Tor nodes or running a Tor related service vpn - all IPs belonging to public VPN providers (only available for Tier 3 or higher accounts), output-encoding: any # Set this option to 'gzip' to have the output file compressed using gzip, checksum: any # 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}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group ip-probe
@endpoint GET /ip-probe
@desc IP Probe
@required {ip: any # An IPv4 or IPv6 address. Accepts standard IP notation and also CIDR notation}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group host-reputation
@endpoint GET /host-reputation
@desc Host Reputation
@required {host: any # An IP address, domain name, FQDN or URL.  If you supply a domain/URL it will be checked against the URI DNSBL lists}
@optional {list-rating: any # Only check lists with this rating or better, zones: any # Only check these DNSBL zones/hosts. Multiple zones can be supplied as comma-separated values}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group email-verify
@endpoint GET /email-verify
@desc Email Verify
@required {email: any # An email address}
@optional {fix-typos: any # Automatically attempt to fix typos in the address}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group domain-lookup
@endpoint GET /domain-lookup
@desc Domain Lookup
@required {host: any # A domain name, hostname, FQDN, URL, HTML link or email address to lookup}
@optional {live: any # For domains that we have never seen before then perform various live checks and realtime reconnaissance.  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}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group ip-blocklist
@endpoint GET /ip-blocklist
@desc IP Blocklist
@required {ip: any # 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}
@optional {vpn-lookup: any # Include public VPN provider IP addresses.  NOTE: For more advanced VPN detection including the ability to identify private and stealth VPNs use the IP Probe API}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group ip-info
@endpoint GET /ip-info
@desc IP Info
@required {ip: any # An IPv4 or IPv6 address. Accepts standard IP notation and also CIDR notation}
@optional {reverse-lookup: any # Do a reverse DNS (PTR) lookup. This option can add extra delay to the request so only use it if you need it}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group geocode-reverse
@endpoint GET /geocode-reverse
@desc Geocode Reverse
@optional {latitude: any # The location latitude in decimal degrees format, longitude: any # The location longitude in decimal degrees format, language-code: any # The language to display results in, available languages are:  ar, de, en, es, fr, it, ja, nl, pt, ru, zh, zoom: any # The zoom level to respond with:   address - the most precise address available street - the street level city - the city level state - the state level country - the country level, geohash: any # Reverse lookup by a geohash instead of using latitude and longitude}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group geocode-address
@endpoint GET /geocode-address
@desc Geocode Address
@optional {address: any # The full address, partial address or name of a place to try and locate. Comma separated address components are preferred., house-number: any # The house/building number to locate (for structured address searches), street: any # The street/road name to locate (for structured address searches), city: any # The city/town name to locate (for structured address searches), county: any # The county/region name to locate (for structured address searches), state: any # The state name to locate (for structured address searches), postal-code: any # The postal code to locate (for structured address searches), country-code: any # Prefer results from this country code (the default is no country bias), language-code: any # The language to display results in, available languages are:  ar, de, en, es, fr, it, ja, nl, pt, ru, zh, fuzzy-search: any # 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, country-codes: any # 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, auto-complete: any # 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, limit: any # Limit search results to this many locations (between 1 and a maximum of 32)}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group bin-list-download
@endpoint GET /bin-list-download
@desc BIN List Download
@optional {include-iso3: any # 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, include-8digit: any # 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), include-all: any # Include all BINs and all available fields in the CSV file (overrides any values set for 'include-iso3' or 'include-8digit'), output-encoding: any # Set this option to 'gzip' to have the output file compressed using gzip}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group convert
@endpoint GET /convert
@desc Convert
@required {from-value: any # The value to convert from (e.g. 10.95), from-type: any # The type of the value to convert from (e.g. USD), to-type: any # The type to convert to (e.g. EUR)}
@optional {historical-date: any # 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'}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group bin-lookup
@endpoint GET /bin-lookup
@desc BIN Lookup
@required {bin-number: any # 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}
@optional {customer-ip: any # Pass in the customers IP address and we will return some extra information about them}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group html-clean
@endpoint POST /html-clean
@desc HTML Clean
@required {content: any # The HTML content. This can be either a URL to load from, a file upload (multipart/form-data) or an HTML content string, output-type: any # The level of sanitization, possible values are:  plain-text: reduce the content to plain text only (no HTML tags at all)  simple-text: allow only very basic text formatting tags like b, em, i, strong, u  basic-html: allow advanced text formatting and hyper links  basic-html-with-images: same as basic html but also allows image tags  advanced-html: same as basic html with images but also allows many more common HTML tags like table, ul, dl, pre}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group url-info
@endpoint GET /url-info
@desc URL Info
@required {url: any # The URL to probe}
@optional {fetch-content: any # 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), ignore-certificate-errors: any # Ignore any TLS/SSL certificate errors and load the URL anyway, timeout: any # Timeout in seconds. Give up if still trying to load the URL after this number of seconds, retry: any # If the request fails for any reason try again this many times}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@group browser-bot
@endpoint POST /browser-bot
@desc Browser Bot
@required {url: any # The URL to load}
@optional {timeout: any # Timeout in seconds. Give up if still trying to load the page after this number of seconds, delay: any # Delay in seconds to wait before capturing any page data, executing selectors or JavaScript, selector: any # Extract content from the page DOM using this selector. Commonly known as a CSS selector, you can find a good reference here, exec: any # 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:   sleep(seconds); Just wait/sleep for the specified number of seconds.  click('selector'); Click on the first element matching the given selector.  focus('selector'); Focus on the first element matching the given selector.  keys('characters'); Send the specified keyboard characters. Use click() or focus() first to send keys to a specific element.  enter(); Send the Enter key.  tab(); Send the Tab key., user-agent: any # Override the browsers default user-agent string with this one, ignore-certificate-errors: any # Ignore any TLS/SSL certificate errors and load the page anyway}
@returns(200)
@errors {400: Your API request has been rejected. Check error code for details, 403: You have failed to authenticate, 500: We messed up, sorry! Your request has caused a fatal exception}

@endgroup

@end
