JavaScript Integration
Integrate Veranta API with vanilla JavaScript, Node.js, or any JavaScript framework
Using Fetch API
Modern browsers and Node.js 18+ support the native Fetch API
async function submitContactForm(formData) {
try {
const response = await fetch(
'https://veranta.app/api/v1/clinics/your-clinic/forms/contact',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': 'pk_live_your_api_key'
},
body: JSON.stringify({
firstName: formData.firstName,
lastName: formData.lastName,
email: formData.email,
phone: formData.phone,
message: formData.message,
gdprConsent: true,
marketingConsent: formData.marketingConsent || false
})
}
);
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || `HTTP error! status: ${response.status}`);
}
const result = await response.json();
console.log('Submission successful:', result);
// Show success message to user
alert(`Thank you! Your reference number is: ${result.data.referenceNumber}`);
return result;
} catch (error) {
console.error('Submission failed:', error);
// Show error message to user
if (error.message.includes('429')) {
alert('Too many submissions. Please try again later.');
} else {
alert('Unable to submit form. Please try again.');
}
throw error;
}
}
// Example usage
document.getElementById('contact-form').addEventListener('submit', async (e) => {
e.preventDefault();
const formData = {
firstName: document.getElementById('firstName').value,
lastName: document.getElementById('lastName').value,
email: document.getElementById('email').value,
phone: document.getElementById('phone').value,
message: document.getElementById('message').value,
marketingConsent: document.getElementById('marketing').checked
};
await submitContactForm(formData);
});Error Handling
Properly handle different types of errors
async function submitWithErrorHandling(formData) {
try {
const result = await submitContactForm(formData);
return { success: true, data: result };
} catch (error) {
// Parse error response
let errorMessage = 'An unexpected error occurred';
let errorDetails = {};
if (error.response) {
const errorData = await error.response.json();
errorMessage = errorData.error || errorMessage;
errorDetails = errorData.details || {};
}
// Handle specific error cases
if (error.message.includes('401')) {
errorMessage = 'API configuration error. Please contact support.';
} else if (error.message.includes('429')) {
errorMessage = 'Too many requests. Please wait before trying again.';
} else if (error.message.includes('400') && errorDetails) {
// Format validation errors
const validationErrors = Object.entries(errorDetails)
.map(([field, message]) => `${field}: ${message}`)
.join('\n');
errorMessage = `Please fix the following errors:\n${validationErrors}`;
}
return {
success: false,
error: errorMessage,
details: errorDetails
};
}
}