API Docs & Playground
Browse every endpoint and test live — paste your API key and run directly in the browser. Each test deducts 1 credit.
No results found
Try searching for a category name, endpoint path, or keyword.
🔐 Authentication
Every API call must include your key either as an X-API-Key header
(recommended) or as a ?key= query param. Each call deducts 1 credit from your monthly quota.
# Option 1 — Header (recommended) curl -X GET \ "https://viper-api.name.ng/api/v1/utility/uuid" \ -H "X-API-Key: viper_your_key_here" # Option 2 — Query param curl "https://viper-api.name.ng/api/v1/utility/uuid?key=viper_your_key" # Response headers tell you your remaining quota # X-Quota-Remaining: 147
🔧 Utility
Generate a QR code image (returns base64) from any text or URL.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text or URL to encode |
POST /api/v1/utility/qr X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" }
Encode a string to Base64.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | String to encode |
POST /api/v1/utility/base64/encode X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" }
Decode a Base64 string back to UTF-8.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Base64 string to decode |
POST /api/v1/utility/base64/decode X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" }
Generate 1-10 cryptographically secure UUID v4 values.
| Parameter | Type | Description |
|---|---|---|
| countoptional | string | Number of UUIDs (default: 1, max: 10) |
GET /api/v1/utility/uuid X-API-Key: viper_your_key_here # Query params: # count=(optional)
Generate a strong random password with strength score.
| Parameter | Type | Description |
|---|---|---|
| lengthoptional | string | Length (default: 16, max: 128) |
| symbolsoptional | string | Include symbols true/false (default: true) |
POST /api/v1/utility/password X-API-Key: viper_your_key_here Content-Type: application/json { "length": "" , "symbols": "" }
Convert text to a URL-friendly slug.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text to slugify |
POST /api/v1/utility/slugify X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" }
Count words, chars, sentences, paragraphs and reading time.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text to analyze |
POST /api/v1/utility/text/analyze X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" }
Geo-locate any IP address (country, city, ISP, timezone).
| Parameter | Type | Description |
|---|---|---|
| ipoptional | string | IP address (optional — uses caller IP if omitted) |
GET /api/v1/utility/ip X-API-Key: viper_your_key_here # Query params: # ip=(optional)
⚡ Text & String
Convert text between upper, lower, title, camel, snake, kebab, pascal, constant, sentence, alternating.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Input text |
| torequired | string | upper|lower|title|sentence|camel|pascal|snake|kebab|constant|alternating |
POST /api/v1/text/case X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" , "to": "" }
Trim text to a max length with custom ellipsis.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Input text |
| lengthoptional | string | Max characters (default: 100) |
| ellipsisoptional | string | Suffix string (default: ...) |
POST /api/v1/text/truncate X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" , "length": "" , "ellipsis": "" }
Reverse chars, words, or lines.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Input text |
| modeoptional | string | chars | words | lines (default: chars) |
POST /api/v1/text/reverse X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" , "mode": "" }
Generate placeholder lorem ipsum text.
| Parameter | Type | Description |
|---|---|---|
| countoptional | string | Number of items (default: 1) |
| typeoptional | string | paragraphs | sentences | words (default: paragraphs) |
GET /api/v1/text/lorem X-API-Key: viper_your_key_here # Query params: # count=(optional) # type=(optional)
Check if text is a palindrome.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text to check |
POST /api/v1/text/palindrome X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" }
Count how many times a substring appears.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Source text |
| findrequired | string | Substring to find |
| case_sensitiveoptional | string | true/false (default: false) |
POST /api/v1/text/count X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" , "find": "" , "case_sensitive": "" }
Remove duplicate lines from text.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Multi-line text |
| case_sensitiveoptional | string | true/false (default: true) |
POST /api/v1/text/dedupe X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" , "case_sensitive": "" }
Extract all email addresses from a block of text.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text to scan |
POST /api/v1/text/extract/emails X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" }
Extract all URLs from a block of text.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text to scan |
POST /api/v1/text/extract/urls X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" }
Extract all numbers with stats (sum, avg, min, max).
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text to scan |
POST /api/v1/text/extract/numbers X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" }
Hash text with md5, sha1, sha256, or sha512.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text to hash |
| algorithmoptional | string | md5|sha1|sha256|sha512 (default: sha256) |
POST /api/v1/text/hash X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" , "algorithm": "" }
Compare two texts and get added/removed/unchanged lines.
| Parameter | Type | Description |
|---|---|---|
| text1required | string | Original text |
| text2required | string | New text |
POST /api/v1/text/diff X-API-Key: viper_your_key_here Content-Type: application/json { "text1": "" , "text2": "" }
Translate text between 100+ languages. Free, no key needed. Powered by MyMemory.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text to translate (max 500 chars) |
| torequired | string | Target language code e.g. es, fr, yo, ha, ig, ar |
| fromoptional | string | Source language code (default: auto) |
POST /api/v1/text/translate X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" , "to": "" , "from": "" }
⚡ Numbers & Math
Generate 1-100 random integers within a range.
| Parameter | Type | Description |
|---|---|---|
| minoptional | string | Min value (default: 1) |
| maxoptional | string | Max value (default: 100) |
| countoptional | string | How many (default: 1, max: 100) |
GET /api/v1/number/random X-API-Key: viper_your_key_here # Query params: # min=(optional) # max=(optional) # count=(optional)
Convert any integer up to billions to written English words.
| Parameter | Type | Description |
|---|---|---|
| nrequired | string | Integer number |
GET /api/v1/number/words X-API-Key: viper_your_key_here # Query params: # n=
Convert integer (1-3999) to Roman numerals.
| Parameter | Type | Description |
|---|---|---|
| nrequired | string | Integer between 1 and 3999 |
GET /api/v1/number/roman X-API-Key: viper_your_key_here # Query params: # n=
Get the first N numbers of the Fibonacci sequence.
| Parameter | Type | Description |
|---|---|---|
| noptional | string | How many terms (default: 10, max: 100) |
GET /api/v1/number/fibonacci X-API-Key: viper_your_key_here # Query params: # n=(optional)
Check if a number is prime.
| Parameter | Type | Description |
|---|---|---|
| nrequired | string | Integer to check |
GET /api/v1/number/prime X-API-Key: viper_your_key_here # Query params: # n=
Get mean, median, mode, std dev, variance for a set of numbers.
| Parameter | Type | Description |
|---|---|---|
| numbersrequired | string | JSON array of numbers e.g. [1,2,3,4,5] |
POST /api/v1/number/stats X-API-Key: viper_your_key_here Content-Type: application/json { "numbers": "" }
Convert between length, weight, speed, data, time, area units.
| Parameter | Type | Description |
|---|---|---|
| valuerequired | string | Numeric value |
| fromrequired | string | Unit e.g. km, lb, mb |
| torequired | string | Target unit |
GET /api/v1/number/convert X-API-Key: viper_your_key_here # Query params: # value=# from= # to=
Calculate Body Mass Index and category.
| Parameter | Type | Description |
|---|---|---|
| weightrequired | string | Weight in kg |
| heightrequired | string | Height in cm |
GET /api/v1/number/bmi X-API-Key: viper_your_key_here # Query params: # weight=# height=
⚡ Validation
Validate email format and detect disposable addresses.
| Parameter | Type | Description |
|---|---|---|
| emailrequired | string | Email address to validate |
POST /api/v1/validate/email X-API-Key: viper_your_key_here Content-Type: application/json { "email": "" }
Validate URL structure and parse its components.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | URL to validate |
POST /api/v1/validate/url X-API-Key: viper_your_key_here Content-Type: application/json { "url": "" }
Validate phone number format, detect Nigerian numbers.
| Parameter | Type | Description |
|---|---|---|
| phonerequired | string | Phone number (any format) |
POST /api/v1/validate/phone X-API-Key: viper_your_key_here Content-Type: application/json { "phone": "" }
Validate credit card number using Luhn algorithm, detect card type.
| Parameter | Type | Description |
|---|---|---|
| numberrequired | string | Card number (spaces/dashes stripped) |
POST /api/v1/validate/credit-card X-API-Key: viper_your_key_here Content-Type: application/json { "number": "" }
Score a password and get improvement suggestions.
| Parameter | Type | Description |
|---|---|---|
| passwordrequired | string | Password to analyse |
POST /api/v1/validate/password-strength X-API-Key: viper_your_key_here Content-Type: application/json { "password": "" }
Validate hex or RGB color, convert to hex/RGB/HSL.
| Parameter | Type | Description |
|---|---|---|
| colorrequired | string | Color string e.g. #ff0000 or rgb(255,0,0) |
POST /api/v1/validate/color X-API-Key: viper_your_key_here Content-Type: application/json { "color": "" }
Validate Nigerian NIN format (11-digit numeric).
| Parameter | Type | Description |
|---|---|---|
| ninrequired | string | National Identification Number |
POST /api/v1/validate/nin X-API-Key: viper_your_key_here Content-Type: application/json { "nin": "" }
Validate Nigerian BVN format (11-digit numeric).
| Parameter | Type | Description |
|---|---|---|
| bvnrequired | string | Bank Verification Number |
POST /api/v1/validate/bvn X-API-Key: viper_your_key_here Content-Type: application/json { "bvn": "" }
Check if an email domain is a known disposable/throwaway provider. No key needed.
| Parameter | Type | Description |
|---|---|---|
| emailrequired | string | Email address to check |
POST /api/v1/validate/disposable X-API-Key: viper_your_key_here Content-Type: application/json { "email": "" }
Detect carrier, line type and country from a phone number. Nigerian networks fully supported (MTN/Airtel/Glo/9mobile). Uses libphonenumber-js locally — no API key.
| Parameter | Type | Description |
|---|---|---|
| phonerequired | string | Phone number in any format |
| countryoptional | string | Default country hint e.g. NG, US, GB (default: NG) |
POST /api/v1/validate/phone-lookup X-API-Key: viper_your_key_here Content-Type: application/json { "phone": "" , "country": "" }
⚡ Generate
Generate a random colour palette with hex, rgb, hsl values.
| Parameter | Type | Description |
|---|---|---|
| countoptional | string | Number of colors (default: 5, max: 20) |
GET /api/v1/generate/color X-API-Key: viper_your_key_here # Query params: # count=(optional)
Generate random full names (first + last).
| Parameter | Type | Description |
|---|---|---|
| countoptional | string | Number of names (default: 1, max: 50) |
| genderoptional | string | male | female | any (default: any) |
GET /api/v1/generate/name X-API-Key: viper_your_key_here # Query params: # count=(optional) # gender=(optional)
Generate a barcode SVG for EAN-13, Code128, or UPC-A formats.
| Parameter | Type | Description |
|---|---|---|
| valuerequired | string | Value to encode |
| formatoptional | string | ean13|code128|upca (default: code128) |
POST /api/v1/generate/barcode X-API-Key: viper_your_key_here Content-Type: application/json { "value": "" , "format": "" }
Generate realistic fake user profiles for testing.
| Parameter | Type | Description |
|---|---|---|
| countoptional | string | Number of users (default: 5, max: 50) |
POST /api/v1/generate/users X-API-Key: viper_your_key_here Content-Type: application/json { "count": "" }
Generate a crisp SVG avatar from initials. Returns image/svg+xml — use directly as an <img> src URL. No external API, pure local.
| Parameter | Type | Description |
|---|---|---|
| nameoptional | string | Full name e.g. "John Doe" (default: Viper API) |
| sizeoptional | string | Width/height in px (default: 80, max: 400) |
| bgoptional | string | Background hex color without # (default: 7c3aed) |
| coloroptional | string | Text hex color without # (default: ffffff) |
| roundedoptional | string | true = circle, false = rounded square (default: true) |
GET /api/v1/generate/avatar X-API-Key: viper_your_key_here # Query params: # name=(optional) # size=(optional) # bg=(optional) # color=(optional) # rounded=(optional)
Generate a professional invoice PDF from structured JSON. Returns base64-encoded PDF. Requires pdfkit: npm install pdfkit.
| Parameter | Type | Description |
|---|---|---|
| invoice_numberoptional | string | Invoice number (default: INV-001) |
| dateoptional | string | Issue date YYYY-MM-DD (default: today) |
| due_dateoptional | string | Due date YYYY-MM-DD |
| fromoptional | string | Object: { name, email, address } |
| tooptional | string | Object: { name, email, address } |
| itemsrequired | string | Array of { description, qty, price } |
| currencyoptional | string | Currency code (default: USD) |
| tax_percentoptional | string | Tax % to add (default: 0) |
| notesoptional | string | Optional footer note |
POST /api/v1/generate/invoice X-API-Key: viper_your_key_here Content-Type: application/json { "invoice_number": "" , "date": "" , "due_date": "" , "from": "" , "to": "" , "items": "" , "currency": "" , "tax_percent": "" , "notes": "" }
⚡ Date & Time
Get the current UTC time in multiple formats (ISO, unix, readable).
| Parameter | Type | Description |
|---|---|---|
| tzoptional | string | IANA timezone e.g. Africa/Lagos (default: UTC) |
GET /api/v1/datetime/now X-API-Key: viper_your_key_here # Query params: # tz=(optional)
Convert a datetime from one timezone to another.
| Parameter | Type | Description |
|---|---|---|
| datetimerequired | string | ISO datetime string |
| fromrequired | string | Source IANA timezone |
| torequired | string | Target IANA timezone |
GET /api/v1/datetime/convert X-API-Key: viper_your_key_here # Query params: # datetime=# from= # to=
Get the difference between two dates in multiple units.
| Parameter | Type | Description |
|---|---|---|
| fromrequired | string | Start date YYYY-MM-DD |
| tooptional | string | End date YYYY-MM-DD (default: today) |
GET /api/v1/datetime/diff X-API-Key: viper_your_key_here # Query params: # from=# to= (optional)
Add or subtract days/months/years from a date.
| Parameter | Type | Description |
|---|---|---|
| daterequired | string | Base date YYYY-MM-DD |
| amountrequired | string | Amount (negative to subtract) |
| unitrequired | string | days|weeks|months|years |
GET /api/v1/datetime/add X-API-Key: viper_your_key_here # Query params: # date=# amount= # unit=
Format a date in any strftime-style pattern or named format.
| Parameter | Type | Description |
|---|---|---|
| daterequired | string | Date string |
| formatoptional | string | Output format string (default: ISO) |
| timezoneoptional | string | IANA timezone |
GET /api/v1/datetime/format X-API-Key: viper_your_key_here # Query params: # date=# format= (optional) # timezone=(optional)
Check if a date is a business day (Mon-Fri).
| Parameter | Type | Description |
|---|---|---|
| dateoptional | string | Date YYYY-MM-DD (default: today) |
GET /api/v1/datetime/businessday X-API-Key: viper_your_key_here # Query params: # date=(optional)
Get full timezone info — local time, UTC offset, DST status — for any IANA timezone or city name. Powered by WorldTimeAPI (free, no key).
| Parameter | Type | Description |
|---|---|---|
| tzoptional | string | IANA timezone e.g. Africa/Lagos, America/New_York |
| cityoptional | string | City name e.g. Lagos, London, Tokyo (alternative to tz) |
GET /api/v1/datetime/timezone X-API-Key: viper_your_key_here # Query params: # tz=(optional) # city=(optional)
⚡ Finance
Live FX rates for 150+ currencies. Needs EXCHANGERATE_API_KEY.
| Parameter | Type | Description |
|---|---|---|
| baseoptional | string | Base currency (default: USD) |
GET /api/v1/finance/rates X-API-Key: viper_your_key_here # Query params: # base=(optional)
Convert an amount between any two currencies.
| Parameter | Type | Description |
|---|---|---|
| fromrequired | string | Source currency e.g. USD |
| torequired | string | Target currency e.g. NGN |
| amountoptional | string | Amount (default: 1) |
GET /api/v1/finance/convert X-API-Key: viper_your_key_here # Query params: # from=# to= # amount= (optional)
List all supported currency codes, names and symbols.
No parameters required.
GET /api/v1/finance/symbols
X-API-Key: viper_your_key_here
# No body or params needed — just the API key
⚡ Network & Web
Resolve DNS records (A, AAAA, MX, TXT, NS, CNAME) for a domain.
| Parameter | Type | Description |
|---|---|---|
| domainrequired | string | Domain name |
| typeoptional | string | Record type: A|AAAA|MX|TXT|NS|CNAME (default: A) |
GET /api/v1/network/dns X-API-Key: viper_your_key_here # Query params: # domain=# type= (optional)
Inspect a domain SSL/TLS certificate — expiry, issuer, SANs.
| Parameter | Type | Description |
|---|---|---|
| domainrequired | string | Domain name (no https://) |
GET /api/v1/network/ssl X-API-Key: viper_your_key_here # Query params: # domain=
Fetch the response headers returned by any URL.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | Full URL |
GET /api/v1/network/headers X-API-Key: viper_your_key_here # Query params: # url=
Check if a host is reachable and measure response time.
| Parameter | Type | Description |
|---|---|---|
| hostrequired | string | Hostname or IP address |
GET /api/v1/network/ping X-API-Key: viper_your_key_here # Query params: # host=
Look up when a domain was first registered and calculate its age. Parses WHOIS data — no API key needed.
| Parameter | Type | Description |
|---|---|---|
| domainrequired | string | Domain name e.g. google.com |
GET /api/v1/network/domain-age X-API-Key: viper_your_key_here # Query params: # domain=
⚡ Host & IP
Get country, region, city, ISP, ASN and coordinates for any IP.
| Parameter | Type | Description |
|---|---|---|
| ipoptional | string | IPv4/IPv6 address (defaults to caller IP) |
GET /api/v1/host/ip X-API-Key: viper_your_key_here # Query params: # ip=(optional)
Resolve an IP to its hostname (PTR record).
| Parameter | Type | Description |
|---|---|---|
| iprequired | string | IPv4 or IPv6 address |
GET /api/v1/host/lookup X-API-Key: viper_your_key_here # Query params: # ip=
Fetch raw WHOIS data for a domain or IP.
| Parameter | Type | Description |
|---|---|---|
| queryrequired | string | Domain name or IP address |
GET /api/v1/host/whois X-API-Key: viper_your_key_here # Query params: # query=
Scan common ports on a host and report open/closed status.
| Parameter | Type | Description |
|---|---|---|
| hostrequired | string | Hostname or IP |
GET /api/v1/host/ports X-API-Key: viper_your_key_here # Query params: # host=
Detect CMS, frameworks, CDN and server software from a site headers.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | Full URL including https:// |
GET /api/v1/host/tech X-API-Key: viper_your_key_here # Query params: # url=
Check if an IP is a known proxy, VPN, datacenter or mobile network. Returns a risk score and flags. Powered by ip-api.com (free, no key).
| Parameter | Type | Description |
|---|---|---|
| ipoptional | string | IPv4 address to check (defaults to caller IP) |
GET /api/v1/host/reputation X-API-Key: viper_your_key_here # Query params: # ip=(optional)
⚡ Detect & Analyse
Detect the written language of any text.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text to analyse (min 10 chars for accuracy) |
POST /api/v1/detect/language X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" }
Analyse the emotional tone of text (positive/negative/neutral + score).
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text to analyse |
POST /api/v1/detect/sentiment X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" }
Heuristic spam score — checks for caps abuse, link density, spam phrases.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text or email body to scan |
POST /api/v1/detect/spam X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" }
Flesch-Kincaid readability grade and reading ease score.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text to analyse (min 100 chars) |
POST /api/v1/detect/readability X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" }
⚡ Image Tools
Generate an AI image from a text prompt via Pollinations.ai (free, no key). Returns a direct image URL.
| Parameter | Type | Description |
|---|---|---|
| promptrequired | string | Image description |
| widthoptional | string | Width in px (default: 1024) |
| heightoptional | string | Height in px (default: 1024) |
| modeloptional | string | Model name (default: flux) |
GET /api/v1/image/generate X-API-Key: viper_your_key_here # Query params: # prompt=# width= (optional) # height=(optional) # model=(optional)
Capture a screenshot of any URL via Microlink (free tier).
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | URL to screenshot |
| fullpageoptional | string | true for full-page capture |
| mobileoptional | string | true for mobile viewport |
GET /api/v1/image/screenshot X-API-Key: viper_your_key_here # Query params: # url=# fullpage= (optional) # mobile=(optional)
Resize an image by URL and convert format via images.weserv.nl (free CDN).
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | Public image URL |
| widthoptional | string | Target width px |
| heightoptional | string | Target height px |
| fitoptional | string | cover|contain|fill|inside|outside (default: cover) |
| outputoptional | string | jpg|png|webp|gif (default: jpg) |
POST /api/v1/image/resize X-API-Key: viper_your_key_here Content-Type: application/json { "url": "" , "width": "" , "height": "" , "fit": "" , "output": "" }
Extract text from any image (URL or base64). Powered by OCR.space free API (25,000 req/month). Add OCR_API_KEY to .env for higher limits.
| Parameter | Type | Description |
|---|---|---|
| urloptional | string | Public image URL |
| base64optional | string | Base64-encoded image (raw or data URI) |
| languageoptional | string | Language code e.g. eng, fra, deu (default: eng) |
| scaleoptional | string | Upscale small images before OCR (default: true) |
POST /api/v1/image/ocr X-API-Key: viper_your_key_here Content-Type: application/json { "url": "" , "base64": "" , "language": "" , "scale": "" }
⚡ Data Conversion
Convert a JSON array to CSV format.
| Parameter | Type | Description |
|---|---|---|
| datarequired | string | JSON array of objects |
POST /api/v1/data/json-to-csv X-API-Key: viper_your_key_here Content-Type: application/json { "data": "" }
Parse CSV text into a JSON array.
| Parameter | Type | Description |
|---|---|---|
| csvrequired | string | CSV string (first row = headers) |
| delimiteroptional | string | Column delimiter (default: ,) |
POST /api/v1/data/csv-to-json X-API-Key: viper_your_key_here Content-Type: application/json { "csv": "" , "delimiter": "" }
Convert a JSON object to an XML string.
| Parameter | Type | Description |
|---|---|---|
| datarequired | string | JSON object |
| rootoptional | string | Root element name (default: root) |
POST /api/v1/data/json-to-xml X-API-Key: viper_your_key_here Content-Type: application/json { "data": "" , "root": "" }
Parse an XML string into a JSON object.
| Parameter | Type | Description |
|---|---|---|
| xmlrequired | string | XML string |
POST /api/v1/data/xml-to-json X-API-Key: viper_your_key_here Content-Type: application/json { "xml": "" }
Convert JSON to YAML format.
| Parameter | Type | Description |
|---|---|---|
| datarequired | string | JSON object or array |
POST /api/v1/data/json-to-yaml X-API-Key: viper_your_key_here Content-Type: application/json { "data": "" }
Parse YAML into a JSON object.
| Parameter | Type | Description |
|---|---|---|
| yamlrequired | string | YAML string |
POST /api/v1/data/yaml-to-json X-API-Key: viper_your_key_here Content-Type: application/json { "yaml": "" }
⚡ Weather
Live weather for any city or coordinates. Needs OPENWEATHER_API_KEY.
| Parameter | Type | Description |
|---|---|---|
| cityoptional | string | City name e.g. Lagos |
| latoptional | string | Latitude |
| lonoptional | string | Longitude |
| unitsoptional | string | metric|imperial (default: metric) |
GET /api/v1/weather/current X-API-Key: viper_your_key_here # Query params: # city=(optional) # lat=(optional) # lon=(optional) # units=(optional)
3-hour interval forecast for 5 days. Needs OPENWEATHER_API_KEY.
| Parameter | Type | Description |
|---|---|---|
| cityoptional | string | City name |
| latoptional | string | Latitude |
| lonoptional | string | Longitude |
| unitsoptional | string | metric|imperial (default: metric) |
GET /api/v1/weather/forecast X-API-Key: viper_your_key_here # Query params: # city=(optional) # lat=(optional) # lon=(optional) # units=(optional)
⚡ Notify
Send a transactional email via your configured SMTP server.
| Parameter | Type | Description |
|---|---|---|
| torequired | string | Recipient email address |
| subjectrequired | string | Email subject |
| bodyrequired | string | Plain text or HTML body |
| fromoptional | string | Sender name (default: Viper API) |
POST /api/v1/notify/email X-API-Key: viper_your_key_here Content-Type: application/json { "to": "" , "subject": "" , "body": "" , "from": "" }
POST a JSON payload to any external URL.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | Webhook endpoint URL |
| payloadrequired | string | JSON object to send |
| headersoptional | string | Optional custom request headers |
POST /api/v1/notify/webhook X-API-Key: viper_your_key_here Content-Type: application/json { "url": "" , "payload": "" , "headers": "" }
⚡ Spotify
Search Spotify for tracks, albums or artists. Needs SPOTIFY_CLIENT_ID + SPOTIFY_CLIENT_SECRET.
| Parameter | Type | Description |
|---|---|---|
| qrequired | string | Search query |
| typeoptional | string | track|album|artist (default: track) |
| limitoptional | string | Results (default: 10, max: 50) |
GET /api/v1/spotify/search X-API-Key: viper_your_key_here # Query params: # q=# type= (optional) # limit=(optional)
Get full details for a Spotify track by ID.
| Parameter | Type | Description |
|---|---|---|
| idrequired | string | Spotify track ID |
GET /api/v1/spotify/track X-API-Key: viper_your_key_here # Query params: # id=
Get full details for a Spotify album by ID.
| Parameter | Type | Description |
|---|---|---|
| idrequired | string | Spotify album ID |
GET /api/v1/spotify/album X-API-Key: viper_your_key_here # Query params: # id=
Get full details for a Spotify artist by ID.
| Parameter | Type | Description |
|---|---|---|
| idrequired | string | Spotify artist ID |
GET /api/v1/spotify/artist X-API-Key: viper_your_key_here # Query params: # id=
⚡ Downloads
Get metadata (title, formats, duration) for a video URL without downloading.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | Video URL (YouTube, TikTok, Instagram, 50+ platforms) |
POST /api/v1/download/info X-API-Key: viper_your_key_here Content-Type: application/json { "url": "" }
Download a video and return a direct link.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | Video URL |
| qualityoptional | string | best|worst|720p|480p|360p (default: best) |
POST /api/v1/download/video X-API-Key: viper_your_key_here Content-Type: application/json { "url": "" , "quality": "" }
Extract audio (MP3) from any video URL.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | Video URL |
POST /api/v1/download/audio X-API-Key: viper_your_key_here Content-Type: application/json { "url": "" }
Extract the thumbnail/cover image from a video URL.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | Video URL |
POST /api/v1/download/thumbnail X-API-Key: viper_your_key_here Content-Type: application/json { "url": "" }
Get the track listing and metadata for a playlist.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | Playlist URL |
POST /api/v1/download/playlist X-API-Key: viper_your_key_here Content-Type: application/json { "url": "" }
⚡ Meta
Extract Open Graph / Twitter card metadata from any URL.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | URL to scrape |
GET /api/v1/meta/og X-API-Key: viper_your_key_here # Query params: # url=
Fetch and parse a sitemap.xml, returning all URLs.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | Domain or full sitemap URL |
GET /api/v1/meta/sitemap X-API-Key: viper_your_key_here # Query params: # url=
Returns live API status, version, total endpoints and categories.
No parameters required.
GET /api/v1/meta/status
X-API-Key: viper_your_key_here
# No body or params needed — just the API key
⚡ Crypto & Blockchain
Live price for any cryptocurrency in USD or other fiat.
| Parameter | Type | Description |
|---|---|---|
| coinrequired | string | Coin ID e.g. bitcoin, ethereum, solana |
| currencyoptional | string | Fiat currency (default: usd) |
GET /api/v1/crypto/price X-API-Key: viper_your_key_here # Query params: # coin=# currency= (optional)
Top N cryptocurrencies by market cap.
| Parameter | Type | Description |
|---|---|---|
| limitoptional | string | Number of coins (default: 10, max: 100) |
| currencyoptional | string | vs currency (default: usd) |
GET /api/v1/crypto/top X-API-Key: viper_your_key_here # Query params: # limit=(optional) # currency=(optional)
Historical daily closing prices for a coin.
| Parameter | Type | Description |
|---|---|---|
| coinrequired | string | Coin ID e.g. bitcoin |
| daysoptional | string | Days of history (default: 7, max: 365) |
GET /api/v1/crypto/history X-API-Key: viper_your_key_here # Query params: # coin=# days= (optional)
Convert between crypto and fiat amounts at live rates.
| Parameter | Type | Description |
|---|---|---|
| fromrequired | string | Coin ID or fiat code |
| torequired | string | Target coin ID or fiat code |
| amountoptional | string | Amount to convert (default: 1) |
GET /api/v1/crypto/convert X-API-Key: viper_your_key_here # Query params: # from=# to= # amount= (optional)
⚡ URL Tools
Shorten any URL using TinyURL (free, no key needed).
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | Full URL to shorten |
POST /api/v1/url/shorten X-API-Key: viper_your_key_here Content-Type: application/json { "url": "" }
Expand a shortened URL to its final destination.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | Short URL to expand |
GET /api/v1/url/expand X-API-Key: viper_your_key_here # Query params: # url=
Break a URL into all its components — protocol, host, path, params, hash.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | URL to parse |
POST /api/v1/url/parse X-API-Key: viper_your_key_here Content-Type: application/json { "url": "" }
Heuristic safety check — detects phishing patterns, suspicious domains.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | URL to check |
GET /api/v1/url/safe X-API-Key: viper_your_key_here # Query params: # url=
⚡ News
Latest top headlines by category and country. Needs GNEWS_API_KEY.
| Parameter | Type | Description |
|---|---|---|
| categoryoptional | string | general|world|nation|business|technology|entertainment|sports|science|health (default: general) |
| countryoptional | string | Country code e.g. ng, us, gb (default: ng) |
| langoptional | string | Language code e.g. en (default: en) |
| limitoptional | string | Results (default: 10, max: 10 on free tier) |
GET /api/v1/news/top X-API-Key: viper_your_key_here # Query params: # category=(optional) # country=(optional) # lang=(optional) # limit=(optional)
Search news articles by keyword. Needs GNEWS_API_KEY.
| Parameter | Type | Description |
|---|---|---|
| qrequired | string | Search query |
| langoptional | string | Language code (default: en) |
| limitoptional | string | Results (default: 10) |
GET /api/v1/news/search X-API-Key: viper_your_key_here # Query params: # q=# lang= (optional) # limit=(optional)
List all supported categories, countries and languages.
No parameters required.
GET /api/v1/news/sources
X-API-Key: viper_your_key_here
# No body or params needed — just the API key
⚡ Temp Email
Get a fresh temporary email address. No sign-up needed.
| Parameter | Type | Description |
|---|---|---|
| domainoptional | string | Preferred domain e.g. 1secmail.com |
GET /api/v1/tempemail/generate X-API-Key: viper_your_key_here # Query params: # domain=(optional)
Check inbox for a temp email address.
| Parameter | Type | Description |
|---|---|---|
| emailrequired | string | The temp email address |
GET /api/v1/tempemail/inbox X-API-Key: viper_your_key_here # Query params: # email=
Read the full content of one email message.
| Parameter | Type | Description |
|---|---|---|
| emailrequired | string | The temp email address |
| idrequired | string | Message ID from inbox |
GET /api/v1/tempemail/message X-API-Key: viper_your_key_here # Query params: # email=# id=
List all available @domains for temp email generation.
No parameters required.
GET /api/v1/tempemail/domains
X-API-Key: viper_your_key_here
# No body or params needed — just the API key
⚡ Colour Tools
Convert any color between HEX, RGB, HSL and CMYK formats.
| Parameter | Type | Description |
|---|---|---|
| valuerequired | string | Color value e.g. %23ff5733 (URL-encode the #) |
| fromoptional | string | hex|rgb|hsl (auto-detected if omitted) |
GET /api/v1/color/convert X-API-Key: viper_your_key_here # Query params: # value=# from= (optional)
Get the nearest CSS color name for any hex code.
| Parameter | Type | Description |
|---|---|---|
| hexrequired | string | Hex color e.g. ff5733 (without #) |
GET /api/v1/color/name X-API-Key: viper_your_key_here # Query params: # hex=
WCAG contrast ratio between foreground and background colors.
| Parameter | Type | Description |
|---|---|---|
| fgrequired | string | Foreground hex (without #) |
| bgrequired | string | Background hex (without #) |
GET /api/v1/color/contrast X-API-Key: viper_your_key_here # Query params: # fg=# bg=
Generate random color(s) with all format values.
| Parameter | Type | Description |
|---|---|---|
| countoptional | string | How many colors (default: 1, max: 20) |
GET /api/v1/color/random X-API-Key: viper_your_key_here # Query params: # count=(optional)
Mix two or more hex colors with optional weights.
| Parameter | Type | Description |
|---|---|---|
| colorsrequired | string | JSON array of hex colors e.g. ["#ff0000","#0000ff"] |
| weightsoptional | string | JSON array of mix weights e.g. [0.7,0.3] |
POST /api/v1/color/mix X-API-Key: viper_your_key_here Content-Type: application/json { "colors": "" , "weights": "" }
⚡ Code Utilities
Minify JSON, HTML, CSS or JavaScript. Returns size saved.
| Parameter | Type | Description |
|---|---|---|
| coderequired | string | Source code string |
| typeoptional | string | json|html|css|js (default: json) |
POST /api/v1/code/minify X-API-Key: viper_your_key_here Content-Type: application/json { "code": "" , "type": "" }
Prettify JSON or HTML with configurable indentation.
| Parameter | Type | Description |
|---|---|---|
| coderequired | string | Source code string |
| typeoptional | string | json|html (default: json) |
| indentoptional | string | Spaces per indent (default: 2) |
POST /api/v1/code/format X-API-Key: viper_your_key_here Content-Type: application/json { "code": "" , "type": "" , "indent": "" }
Count total, code, comment and blank lines. Detects language.
| Parameter | Type | Description |
|---|---|---|
| coderequired | string | Source code string |
POST /api/v1/code/count X-API-Key: viper_your_key_here Content-Type: application/json { "code": "" }
Escape code for HTML, URL, Base64 or Unicode.
| Parameter | Type | Description |
|---|---|---|
| coderequired | string | String to escape |
| typeoptional | string | html|url|base64|unicode (default: html) |
POST /api/v1/code/escape X-API-Key: viper_your_key_here Content-Type: application/json { "code": "" , "type": "" }
Reverse HTML entities, URL encoding, Base64 or Unicode escapes.
| Parameter | Type | Description |
|---|---|---|
| coderequired | string | Escaped string |
| typeoptional | string | html|url|base64|unicode (default: html) |
POST /api/v1/code/unescape X-API-Key: viper_your_key_here Content-Type: application/json { "code": "" , "type": "" }
⚡ AI Text
Complete or generate text from any prompt using LLaMA 3 via Groq (free, fast). Add GROQ_API_KEY to .env — free key at console.groq.com.
| Parameter | Type | Description |
|---|---|---|
| promptrequired | string | Your prompt (max 4000 chars) |
| max_tokensoptional | string | Max tokens to generate (default: 512, max: 1024) |
POST /api/v1/ai/complete X-API-Key: viper_your_key_here Content-Type: application/json { "prompt": "" , "max_tokens": "" }
Summarise any long passage in short, medium or long form using AI. Requires GROQ_API_KEY.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text to summarise (max 8000 chars) |
| lengthoptional | string | short | medium | long (default: medium) |
POST /api/v1/ai/summarize X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" , "length": "" }
Fix grammar, spelling and punctuation errors. Returns corrected text + list of issues found. Requires GROQ_API_KEY.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text to correct (max 3000 chars) |
POST /api/v1/ai/grammar X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" }
Get a clear explanation of any concept, question or code snippet at simple or technical level. Requires GROQ_API_KEY.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Concept, question or code snippet (max 2000 chars) |
| leveloptional | string | simple | technical (default: simple) |
POST /api/v1/ai/explain X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" , "level": "" }
Rewrite text in a different tone — professional, casual, friendly, formal or persuasive. Requires GROQ_API_KEY.
| Parameter | Type | Description |
|---|---|---|
| textrequired | string | Text to rewrite (max 2000 chars) |
| torequired | string | professional | casual | friendly | formal | persuasive |
POST /api/v1/ai/tone X-API-Key: viper_your_key_here Content-Type: application/json { "text": "" , "to": "" }
⚡ PDF Tools
Create a clean, styled PDF from structured JSON — title, sections, body text and tables. Returns base64-encoded PDF. Requires: npm install pdfkit.
| Parameter | Type | Description |
|---|---|---|
| titlerequired | string | Document title |
| subtitleoptional | string | Subtitle shown in header |
| sectionsoptional | string | Array of { heading, body, table: { headers[], rows[][] } } |
| footeroptional | string | Footer text |
POST /api/v1/pdf/generate X-API-Key: viper_your_key_here Content-Type: application/json { "title": "" , "subtitle": "" , "sections": "" , "footer": "" }
Extract all readable text from a PDF. Returns text, page count and word count. Requires: npm install pdf-parse.
| Parameter | Type | Description |
|---|---|---|
| pdf_base64optional | string | Base64-encoded PDF |
| pdf_urloptional | string | Public URL of a PDF file (alternative to base64) |
POST /api/v1/pdf/extract X-API-Key: viper_your_key_here Content-Type: application/json { "pdf_base64": "" , "pdf_url": "" }
Merge 2–10 PDF files into one. Returns base64-encoded merged PDF. Requires: npm install pdf-lib.
| Parameter | Type | Description |
|---|---|---|
| pdfsrequired | string | Array of 2–10 base64-encoded PDF strings |
POST /api/v1/pdf/merge X-API-Key: viper_your_key_here Content-Type: application/json { "pdfs": "" }
⚡ Security
Check if a password has appeared in known data breaches using HIBP k-anonymity. Only the first 5 chars of the SHA1 hash are sent — your password is never transmitted. Free, no key needed.
| Parameter | Type | Description |
|---|---|---|
| passwordrequired | string | Password to check (k-anonymity — never sent in full) |
GET /api/v1/security/pwned X-API-Key: viper_your_key_here # Query params: # password=
Fetch a URL and audit its HTTP security headers — HSTS, CSP, X-Frame-Options, Referrer-Policy and more. Returns a letter grade and score.
| Parameter | Type | Description |
|---|---|---|
| urlrequired | string | Full URL to audit e.g. https://example.com |
GET /api/v1/security/headers X-API-Key: viper_your_key_here # Query params: # url=
Analyse a Content-Security-Policy header string and flag unsafe directives (unsafe-inline, unsafe-eval, wildcards). Returns a score and issue list.
| Parameter | Type | Description |
|---|---|---|
| policyrequired | string | Full CSP header string e.g. "default-src 'self'; script-src 'unsafe-inline'" |
POST /api/v1/security/csp X-API-Key: viper_your_key_here Content-Type: application/json { "policy": "" }
⚠️ Error Codes
| Code | Name | Description |
|---|---|---|
| 401 | Unauthorized | Missing or invalid API key |
| 403 | Forbidden | Account suspended or key disabled |
| 404 | Not Found | Endpoint does not exist |
| 429 | Too Many Requests | Monthly quota exhausted — upgrade your plan |
| 500 | Server Error | Upstream error — retry after a moment |