Code Examples

Practical examples in multiple programming languages

JavaScript (Fetch API)

async function submitContactForm(formData) {
  try {
    const response = await fetch('https://codefreeform.com/api/contact-api/', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        access_key: 'ABC123',
        email: formData.email,
        message: formData.message,
        subject: formData.subject,
        name: formData.name
      })
    });

    const data = await response.json();

    if (data.success) {
      console.log('Success!', data.message);
      console.log('Submission ID:', data.submission_id);
    } else {
      console.error('Error:', data.message);
      console.error('Field errors:', data.errors);
    }
  } catch (error) {
    console.error('Network error:', error);
  }
}

// Usage
submitContactForm({
  email: 'user@example.com',
  message: 'Hello from JavaScript!',
  subject: 'Test',
  name: 'John Doe'
});

jQuery/AJAX

$('#contactForm').on('submit', function(e) {
  e.preventDefault();

  $.ajax({
    url: 'https://codefreeform.com/api/contact-api/',
    type: 'POST',
    dataType: 'json',
    data: {
      access_key: 'ABC123',
      email: $('#email').val(),
      message: $('#message').val(),
      subject: $('#subject').val(),
      name: $('#name').val()
    },
    success: function(response) {
      if (response.success) {
        $('#successMessage').text(response.message).show();
        $('#contactForm')[0].reset();
      }
    },
    error: function(xhr) {
      const data = xhr.responseJSON;
      let errorMsg = data.message || 'An error occurred';
      $('#errorMessage').text(errorMsg).show();
    }
  });
});

Python

import requests
def submit_contact_form(access_key, email, message, subject=None, **custom_fields):
    url = 'https://codefreeform.com/api/contact-api/'
    
    payload = {
        'access_key': access_key,
        'email': email,
        'message': message,
    }
    
    if subject:
        payload['subject'] = subject
    
    # Add custom fields
    payload.update(custom_fields)
    
    try:
        response = requests.post(url, json=payload)
        response.raise_for_status()
        
        data = response.json()
        
        if data.get('success'):
            print(f"✓ Success: {data['message']}")
            print(f"  Submission ID: {data['submission_id']}")
            return True
        else:
            print(f"✗ Error: {data['message']}")
            if 'errors' in data:
                for field, errors in data['errors'].items():
                    print(f"  {field}: {', '.join(errors)}")
            return False
            
    except requests.exceptions.RequestException as e:
        print(f"✗ Network error: {e}")
        return False

# Usage
submit_contact_form(
    access_key='ABC123',
    email='user@example.com',
    message='Hello from Python!',
    subject='API Test',
    name='Jane Smith',
    company='Acme Corp'
)

HTML Form

<form action="https://codefreeform.com/api/contact-api/" method="POST">
  <input type="hidden" name="access_key" value="ABC123" />
  
  <label for="email">Email:</label>
  <input type="email" id="email" name="email" required />
  
  <label for="subject">Subject:</label>
  <input type="text" id="subject" name="subject" />
  
  <label for="message">Message:</label>
  <textarea id="message" name="message" required></textarea>
  
  <button type="submit">Send Message</button>
</form>

cURL

curl -X POST https://codefreeform.com/api/contact-api/ \
  -H "Content-Type: application/json" \
  -d '{
    "access_key": "ABC123",
    "email": "user@example.com",
    "message": "Hello from cURL!",
    "subject": "Test Message",
    "name": "John Doe"
  }'

With File Upload (JavaScript)

async function submitWithFiles(formElement) {
  const formData = new FormData(formElement);
  
  // Add access key
  formData.append('access_key', 'ABC123');

  try {
    const response = await fetch('https://codefreeform.com/api/contact-api/', {
      method: 'POST',
      body: formData  // No Content-Type header needed
    });

    const data = await response.json();
    
    if (data.success) {
      alert(`Success! ${data.attachments} files uploaded.`);
    } else {
      alert('Error: ' + data.message);
    }
  } catch (error) {
    console.error('Upload failed:', error);
  }
}