Các network call có thể thất bại theo những cách khiến bạn không chắc request đã được xử lý hay chưa. Idempotency key giúp việc thử lại trở nên an toàn: gửi lại cùng request với cùng key, MADIAD Hub sẽ trả về kết quả ban đầu thay vì đăng thêm một lần nữa.
Gửi idempotency key
Thêm header Idempotency-Key với giá trị do bạn tự chọn. Lý tưởng nhất là dùng một UUID riêng cho mỗi hành động logic.
curl -X POST https://api.madiad.com/v1/posts/photos \
-H "Authorization: Bearer $MADIAD_API_KEY" \
-H "Idempotency-Key: 9f1c2e7a-4b6d-4e2a-9c10-7b3f8d5a1e22" \
-F "profile_id=prof_…" \
-F "platforms[]=instagram" \
-F "caption=Launch" \
-F "photos[]=@./launch.jpg"
Cách hoạt động
- Request đầu tiên với một key: được xử lý bình thường, kết quả được lưu lại theo key đó.
- Gửi lại cùng key: trả về kết quả đã lưu, không tạo thêm bài đăng nào.
- Key khác nhau: được xử lý như một request hoàn toàn mới.
Tạo key trước lần gửi đầu tiên và dùng lại cho mọi lần thử lại của cùng hành động đó. Tạo key mới khi thử lại sẽ làm mất tác dụng của cơ chế này.
Khi nào nên dùng
Luôn dùng với bất kỳ request nào có tạo dữ liệu mới, đặc biệt là bài đăng. Cơ chế này thiết yếu khi:
- Một client hoặc công cụ workflow (n8n, queues, cron) tự động thử lại khi timeout.
- Một webhook hoặc job có thể được giao nhiều hơn một lần.
- Người dùng nhấp đúp vào nút đăng bài.
Key được giới hạn trong phạm vi tài khoản của bạn và được ghi nhớ đủ lâu để bao phủ các khung thời gian thử lại thực tế.