Handle API errors gracefully in your integration.
{
"error": {
"type": "validation_error",
"message": "Invalid email address",
"code": "invalid_email",
"param": "customer.email",
"doc_url": "https://docs.syncbooksapp.com/errors/invalid_email"
}
}try {
const response = await syncbooks.invoices.create({
customer: 'cus_123',
amount: 1500.00
});
} catch (error) {
if (error.type === 'validation_error') {
console.log('Invalid data:', error.message);
} else if (error.type === 'rate_limit_error') {
// Wait and retry
await sleep(error.retryAfter * 1000);
} else {
// Log and alert
console.error('API Error:', error);
}
}Use idempotency keys to safely retry requests:
POST /api/v1/invoices Idempotency-Key: unique-key-123 // Same key = same result, no duplicate invoice
Tip: Use UUIDs as idempotency keys to ensure uniqueness across requests.