Simplio3D

Quote Submissions

Submit and manage quote requests. Each submission captures the customer's form data, configuration selections, calculated pricing, and optional screenshot.

Submit a Quote (Public)

POST/projects/:id/quote-submissions

This endpoint can be used without authentication for public-facing configurators.

const response = await fetch(BASE_URL + '/projects/proj_123/quote-submissions', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    formData: {
      name: 'Jane Smith',
      email: '[email protected]',
      phone: '+1 555 0123',
      message: 'Interested in bulk pricing for 50 units.'
    },
    configuration: {
      selections: {
        dropdownSelections: { 'blk_frame': 'black', 'blk_wood': 'walnut' },
        selectMaterialSelections: { 'blk_fabric': 'linen' },
        checkboxSelections: { 'blk_accessories': ['cup-holder', 'monitor-stand'] },
        toggleSwitchSelections: { 'blk_armrests': 'with' },
        carouselSelections: {}
      },
      variables: { width: 160, quantity: 50 },
      screenshotUrl: 'https://cdn.example.com/screenshots/config_abc.png'
    }
  })
});

const data = await response.json();
// {
//   "success": true,
//   "submission": {
//     "id": "qs_123",
//     "projectId": "proj_123",
//     "status": "new",
//     "customerName": "Jane Smith",
//     "customerEmail": "[email protected]",
//     "submittedAt": "2026-03-10T15:30:00Z"
//   }
// }

List Quote Submissions

GET/projects/:id/quote-submissions
const response = await fetch(BASE_URL + '/projects/proj_123/quote-submissions', {
  headers: { 'Authorization': 'Bearer ' + accessToken }
});

const data = await response.json();
// {
//   "success": true,
//   "submissions": [
//     {
//       "id": "qs_123",
//       "status": "new",
//       "customerName": "Jane Smith",
//       "customerEmail": "[email protected]",
//       "formData": { ... },
//       "configuration": { "selections": { ... }, "pricing": { "totalPrice": 1019.99 } },
//       "submittedAt": "2026-03-10T15:30:00Z"
//     }
//   ]
// }

Update Submission Status

PUT/projects/:id/quote-submissions/:submissionId
const response = await fetch(BASE_URL + '/projects/proj_123/quote-submissions/qs_123', {
  method: 'PUT',
  headers: {
    'Authorization': 'Bearer ' + accessToken,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    status: 'replied'  // 'new' | 'viewed' | 'replied' | 'archived'
  })
});

Delete Submission

DELETE/projects/:id/quote-submissions/:submissionId
const response = await fetch(BASE_URL + '/projects/proj_123/quote-submissions/qs_123', {
  method: 'DELETE',
  headers: { 'Authorization': 'Bearer ' + accessToken }
});

Continue reading