Tài liệu API
ISO 27001SOC 2 CertifiedGDPR Compliant

API phát hiện âm thanh AI

Tài liệu đầy đủ để tích hợp API phát hiện âm thanh AI TruthScan vào ứng dụng.

Thử không cần mã bằng cách truy cập endpoint FastAPI: https://detect-audio.truthscan.com/docs

Xác thực

TruthScan dùng API key để cho phép truy cập API. Bạn lấy API key tại đầu trang trong cổng nhà phát triển.

TruthScan yêu cầu API key trong body mọi yêu cầu API, có dạng sau:

{
  "key": "YOUR API KEY GOES HERE"
}

Thay YOUR API KEY GOES HERE bằng API key cá nhân của bạn.

Trình phát hiện âm thanh AI

Detect (quy trình 3 bước)

Quy trình phát hiện âm thanh AI gồm các bước sau:

  • Lấy URL tải lên đã ký sẵn (pre-signed)
  • Tải lên tệp âm thanh
  • Gửi âm thanh để phát hiện AI

1. Lấy URL tải lên đã ký sẵn

Yêu cầu URL ký sẵn từ API để tải tệp âm thanh lên máy chủ lưu trữ an toàn.

Định dạng được hỗ trợ

MP3, WAV, M4A, FLAC, OGG, MP4

Lưu ý

Cần xóa khoảng trắng trong tên tệp âm thanh khi yêu cầu URL ký sẵn.

GET https://detect-audio.truthscan.com/get-presigned-url?file_name=example.mp3

Ví dụ yêu cầu

curl -X GET 'https://detect-audio.truthscan.com/get-presigned-url?file_name=example.mp3' \
--header 'apikey: YOUR API KEY GOES HERE'

Ví dụ phản hồi

{
  "status": "success",
  "presigned_url": "https://audio-presigned-upload.ai-assets-cdn.com?file_name=581d47c7-3ef4-42af-88d9-6dab6bf69389_20250611-121955_example.mp3...",
  "file_path": "/uploads/581d47c7-3ef4-42af-88d9-6dab6bf69389_20250901-090201_example.mp3"
}

2. Tải lên âm thanh

Dùng 'presigned_url' để tải lên bằng PUT. Đặt đúng Content-Type theo định dạng.

Lưu ý

Cần xóa khoảng trắng trong tên tệp khi tải lên.

Ví dụ yêu cầu

curl -X PUT 'https://audio-presigned-upload.ai-assets-cdn.com?file_name=581d47c7-3ef4-42af-88d9-6dab6bf69389_20250611-121955_example.mp3...' \
  --header 'Content-Type: audio/<FILE_FORMAT - mp3, wav, m4a, flac, ogg, mp4>' \
  --header 'x-amz-acl: private' \
  --data-binary '@example.mp3' # Attachment

Giới hạn kích thước

  • Tối thiểu: 1KB
  • Tối đa: 100MB

Giữ nguyên định dạng trong suốt quá trình tải. Tải thành công trả về mã 200.

3. Gửi âm thanh để phát hiện AI

Sau khi tải, gửi âm thanh phát hiện AI với 'file_path' từ bước trước.

POST https://detect-audio.truthscan.com/detect

Ví dụ yêu cầu

curl -X 'POST' \
  'https://detect-audio.truthscan.com/detect' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "key": "YOUR-API-KEY-GOES-HERE",
  "url": "<FILE_PATH>",
  "document_type": "Audio",
  "analyzeUpToSeconds": 60
}'

'FILE_PATH' là đường dẫn từ phản hồi bước 'Lấy URL tải lên đã ký sẵn'.

Tham số tùy chọn

  • analyzeUpToSeconds: Phân tích tối đa N giây từ đầu (mặc định: 60)
  • document_type: Loại tài liệu (mặc định: 'Audio')
  • email: Email tùy chọn cho xử lý

Ví dụ phản hồi

{
    "id": "77565038-9e3d-4e6a-8c80-e20785be5ee9",
    "status": "pending"
}

Phản hồi gồm ID duy nhất để theo dõi trạng thái phát hiện.

Truy vấn trạng thái và kết quả

Dùng endpoint /query với ID để kiểm tra trạng thái và lấy kết quả.

POST https://detect-audio.truthscan.com/query

Ví dụ yêu cầu

curl -X 'POST' \
  'https://detect-audio.truthscan.com/query' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": "ID-GOES-HERE"
}'

Ví dụ phản hồi

{
    "id": "00fee5ff-a55b-42fb-b7c7-d14f05ae0769",
    "status": "done",
    "result": 0.873,
    "result_details": {
        "is_valid": true,
        "message": "processed",
        "original_duration": 123.45,
        "is_truncated": true,
        "truncated_duration": 60.0,
        "mean_ai_prob": 0.873,
        "individual_chunks_ai_prob": [0.81, 0.90, 0.91]
    }
}

Chi tiết kết quả

  • is_valid: Tệp âm thanh có hợp lệ hay không (true/false)
  • message: Thông báo xử lý
  • original_duration: Độ dài (giây) của âm thanh gốc
  • is_truncated: Có cắt ngắn để phân tích hay không
  • truncated_duration: Độ dài đã phân tích nếu bị cắt
  • mean_ai_prob: Điểm xác suất AI tổng thể
  • individual_chunks_ai_prob: Điểm xác suất AI theo từng đoạn

Trường "status" là một trong: "pending" (hàng đợi), "analyzing" (đang phát hiện), "done" (có kết quả), "failed" (thất bại).

Kiểm tra credit người dùng

Endpoint nhận apikey qua header và trả về chi tiết credit.

GET https://detect-audio.truthscan.com/check-user-credits

Ví dụ yêu cầu

curl -X 'GET' \
  'https://detect-audio.truthscan.com/check-user-credits' \
  -H 'apikey: YOUR API KEY GOES HERE' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json'

Ví dụ phản hồi

{
    "baseCredits": 10000,
    "boostCredits": 1000,
    "credits": 11000
}

Kiểm tra sức khỏe

Kiểm tra trạng thái máy chủ API.

GET https://detect-audio.truthscan.com/health

Ví dụ yêu cầu

curl -X 'GET' \
  'https://detect-audio.truthscan.com/health' \
  -H 'accept: application/json'

Ví dụ phản hồi

{
    "status": "healthy"
}

Lỗi

Hầu hết lỗi do tham số gửi sai. Kiểm tra kỹ tham số từng lệnh gọi và thử mã ví dụ.

Mã lỗi chung tuân theo chuẩn REST:

Mã lỗiÝ nghĩa
400Bad Request — Yêu cầu không hợp lệ.
403Forbidden — API key không hợp lệ hoặc không đủ credit xử lý âm thanh.
404Not Found — Tài nguyên không tồn tại.
405Method Not Allowed — Truy cập tài nguyên bằng phương thức không hợp lệ.
406Not Acceptable — Định dạng yêu cầu không phải JSON.
410Gone — Tài nguyên tại endpoint này đã bị gỡ.
422Invalid Request Body — Body không đúng định dạng hoặc thiếu tham số.
429Too Many Requests — Gửi quá nhiều yêu cầu, vui lòng chậm lại.
500Internal Server Error — Lỗi máy chủ, thử lại sau.
503Service Unavailable — Bảo trì tạm thời, thử lại sau.

Sự cố thường gặp và cách xử lý

Vấn đề xác thực

"User verification failed" (403)

Nguyên nhân: API key không hợp lệ hoặc hết hạn

Cách xử lý:

  1. Xác minh API key đúng
  2. Kiểm tra API key còn hoạt động
  3. Thử tạo lại API key

"Not enough credits" (403)

Nguyên nhân: Không đủ credit xử lý âm thanh

Cách xử lý:

  1. Kiểm tra credit bằng /check-user-credits
  2. Mua thêm credit nếu cần
  3. Dùng analyzeUpToSeconds để phân tích ít giây hơn, tiêu ít credit hơn

Vấn đề xác thực đầu vào

"Unsupported file format" (400)

Nguyên nhân: Định dạng âm thanh không hỗ trợ hoặc không hợp lệ

Cách xử lý:

  1. Xác minh định dạng được hỗ trợ (MP3, WAV, M4A, FLAC, OGG, MP4)
  2. Đảm bảo tệp không hỏng
  3. Kiểm tra header Content-Type khi tải lên

"File too large" (400)

Nguyên nhân: Vượt giới hạn 100MB

Cách xử lý:

  1. Nén hoặc chuyển đổi dưới 100MB
  2. Kiểm tra kích thước trước khi tải
  3. Ưu tiên định dạng hiệu quả như MP3

Vấn đề xử lý

"Audio processing took too long"

Nguyên nhân: Xử lý quá lâu hoặc timeout

Cách xử lý:

  1. Thử tệp nhỏ hơn hoặc ngắn hơn
  2. Dùng analyzeUpToSeconds chỉ phân tích vài giây đầu
  3. Kiểm tra tải dịch vụ
  4. Thử lại sau vài phút

Trạng thái "failed" trong phản hồi /query

Nguyên nhân: Xử lý thất bại vì nhiều lý do

Cách xử lý:

  1. Kiểm tra âm thanh trong khoảng 1KB–100MB
  2. Xác minh định dạng được hỗ trợ
  3. Đảm bảo tải lên hoàn tất trước khi gửi phát hiện
  4. Liên hệ hỗ trợ nếu vẫn lỗi

Vấn đề tải lên

"Audio upload failed" (403/400)

Nguyên nhân: URL ký sẵn không hợp lệ/hết hạn hoặc lỗi máy chủ lưu trữ

Cách xử lý:

  1. Dùng URL ký sẵn ngay sau khi nhận (có thể hết hạn)
  2. Xác minh Content-Type đúng định dạng âm thanh
  3. Xóa khoảng trắng trong tên tệp trước khi tải
  4. Tạo URL ký sẵn mới nếu hết hạn

"Invalid pre-signed URL" (400)

Nguyên nhân: Tên tệp có khoảng trắng hoặc URL ký sẵn hết hạn/hỏng

Cách xử lý:

  1. Xóa mọi khoảng trắng trong tên tệp trước khi yêu cầu URL
  2. Chỉ dùng chữ số, gạch ngang và gạch dưới trong tên tệp
  3. Tạo URL ký sẵn mới nếu cần

Cần trợ giúp?

Để biết thêm về API hoặc hỗ trợ kỹ thuật, vui lòng liên hệ chúng tôi.

Câu hỏi thường gặp về API

Câu trả lời cho các câu hỏi phổ biến về API phát hiện âm thanh AI.