Tài liệu API devpack – REST API miễn phí

Bản dịch này chỉ mang tính tham khảo. Phiên bản tiếng Anh có giá trị pháp lý.

Thêm vào ChromeThêm vào Firefox

Dùng các công cụ hữu ích nhất của devpack ngay trong mã nguồn của bạn. API miễn phí, không cần đăng ký và trả về dữ liệu JSON. Mỗi endpoint đều nhận GET với query parameters hoặc POST với body JSON.

Tất cả endpoint

Bắt đầu nhanh

URL gốc là http://localhost:3000/v1.

curl "http://localhost:3000/v1/hash?text=hello"

JavaScript

const res = await fetch('http://localhost:3000/v1/uuid?count=2');
const { ok, data, error } = await res.json();
if (!ok) throw new Error(error.message);
console.log(data.uuids);

Python

import requests

r = requests.post('http://localhost:3000/v1/json-format', json={'json': '{"a":1}'})
print(r.json()['data']['formatted'])

Hãy gửi thông tin nhạy cảm, như token hoặc mật khẩu, trong body của POST thay vì trên URL, vì URL có thể bị ghi lại trong log. API có thể được gọi trực tiếp từ trình duyệt (CORS đã được mở). Ngoài ra, bạn cũng có thể xem mô tả OpenAPI dưới dạng máy đọc được.

Ví dụ mã

Các client JavaScript và Python sẵn sàng sử dụng, script kiểm tra tình trạng website và hướng dẫn từng bước đều có trên GitHub: devpack API examples.

Phản hồi

Lời gọi thành công trả về {"ok": true, "data": {…}}. Lời gọi thất bại trả về lỗi kèm mã cố định:

{
  "ok": false,
  "error": { "code": "invalid_request", "message": "Missing required parameter: text" }
}
Trạng tháiMãÝ nghĩa
400invalid_requestTham số bị thiếu hoặc không hợp lệ
401invalid_keyAPI key không hợp lệ
404not_foundEndpoint không tồn tại
429rate_limitedĐã đạt giới hạn. Hãy chờ số giây trong Retry-After
502upstream_errorWebsite hoặc dịch vụ được kiểm tra bị lỗi
503unavailableAPI đang tạm thời ngừng hoạt động

Giới hạn tần suất

Không cần key để sử dụng miễn phí. Lượng sử dụng miễn phí được tính theo địa chỉ IP:

LoạiGiới hạn
Văn bản, công cụ tạo và chuyển đổi60 request mỗi phút
Kiểm tra mạng15 request mỗi phút
Tất cả request cộng lại1.000 request mỗi ngày

Mỗi phản hồi đều có các header X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-RateLimit-Daily-Limit và X-RateLimit-Daily-Remaining.

API key

Sử dụng miễn phí không cần key. Nếu bạn được cấp một key, hãy gửi nó trong header:

curl -H "X-API-Key: YOUR_KEY" "http://localhost:3000/v1/uuid"

Cần giới hạn cao hơn? Liên hệ với chúng tôi.

Sử dụng hợp lý và quyền riêng tư

API được cung cấp nguyên trạng, theo Điều khoản của chúng tôi. Chỉ kiểm tra những website mà bạn được phép thử nghiệm, và đừng dùng API để gây quá tải bất kỳ dịch vụ nào. Chúng tôi không lưu trữ văn bản bạn gửi. Các kiểm tra mạng chỉ có thể truy cập địa chỉ công khai. Giới hạn và endpoint có thể thay đổi; mọi thay đổi không tương thích sẽ được đưa vào phiên bản mới.

Văn bản và dữ liệu

/v1/hash

GETPOST

Băm văn bản bằng MD5 hoặc SHA.

Tham số

TênKiểuBắt buộcMô tả
textstringCóVăn bản cần băm, tối đa 100 KB
algorithmstringKhôngmd5, sha1, sha256 (mặc định), sha384 hoặc sha512
encodingstringKhônghex (mặc định) hoặc base64

Yêu cầu

curl "http://localhost:3000/v1/hash?text=hello&algorithm=sha256"

Phản hồi

{
  "ok": true,
  "data": {
    "algorithm": "sha256",
    "encoding": "hex",
    "hash": "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"
  }
}

/v1/base64

GETPOST

Mã hóa hoặc giải mã Base64.

Tham số

TênKiểuBắt buộcMô tả
textstringCóDữ liệu đầu vào, tối đa 100 KB
actionstringKhôngencode (mặc định) hoặc decode
url_safebooleanKhôngDùng bảng ký tự an toàn cho URL. Mặc định false

Yêu cầu

curl "http://localhost:3000/v1/base64?text=hello+world&action=encode"

Phản hồi

{
  "ok": true,
  "data": {
    "action": "encode",
    "result": "aGVsbG8gd29ybGQ="
  }
}

/v1/url-encode

GETPOST

Mã hóa phần trăm hoặc giải mã một chuỗi.

Tham số

TênKiểuBắt buộcMô tả
textstringCóDữ liệu đầu vào, tối đa 100 KB
actionstringKhôngencode (mặc định) hoặc decode

Yêu cầu

curl "http://localhost:3000/v1/url-encode?text=a+b%26c%3Dd&action=encode"

Phản hồi

{
  "ok": true,
  "data": {
    "action": "encode",
    "result": "a%20b%26c%3Dd"
  }
}

/v1/slug

GETPOST

Chuyển văn bản thành URL slug.

Tham số

TênKiểuBắt buộcMô tả
textstringCóVăn bản cần chuyển đổi
separatorstringKhông- (mặc định) hoặc _

Yêu cầu

curl "http://localhost:3000/v1/slug?text=Hello%2C+W%C3%B6rld%21+It%E2%80%99s+2026"

Phản hồi

{
  "ok": true,
  "data": {
    "slug": "hello-world-its-2026"
  }
}

/v1/text-stats

GETPOST

Đếm từ, ký tự, dòng và thời gian đọc.

Tham số

TênKiểuBắt buộcMô tả
textstringCóVăn bản, tối đa 100 KB

Yêu cầu

curl "http://localhost:3000/v1/text-stats?text=One+two+three.+Four+five%21"

Phản hồi

{
  "ok": true,
  "data": {
    "characters": 25,
    "charactersNoSpaces": 21,
    "words": 5,
    "sentences": 2,
    "lines": 1,
    "readingTimeSeconds": 2
  }
}

/v1/json-format

GETPOST

Kiểm tra JSON, sau đó định dạng đẹp hoặc nén lại.

Tham số

TênKiểuBắt buộcMô tả
jsonstringCóNội dung JSON, tối đa 100 KB
indentintegerKhôngSố dấu cách mỗi cấp, 0–8. Mặc định 2
minifybooleanKhôngXóa toàn bộ khoảng trắng. Mặc định false

Yêu cầu

curl "http://localhost:3000/v1/json-format?json=%7B%22name%22%3A%22devpack%22%2C%22tools%22%3A500%7D&indent=2"

Phản hồi

{
  "ok": true,
  "data": {
    "valid": true,
    "formatted": "{\n  \"name\": \"devpack\",\n  \"tools\": 500\n}"
  }
}

/v1/jwt-decode

GETPOST

Giải mã JWT mà không xác minh chữ ký.

Tham số

TênKiểuBắt buộcMô tả
tokenstringCóJWT cần giải mã

Yêu cầu

curl "http://localhost:3000/v1/jwt-decode?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiQWRhIiwiZXhwIjo0MTAyNDQ0ODAwfQ.c2lnbmF0dXJl"

Phản hồi

{
  "ok": true,
  "data": {
    "header": {
      "alg": "HS256",
      "typ": "JWT"
    },
    "payload": {
      "sub": "123",
      "name": "Ada",
      "exp": 4102444800
    },
    "expired": false,
    "signatureVerified": false
  }
}

/v1/sort-lines

GETPOST

Sắp xếp các dòng văn bản.

Tham số

TênKiểuBắt buộcMô tả
textstringCóMỗi mục một dòng, tối đa 100 KB
orderstringKhôngasc (mặc định) hoặc desc
numericbooleanKhôngSo sánh số theo giá trị. Mặc định false

Yêu cầu

curl "http://localhost:3000/v1/sort-lines?text=pear%0Aapple%0Amango&order=asc"

Phản hồi

{
  "ok": true,
  "data": {
    "lines": 3,
    "result": "apple\nmango\npear"
  }
}

/v1/dedupe-lines

GETPOST

Xóa các dòng trùng lặp, giữ lại dòng xuất hiện đầu tiên.

Tham số

TênKiểuBắt buộcMô tả
textstringCóMỗi mục một dòng, tối đa 100 KB
ignore_casebooleanKhôngCoi A và a là giống nhau. Mặc định false
trimbooleanKhôngBỏ qua khoảng trắng ở đầu và cuối dòng. Mặc định true

Yêu cầu

curl "http://localhost:3000/v1/dedupe-lines?text=one%0Atwo%0Aone%0ATwo&ignore_case=true"

Phản hồi

{
  "ok": true,
  "data": {
    "before": 4,
    "after": 2,
    "removed": 2,
    "result": "one\ntwo"
  }
}

/v1/find-replace

GETPOST

Tìm và thay thế văn bản thuần.

Tham số

TênKiểuBắt buộcMô tả
textstringCóVăn bản, tối đa 100 KB
findstringCóVăn bản cần tìm
replacestringKhôngVăn bản thay thế. Mặc định: để trống
ignore_casebooleanKhôngKhông phân biệt chữ hoa và chữ thường. Mặc định false

Yêu cầu

curl "http://localhost:3000/v1/find-replace?text=Hello+world%2C+hello+there&find=hello&replace=Hi&ignore_case=true"

Phản hồi

{
  "ok": true,
  "data": {
    "replacements": 2,
    "result": "Hi world, Hi there"
  }
}

/v1/word-frequency

GETPOST

Đếm số lần mỗi từ xuất hiện.

Tham số

TênKiểuBắt buộcMô tả
textstringCóVăn bản, tối đa 100 KB
limitintegerKhôngSố từ trả về, 1–100. Mặc định 20

Yêu cầu

curl "http://localhost:3000/v1/word-frequency?text=the+cat+and+the+dog+and+the+bird&limit=3"

Phản hồi

{
  "ok": true,
  "data": {
    "total": 8,
    "unique": 5,
    "words": [
      {
        "word": "the",
        "count": 3,
        "percent": 37.5
      },
      {
        "word": "and",
        "count": 2,
        "percent": 25
      },
      {
        "word": "bird",
        "count": 1,
        "percent": 12.5
      }
    ]
  }
}

/v1/case-convert

GETPOST

Đổi kiểu chữ, ví dụ camelCase hoặc snake_case.

Tham số

TênKiểuBắt buộcMô tả
textstringCóVăn bản, tối đa 100 KB
tostringCólower, upper, title, sentence, camel, pascal, snake, kebab hoặc constant

Yêu cầu

curl "http://localhost:3000/v1/case-convert?text=Hello+big+world&to=snake"

Phản hồi

{
  "ok": true,
  "data": {
    "to": "snake",
    "result": "hello_big_world"
  }
}

/v1/html-entities

GETPOST

Mã hóa hoặc giải mã thực thể HTML.

Tham số

TênKiểuBắt buộcMô tả
textstringCóVăn bản, tối đa 100 KB
actionstringKhôngencode (mặc định) hoặc decode

Yêu cầu

curl "http://localhost:3000/v1/html-entities?text=%3Ca+href%3D%22%2F%22%3ETom+%26+Jerry%3C%2Fa%3E&action=encode"

Phản hồi

{
  "ok": true,
  "data": {
    "action": "encode",
    "result": "<a href="/">Tom & Jerry</a>"
  }
}

/v1/csv-to-json

GETPOST

Chuyển CSV sang JSON.

Tham số

TênKiểuBắt buộcMô tả
csvstringCóNội dung CSV, tối đa 100 KB
delimiterstringKhôngcomma (mặc định), semicolon, tab hoặc pipe
headerbooleanKhôngDòng đầu chứa tên cột. Mặc định true

Yêu cầu

curl "http://localhost:3000/v1/csv-to-json?csv=name%2Cage%0AAda%2C36%0AGrace%2C45"

Phản hồi

{
  "ok": true,
  "data": {
    "rows": 2,
    "columns": [
      "name",
      "age"
    ],
    "data": [
      {
        "name": "Ada",
        "age": "36"
      },
      {
        "name": "Grace",
        "age": "45"
      }
    ]
  }
}

/v1/json-to-csv

GETPOST

Chuyển mảng JSON gồm các đối tượng sang CSV.

Tham số

TênKiểuBắt buộcMô tả
jsonstringCóMảng JSON gồm các đối tượng, tối đa 100 KB

Yêu cầu

curl "http://localhost:3000/v1/json-to-csv?json=%5B%7B%22name%22%3A%22Ada%22%2C%22age%22%3A36%7D%2C%7B%22name%22%3A%22Grace%22%2C%22age%22%3A45%7D%5D"

Phản hồi

{
  "ok": true,
  "data": {
    "rows": 2,
    "columns": [
      "name",
      "age"
    ],
    "csv": "name,age\nAda,36\nGrace,45"
  }
}

Trình tạo

/v1/uuid

GETPOST

Tạo UUID phiên bản 4 ngẫu nhiên.

Tham số

TênKiểuBắt buộcMô tả
countintegerKhông1–100. Mặc định 1

Yêu cầu

curl "http://localhost:3000/v1/uuid?count=2"

Phản hồi

{
  "ok": true,
  "data": {
    "uuids": [
      "8e3c3c70-31f3-4cc4-97d9-64d4e5a9c99e",
      "843b4586-311c-425d-9aa5-df3bac5de70a"
    ]
  }
}

/v1/password

GETPOST

Tạo mật khẩu ngẫu nhiên, an toàn.

Tham số

TênKiểuBắt buộcMô tả
lengthintegerKhông8–128. Mặc định 20
countintegerKhông1–50. Mặc định 1
symbolsbooleanKhôngBao gồm ký tự đặc biệt. Mặc định true
numbersbooleanKhôngBao gồm chữ số. Mặc định true
uppercasebooleanKhôngBao gồm chữ in hoa. Mặc định true

Yêu cầu

curl "http://localhost:3000/v1/password?length=16&count=1"

Phản hồi

{
  "ok": true,
  "data": {
    "passwords": [
      "Z9Eb#?Jwy9=?Mok4"
    ]
  }
}

/v1/nanoid

GETPOST

Tạo ID ngẫu nhiên, ngắn và an toàn cho URL.

Tham số

TênKiểuBắt buộcMô tả
sizeintegerKhôngĐộ dài, 4–64. Mặc định 21
countintegerKhông1–100. Mặc định 1

Yêu cầu

curl "http://localhost:3000/v1/nanoid?size=12&count=2"

Phản hồi

{
  "ok": true,
  "data": {
    "ids": [
      "skbSO4xgln5g",
      "gl0cJxgopAQY"
    ]
  }
}

/v1/hmac

GETPOST

Tạo chữ ký HMAC, ví dụ để ký webhook.

Tham số

TênKiểuBắt buộcMô tả
textstringCóNội dung thông điệp, tối đa 100 KB
secretstringCóKhóa bí mật. Gửi trong phần thân POST
algorithmstringKhôngsha1, sha256 (mặc định) hoặc sha512
encodingstringKhônghex (mặc định) hoặc base64

Yêu cầu

curl "http://localhost:3000/v1/hmac?text=hello&secret=my-secret"

Phản hồi

{
  "ok": true,
  "data": {
    "algorithm": "sha256",
    "encoding": "hex",
    "signature": "7c1ce32402750db1149385ac20603beeaca8909906d1e81c08f4f5c7db8fbe94"
  }
}

/v1/lorem-ipsum

GETPOST

Tạo văn bản mẫu (placeholder).

Tham số

TênKiểuBắt buộcMô tả
paragraphsintegerKhông1–20. Mặc định 1
wordsintegerKhôngSố từ mỗi đoạn, 5–200. Mặc định 40

Yêu cầu

curl "http://localhost:3000/v1/lorem-ipsum?paragraphs=1&words=12"

Phản hồi

{
  "ok": true,
  "data": {
    "paragraphs": [
      "Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor."
    ]
  }
}

/v1/random

GETPOST

Tạo số nguyên ngẫu nhiên, an toàn.

Tham số

TênKiểuBắt buộcMô tả
minintegerKhôngGiá trị nhỏ nhất. Mặc định 1
maxintegerKhôngGiá trị lớn nhất. Mặc định 100
countintegerKhông1–100. Mặc định 1
uniquebooleanKhôngKhông lặp lại. Mặc định false

Yêu cầu

curl "http://localhost:3000/v1/random?min=1&max=6&count=2"

Phản hồi

{
  "ok": true,
  "data": {
    "numbers": [
      3,
      2
    ]
  }
}

Chuyển đổi

/v1/color

GETPOST

Chuyển đổi màu giữa hex, RGB và HSL.

Tham số

TênKiểuBắt buộcMô tả
valuestringCóVí dụ #ff6600, rgb(255, 102, 0) hoặc hsl(24, 100%, 50%)

Yêu cầu

curl "http://localhost:3000/v1/color?value=%23ff6600"

Phản hồi

{
  "ok": true,
  "data": {
    "hex": "#ff6600",
    "rgb": {
      "r": 255,
      "g": 102,
      "b": 0
    },
    "hsl": {
      "h": 24,
      "s": 100,
      "l": 50
    },
    "css": {
      "rgb": "rgb(255, 102, 0)",
      "hsl": "hsl(24, 100%, 50%)"
    }
  }
}

/v1/timestamp

GETPOST

Chuyển đổi giữa thời gian Unix và ngày theo chuẩn ISO 8601.

Tham số

TênKiểuBắt buộcMô tả
valuestringKhôngGiây Unix, mili giây Unix hoặc ngày ISO. Mặc định: hiện tại

Yêu cầu

curl "http://localhost:3000/v1/timestamp?value=1798761600"

Phản hồi

{
  "ok": true,
  "data": {
    "unix": 1798761600,
    "unixMs": 1798761600000,
    "iso": "2027-01-01T00:00:00.000Z",
    "utc": "Fri, 01 Jan 2027 00:00:00 GMT"
  }
}

/v1/url-parse

GETPOST

Tách một URL thành các thành phần.

Tham số

TênKiểuBắt buộcMô tả
urlstringCóURL cần phân tích

Yêu cầu

curl "http://localhost:3000/v1/url-parse?url=https%3A%2F%2Fdevpack.app%3A8443%2Ftools%3Fq%3Djson%26page%3D2%23top"

Phản hồi

{
  "ok": true,
  "data": {
    "protocol": "https",
    "host": "devpack.app",
    "port": "8443",
    "path": "/tools",
    "query": {
      "q": "json",
      "page": "2"
    },
    "hash": "top",
    "origin": "https://devpack.app:8443"
  }
}

/v1/number-base

GETPOST

Chuyển đổi một số nguyên giữa các cơ số từ 2 đến 36.

Tham số

TênKiểuBắt buộcMô tả
valuestringCóSố cần chuyển
fromintegerKhôngCơ số đầu vào. Mặc định 10
tointegerKhôngCơ số đầu ra. Mặc định 16

Yêu cầu

curl "http://localhost:3000/v1/number-base?value=255&from=10&to=16"

Phản hồi

{
  "ok": true,
  "data": {
    "result": "ff",
    "decimal": "255"
  }
}

/v1/unit-convert

GETPOST

Chuyển đổi đơn vị độ dài, khối lượng, nhiệt độ, dữ liệu và thời gian.

Tham số

TênKiểuBắt buộcMô tả
valuenumberCóGiá trị cần chuyển
fromstringCóm, km, cm, mm, in, ft, yd, mi, kg, g, mg, lb, oz, t, c, f, k, b, kb, mb, gb, tb, kib, mib, gib, ms, s, min, h, d, wk
tostringCóĐơn vị đích, cùng loại với đơn vị nguồn

Yêu cầu

curl "http://localhost:3000/v1/unit-convert?value=10&from=km&to=mi"

Phản hồi

{
  "ok": true,
  "data": {
    "value": 10,
    "from": "km",
    "to": "mi",
    "result": 6.21371192237
  }
}

/v1/date-diff

GETPOST

Tính khoảng thời gian giữa hai ngày.

Tham số

TênKiểuBắt buộcMô tả
fromstringCóNgày bắt đầu, theo định dạng ISO
tostringKhôngNgày kết thúc. Mặc định: hiện tại

Yêu cầu

curl "http://localhost:3000/v1/date-diff?from=2026-01-01&to=2026-10-30"

Phản hồi

{
  "ok": true,
  "data": {
    "days": 302,
    "weeks": 43.14,
    "hours": 7248,
    "minutes": 434880,
    "seconds": 26092800
  }
}

/v1/cron-next

GETPOST

Liệt kê các thời điểm chạy tiếp theo của một biểu thức cron, theo UTC.

Tham số

TênKiểuBắt buộcMô tả
expressionstringCóNăm trường: phút giờ ngày tháng thứ
countintegerKhông1–20. Mặc định 5
fromstringKhôngNgày bắt đầu. Mặc định: hiện tại

Yêu cầu

curl "http://localhost:3000/v1/cron-next?expression=0+9+*+*+1&count=2&from=2026-10-30T00%3A00%3A00Z"

Phản hồi

{
  "ok": true,
  "data": {
    "expression": "0 9 * * 1",
    "runs": [
      "2026-11-02T09:00:00.000Z",
      "2026-11-09T09:00:00.000Z"
    ]
  }
}

/v1/roman-numeral

GETPOST

Chuyển đổi giữa số và số La Mã.

Tham số

TênKiểuBắt buộcMô tả
valuestringCóMột số từ 1 đến 3999, hoặc một số La Mã

Yêu cầu

curl "http://localhost:3000/v1/roman-numeral?value=2026"

Phản hồi

{
  "ok": true,
  "data": {
    "number": 2026,
    "roman": "MMXXVI"
  }
}

/v1/percentage

GETPOST

Tính phần trăm và mức thay đổi theo phần trăm.

Tham số

TênKiểuBắt buộcMô tả
valuenumberCóSố thứ nhất
ofnumberCóSố thứ hai
modestringKhôngpercent_of (mặc định: value% của “of”), what_percent (value là bao nhiêu % của “of”) hoặc change (từ value đến “of”)

Yêu cầu

curl "http://localhost:3000/v1/percentage?value=20&of=150&mode=percent_of"

Phản hồi

{
  "ok": true,
  "data": {
    "mode": "percent_of",
    "result": 30
  }
}

/v1/date-add

GETPOST

Cộng hoặc trừ thời gian từ một ngày.

Tham số

TênKiểuBắt buộcMô tả
datestringCóNgày bắt đầu, theo định dạng ISO
daysintegerKhôngSố ngày cần cộng. Dùng dấu trừ để trừ
monthsintegerKhôngSố tháng cần cộng
yearsintegerKhôngSố năm cần cộng

Yêu cầu

curl "http://localhost:3000/v1/date-add?date=2026-10-31&days=30"

Phản hồi

{
  "ok": true,
  "data": {
    "result": "2026-11-30",
    "iso": "2026-11-30T00:00:00.000Z",
    "weekday": "Monday"
  }
}

/v1/age

GETPOST

Tính tuổi theo năm, tháng và ngày.

Tham số

TênKiểuBắt buộcMô tả
birthdatestringCóNgày sinh, theo định dạng ISO
onstringKhôngNgày cần tính đến. Mặc định: hôm nay

Yêu cầu

curl "http://localhost:3000/v1/age?birthdate=1990-05-15&on=2026-10-31"

Phản hồi

{
  "ok": true,
  "data": {
    "years": 36,
    "months": 5,
    "days": 16,
    "totalDays": 13318
  }
}

/v1/http-status

GETPOST

Tra cứu mã trạng thái HTTP.

Tham số

TênKiểuBắt buộcMô tả
codeintegerCó100–599

Yêu cầu

curl "http://localhost:3000/v1/http-status?code=404"

Phản hồi

{
  "ok": true,
  "data": {
    "code": 404,
    "name": "Not Found",
    "class": "Client error",
    "docs": "http://localhost:3000/http-status-codes/404"
  }
}

/v1/user-agent

GETPOST

Phân tích chuỗi user agent. Mặc định là chuỗi của bạn.

Tham số

TênKiểuBắt buộcMô tả
uastringKhôngChuỗi user agent

Yêu cầu

curl "http://localhost:3000/v1/user-agent?ua=Mozilla%2F5.0+%28Windows+NT+10.0%3B+Win64%3B+x64%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F130.0.0.0+Safari%2F537.36"

Phản hồi

{
  "ok": true,
  "data": {
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36",
    "browser": {
      "name": "Chrome",
      "version": "130.0.0.0"
    },
    "os": {
      "name": "Windows",
      "version": "10.0"
    },
    "device": "desktop",
    "bot": false
  }
}

Marketing

/v1/ab-test

GETPOST

Kiểm tra xem kết quả A/B test có ý nghĩa thống kê hay không.

Tham số

TênKiểuBắt buộcMô tả
visitors_aintegerCóLượt truy cập vào phiên bản A
conversions_aintegerCóSố lượt chuyển đổi của phiên bản A
visitors_bintegerCóLượt truy cập vào phiên bản B
conversions_bintegerCóSố lượt chuyển đổi của phiên bản B
confidenceintegerKhông90, 95 (mặc định) hoặc 99

Yêu cầu

curl "http://localhost:3000/v1/ab-test?visitors_a=1000&conversions_a=100&visitors_b=1000&conversions_b=130"

Phản hồi

{
  "ok": true,
  "data": {
    "rateA": 0.1,
    "rateB": 0.13,
    "uplift": 0.3,
    "zScore": 2.1027,
    "pValue": 0.035488,
    "confidence": 95,
    "significant": true,
    "winner": "B"
  }
}

/v1/ab-sample-size

GETPOST

Tính số lượt truy cập cần thiết cho một A/B test.

Tham số

TênKiểuBắt buộcMô tả
baselinenumberCóTỷ lệ chuyển đổi hiện tại (%), ví dụ 5
changenumberCóMức thay đổi tương đối nhỏ nhất cần phát hiện (%), ví dụ 20
confidenceintegerKhông90, 95 (mặc định) hoặc 99
powerintegerKhông80 (mặc định) hoặc 90
daily_visitorsintegerKhôngSố lượt truy cập mỗi ngày, để ước tính thời gian chạy test

Yêu cầu

curl "http://localhost:3000/v1/ab-sample-size?baseline=5&change=20&daily_visitors=1000"

Phản hồi

{
  "ok": true,
  "data": {
    "perVersion": 8158,
    "total": 16316,
    "expectedRate": 6,
    "days": 17
  }
}

/v1/roas

GETPOST

Tính ROAS (doanh thu trên chi phí quảng cáo) và ROAS hòa vốn.

Tham số

TênKiểuBắt buộcMô tả
spendnumberCóChi phí quảng cáo
revenuenumberCóDoanh thu từ quảng cáo
marginnumberKhôngBiên lợi nhuận (%), dùng để tính ROAS hòa vốn

Yêu cầu

curl "http://localhost:3000/v1/roas?spend=1000&revenue=4000&margin=40"

Phản hồi

{
  "ok": true,
  "data": {
    "roas": 4,
    "roasPercent": 400,
    "net": 3000,
    "breakEvenRoas": 2.5,
    "profit": 600
  }
}

/v1/ad-metrics

GETPOST

Tính CPM, CPC, CTR, CPA và tỷ lệ chuyển đổi.

Tham số

TênKiểuBắt buộcMô tả
costnumberCóChi phí quảng cáo
impressionsintegerKhôngLượt hiển thị
clicksintegerKhôngLượt nhấp
conversionsintegerKhôngLượt chuyển đổi

Yêu cầu

curl "http://localhost:3000/v1/ad-metrics?cost=500&impressions=20000&clicks=400&conversions=20"

Phản hồi

{
  "ok": true,
  "data": {
    "cpm": 25,
    "cpc": 1.25,
    "ctr": 2,
    "conversionRate": 5,
    "cpa": 25
  }
}

/v1/profit-margin

GETPOST

Tính lợi nhuận, biên lợi nhuận và tỷ lệ markup.

Tham số

TênKiểuBắt buộcMô tả
costnumberCóGiá vốn
pricenumberCóGiá bán

Yêu cầu

curl "http://localhost:3000/v1/profit-margin?cost=75&price=100"

Phản hồi

{
  "ok": true,
  "data": {
    "profit": 25,
    "marginPercent": 25,
    "markupPercent": 33.33
  }
}

Mạng

/v1/ip

GETPOST

Trả về địa chỉ IP của người gọi.

Yêu cầu

curl "http://localhost:3000/v1/ip"

Phản hồi

{
  "ok": true,
  "data": {
    "ip": "203.0.113.42",
    "version": "IPv4"
  }
}

/v1/dns

GETPOST

Tra cứu bản ghi DNS. Kiểm tra mạng

Tham số

TênKiểuBắt buộcMô tả
domainstringCóTên miền hoặc địa chỉ IPv4
typesstringKhôngCác loại cách nhau bằng dấu phẩy: A, AAAA, CNAME, MX, TXT, NS, SOA, CAA, SRV, PTR. Mặc định: bộ loại phổ biến

Yêu cầu

curl "http://localhost:3000/v1/dns?domain=example.com&types=A%2CMX"

Phản hồi

{
  "ok": true,
  "data": {
    "domain": "example.com",
    "results": [
      {
        "type": "A",
        "status": 0,
        "records": [
          {
            "name": "example.com",
            "ttl": 300,
            "type": "A",
            "data": "93.184.215.14"
          }
        ]
      },
      {
        "type": "MX",
        "status": 0,
        "records": [
          {
            "name": "example.com",
            "ttl": 3600,
            "type": "MX",
            "data": "0 mail.example.com."
          }
        ]
      }
    ],
    "resolver": "Cloudflare 1.1.1.1 (DNS over HTTPS)"
  }
}

/v1/ssl

GETPOST

Kiểm tra chứng chỉ SSL của một trang web. Kiểm tra mạng

Tham số

TênKiểuBắt buộcMô tả
domainstringCóTên máy chủ

Yêu cầu

curl "http://localhost:3000/v1/ssl?domain=example.com"

Phản hồi

{
  "ok": true,
  "data": {
    "host": "example.com",
    "valid": true,
    "protocol": "TLSv1.3",
    "daysLeft": 74,
    "hostnameMatches": true,
    "sans": [
      "example.com",
      "www.example.com"
    ],
    "issuer": {
      "C": "US",
      "O": "Example CA",
      "CN": "Example CA R1"
    },
    "validFrom": "Oct 1 00:00:00 2026 GMT",
    "validTo": "Jan 12 23:59:59 2027 GMT"
  }
}

/v1/status

GETPOST

Kiểm tra xem một trang web có đang hoạt động không. Kiểm tra mạng

Tham số

TênKiểuBắt buộcMô tả
urlstringCóTrang cần kiểm tra

Yêu cầu

curl "http://localhost:3000/v1/status?url=https%3A%2F%2Fexample.com"

Phản hồi

{
  "ok": true,
  "data": {
    "url": "https://example.com/",
    "finalUrl": "https://example.com/",
    "up": true,
    "status": 200,
    "time": 182,
    "ttfb": 96,
    "title": "Example Domain",
    "server": "cloudflare",
    "checkedAt": "2026-10-30T12:00:00.000Z"
  }
}

/v1/headers

GETPOST

Đọc HTTP header và chấm điểm các header bảo mật. Kiểm tra mạng

Tham số

TênKiểuBắt buộcMô tả
urlstringCóTrang cần kiểm tra

Yêu cầu

curl "http://localhost:3000/v1/headers?url=https%3A%2F%2Fexample.com"

Phản hồi

{
  "ok": true,
  "data": {
    "url": "https://example.com/",
    "status": 200,
    "headers": {
      "content-type": "text/html",
      "server": "cloudflare"
    },
    "security": {
      "score": 25,
      "grade": "E",
      "https": true,
      "missing": [
        "Content-Security-Policy",
        "X-Frame-Options"
      ]
    }
  }
}

/v1/redirects

GETPOST

Theo dõi chuỗi chuyển hướng của một URL. Kiểm tra mạng

Tham số

TênKiểuBắt buộcMô tả
urlstringCóURL cần theo dõi

Yêu cầu

curl "http://localhost:3000/v1/redirects?url=http%3A%2F%2Fexample.com"

Phản hồi

{
  "ok": true,
  "data": {
    "requested": "http://example.com/",
    "final": "https://example.com/",
    "status": 200,
    "chain": [
      {
        "url": "http://example.com/",
        "status": 301,
        "time": 88
      },
      {
        "url": "https://example.com/",
        "status": 200,
        "time": 126
      }
    ],
    "totalTime": 214
  }
}

/v1/whois

GETPOST

Tra cứu thông tin đăng ký tên miền hoặc IP (RDAP). Kiểm tra mạng

Tham số

TênKiểuBắt buộcMô tả
querystringCóTên miền hoặc địa chỉ IP

Yêu cầu

curl "http://localhost:3000/v1/whois?query=example.com"

Phản hồi

{
  "ok": true,
  "data": {
    "kind": "domain",
    "query": "example.com",
    "domain": "EXAMPLE.COM",
    "source": "https://rdap.verisign.com/com/v1/domain/example.com",
    "status": [
      "client delete prohibited"
    ],
    "registrar": "Example Registrar",
    "ianaId": "376",
    "created": "1995-08-14T04:00:00Z",
    "updated": "2026-08-14T08:01:43Z",
    "expires": "2027-08-13T04:00:00Z",
    "dnssec": true,
    "nameservers": [
      "ns1.example.net",
      "ns2.example.net"
    ],
    "entities": []
  }
}

/v1/meta

GETPOST

Đọc tiêu đề, mô tả và thẻ mạng xã hội của một trang. Kiểm tra mạng

Tham số

TênKiểuBắt buộcMô tả
urlstringCóTrang cần đọc

Yêu cầu

curl "http://localhost:3000/v1/meta?url=https%3A%2F%2Fexample.com"

Phản hồi

{
  "ok": true,
  "data": {
    "url": "https://example.com/",
    "status": 200,
    "title": "Example Domain",
    "description": "An example page.",
    "canonical": "https://example.com/",
    "robots": null,
    "openGraph": {
      "title": "Example Domain",
      "description": "An example page.",
      "image": "https://example.com/og.png"
    },
    "twitter": {
      "card": "summary_large_image",
      "image": "https://example.com/og.png"
    }
  }
}

/v1/robots

GETPOST

Đọc robots.txt của trang web và kiểm tra xem một đường dẫn có được phép truy cập không. Kiểm tra mạng

Tham số

TênKiểuBắt buộcMô tả
urlstringCóTrang hoặc trang web
user_agentstringKhôngBot cần thử nghiệm. Mặc định là Googlebot

Yêu cầu

curl "http://localhost:3000/v1/robots?url=https%3A%2F%2Fexample.com%2F&user_agent=Googlebot"

Phản hồi

{
  "ok": true,
  "data": {
    "exists": true,
    "test": {
      "path": "/",
      "ua": "Googlebot",
      "allowed": true,
      "rule": null,
      "group": "*"
    },
    "bots": [
      {
        "bot": "Googlebot",
        "allowed": true,
        "rule": null,
        "group": "*"
      },
      {
        "bot": "GPTBot",
        "allowed": false,
        "rule": "/",
        "group": "gptbot"
      }
    ]
  }
}

/v1/email-dns

GETPOST

Kiểm tra cấu hình email MX, SPF và DMARC của tên miền. Kiểm tra mạng

Tham số

TênKiểuBắt buộcMô tả
domainstringCóTên miền

Yêu cầu

curl "http://localhost:3000/v1/email-dns?domain=example.com"

Phản hồi

{
  "ok": true,
  "data": {
    "domain": "example.com",
    "checks": [
      {
        "id": "spf",
        "status": "ok",
        "title": "SPF valid · 0/10 lookups · -all",
        "detail": "v=spf1 -all"
      },
      {
        "id": "dmarc",
        "status": "ok",
        "title": "DMARC enforced · p=reject",
        "detail": "v=DMARC1;p=reject"
      }
    ]
  }
}

/v1/tech

GETPOST

Phát hiện các công nghệ mà trang web đang sử dụng. Kiểm tra mạng

Tham số

TênKiểuBắt buộcMô tả
urlstringCóTrang web cần kiểm tra

Yêu cầu

curl "http://localhost:3000/v1/tech?url=https%3A%2F%2Fexample.com"

Phản hồi

{
  "ok": true,
  "data": {}
}