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
Văn bản và dữ liệu
hashbase64url-encodeslugtext-statsjson-formatjwt-decodesort-linesdedupe-linesfind-replaceword-frequencycase-converthtml-entitiescsv-to-jsonjson-to-csvBắ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ái | Mã | Ý nghĩa |
|---|---|---|
| 400 | invalid_request | Tham số bị thiếu hoặc không hợp lệ |
| 401 | invalid_key | API key không hợp lệ |
| 404 | not_found | Endpoint không tồn tại |
| 429 | rate_limited | Đã đạt giới hạn. Hãy chờ số giây trong Retry-After |
| 502 | upstream_error | Website hoặc dịch vụ được kiểm tra bị lỗi |
| 503 | unavailable | API đ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ại | Giới hạn |
|---|---|
| Văn bản, công cụ tạo và chuyển đổi | 60 request mỗi phút |
| Kiểm tra mạng | 15 request mỗi phút |
| Tất cả request cộng lại | 1.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
GETPOSTBăm văn bản bằng MD5 hoặc SHA.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
text | string | Có | Văn bản cần băm, tối đa 100 KB |
algorithm | string | Không | md5, sha1, sha256 (mặc định), sha384 hoặc sha512 |
encoding | string | Không | hex (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
GETPOSTMã hóa hoặc giải mã Base64.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
text | string | Có | Dữ liệu đầu vào, tối đa 100 KB |
action | string | Không | encode (mặc định) hoặc decode |
url_safe | boolean | Không | Dù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
GETPOSTMã hóa phần trăm hoặc giải mã một chuỗi.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
text | string | Có | Dữ liệu đầu vào, tối đa 100 KB |
action | string | Không | encode (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
GETPOSTChuyển văn bản thành URL slug.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
text | string | Có | Văn bản cần chuyển đổi |
separator | string | Khô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ên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
text | string | Có | 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
GETPOSTKiểm tra JSON, sau đó định dạng đẹp hoặc nén lại.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
json | string | Có | Nội dung JSON, tối đa 100 KB |
indent | integer | Không | Số dấu cách mỗi cấp, 0–8. Mặc định 2 |
minify | boolean | Không | Xó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
GETPOSTGiải mã JWT mà không xác minh chữ ký.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
token | string | Có | 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
GETPOSTSắp xếp các dòng văn bản.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
text | string | Có | Mỗi mục một dòng, tối đa 100 KB |
order | string | Không | asc (mặc định) hoặc desc |
numeric | boolean | Không | So 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
GETPOSTXóa các dòng trùng lặp, giữ lại dòng xuất hiện đầu tiên.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
text | string | Có | Mỗi mục một dòng, tối đa 100 KB |
ignore_case | boolean | Không | Coi A và a là giống nhau. Mặc định false |
trim | boolean | Không | Bỏ 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
GETPOSTTìm và thay thế văn bản thuần.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
text | string | Có | Văn bản, tối đa 100 KB |
find | string | Có | Văn bản cần tìm |
replace | string | Không | Văn bản thay thế. Mặc định: để trống |
ignore_case | boolean | Không | Khô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ên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
text | string | Có | Văn bản, tối đa 100 KB |
limit | integer | Không | Số 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ên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
text | string | Có | Văn bản, tối đa 100 KB |
to | string | Có | 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
GETPOSTMã hóa hoặc giải mã thực thể HTML.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
text | string | Có | Văn bản, tối đa 100 KB |
action | string | Không | encode (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
GETPOSTChuyển CSV sang JSON.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
csv | string | Có | Nội dung CSV, tối đa 100 KB |
delimiter | string | Không | comma (mặc định), semicolon, tab hoặc pipe |
header | boolean | Không | Dò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
GETPOSTChuyển mảng JSON gồm các đối tượng sang CSV.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
json | string | Có | 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
GETPOSTTạo UUID phiên bản 4 ngẫu nhiên.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
count | integer | Không | 1–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
GETPOSTTạo mật khẩu ngẫu nhiên, an toàn.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
length | integer | Không | 8–128. Mặc định 20 |
count | integer | Không | 1–50. Mặc định 1 |
symbols | boolean | Không | Bao gồm ký tự đặc biệt. Mặc định true |
numbers | boolean | Không | Bao gồm chữ số. Mặc định true |
uppercase | boolean | Không | Bao 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
GETPOSTTạo ID ngẫu nhiên, ngắn và an toàn cho URL.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
size | integer | Không | Độ dài, 4–64. Mặc định 21 |
count | integer | Không | 1–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
GETPOSTTạo chữ ký HMAC, ví dụ để ký webhook.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
text | string | Có | Nội dung thông điệp, tối đa 100 KB |
secret | string | Có | Khóa bí mật. Gửi trong phần thân POST |
algorithm | string | Không | sha1, sha256 (mặc định) hoặc sha512 |
encoding | string | Không | hex (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
GETPOSTTạo văn bản mẫu (placeholder).
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
paragraphs | integer | Không | 1–20. Mặc định 1 |
words | integer | Không | Số 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
GETPOSTTạo số nguyên ngẫu nhiên, an toàn.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
min | integer | Không | Giá trị nhỏ nhất. Mặc định 1 |
max | integer | Không | Giá trị lớn nhất. Mặc định 100 |
count | integer | Không | 1–100. Mặc định 1 |
unique | boolean | Không | Khô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
GETPOSTChuyển đổi màu giữa hex, RGB và HSL.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
value | string | Có | 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
GETPOSTChuyển đổi giữa thời gian Unix và ngày theo chuẩn ISO 8601.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
value | string | Không | Giâ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
GETPOSTTách một URL thành các thành phần.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
url | string | Có | 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
GETPOSTChuyển đổi một số nguyên giữa các cơ số từ 2 đến 36.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
value | string | Có | Số cần chuyển |
from | integer | Không | Cơ số đầu vào. Mặc định 10 |
to | integer | Không | Cơ 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
GETPOSTChuyển đổi đơn vị độ dài, khối lượng, nhiệt độ, dữ liệu và thời gian.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
value | number | Có | Giá trị cần chuyển |
from | string | Có | 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 |
to | string | Có | Đơ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
GETPOSTTính khoảng thời gian giữa hai ngày.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
from | string | Có | Ngày bắt đầu, theo định dạng ISO |
to | string | Không | Ngà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
GETPOSTLiệ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ên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
expression | string | Có | Năm trường: phút giờ ngày tháng thứ |
count | integer | Không | 1–20. Mặc định 5 |
from | string | Không | Ngà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
GETPOSTChuyển đổi giữa số và số La Mã.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
value | string | Có | 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
GETPOSTTính phần trăm và mức thay đổi theo phần trăm.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
value | number | Có | Số thứ nhất |
of | number | Có | Số thứ hai |
mode | string | Không | percent_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
GETPOSTCộng hoặc trừ thời gian từ một ngày.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
date | string | Có | Ngày bắt đầu, theo định dạng ISO |
days | integer | Không | Số ngày cần cộng. Dùng dấu trừ để trừ |
months | integer | Không | Số tháng cần cộng |
years | integer | Không | Số 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
GETPOSTTính tuổi theo năm, tháng và ngày.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
birthdate | string | Có | Ngày sinh, theo định dạng ISO |
on | string | Không | Ngà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
GETPOSTTra cứu mã trạng thái HTTP.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
code | integer | Có | 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
GETPOSTPhân tích chuỗi user agent. Mặc định là chuỗi của bạn.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
ua | string | Không | Chuỗ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
GETPOSTKiểm tra xem kết quả A/B test có ý nghĩa thống kê hay không.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
visitors_a | integer | Có | Lượt truy cập vào phiên bản A |
conversions_a | integer | Có | Số lượt chuyển đổi của phiên bản A |
visitors_b | integer | Có | Lượt truy cập vào phiên bản B |
conversions_b | integer | Có | Số lượt chuyển đổi của phiên bản B |
confidence | integer | Không | 90, 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
GETPOSTTính số lượt truy cập cần thiết cho một A/B test.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
baseline | number | Có | Tỷ lệ chuyển đổi hiện tại (%), ví dụ 5 |
change | number | Có | Mức thay đổi tương đối nhỏ nhất cần phát hiện (%), ví dụ 20 |
confidence | integer | Không | 90, 95 (mặc định) hoặc 99 |
power | integer | Không | 80 (mặc định) hoặc 90 |
daily_visitors | integer | Không | Số 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
GETPOSTTính ROAS (doanh thu trên chi phí quảng cáo) và ROAS hòa vốn.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
spend | number | Có | Chi phí quảng cáo |
revenue | number | Có | Doanh thu từ quảng cáo |
margin | number | Không | Biê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
GETPOSTTính CPM, CPC, CTR, CPA và tỷ lệ chuyển đổi.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
cost | number | Có | Chi phí quảng cáo |
impressions | integer | Không | Lượt hiển thị |
clicks | integer | Không | Lượt nhấp |
conversions | integer | Không | Lượ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
GETPOSTTính lợi nhuận, biên lợi nhuận và tỷ lệ markup.
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
cost | number | Có | Giá vốn |
price | number | Có | 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
GETPOSTTrả 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
GETPOSTTra cứu bản ghi DNS. Kiểm tra mạng
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
domain | string | Có | Tên miền hoặc địa chỉ IPv4 |
types | string | Không | Cá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
GETPOSTKiểm tra chứng chỉ SSL của một trang web. Kiểm tra mạng
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
domain | string | Có | 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
GETPOSTKiểm tra xem một trang web có đang hoạt động không. Kiểm tra mạng
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
url | string | Có | 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ên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
url | string | Có | 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
GETPOSTTheo dõi chuỗi chuyển hướng của một URL. Kiểm tra mạng
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
url | string | Có | 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
GETPOSTTra cứu thông tin đăng ký tên miền hoặc IP (RDAP). Kiểm tra mạng
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
query | string | Có | 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ên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
url | string | Có | 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ên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
url | string | Có | Trang hoặc trang web |
user_agent | string | Không | Bot 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
GETPOSTKiể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ên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
domain | string | Có | 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
GETPOSTPhát hiện các công nghệ mà trang web đang sử dụng. Kiểm tra mạng
Tham số
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
url | string | Có | 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": {}
}