Forms
Forms are built visually in the SMBcrm UI. The form builder, field layout, and styling all live there. The API gives you read access to the forms in your account and the submissions they’ve collected, plus a way to upload files that were submitted through a form.
Base URL: https://services.smbcrm.com · Version header: v3 ·
Scopes: forms.readonly (list forms and submissions), forms.write (upload files). See
Scopes.
List forms
Section titled “List forms”locationId is required. Use limit and skip to page through accounts with many forms.
curl "https://services.smbcrm.com/forms/?locationId=<location_id>&limit=20&skip=0" \ -H "Authorization: Bearer <token>" \ -H "Version: v3"{ "forms": [ { "id": "<form_id>", "name": "Contact Us", "locationId": "<location_id>" } ], "total": 1}| Query param | Type | Required | Description |
|---|---|---|---|
locationId |
string | Yes | Your SMBcrm account/location ID. |
limit |
number | No | Maximum number of forms to return per page. |
skip |
number | No | Number of forms to skip, for pagination. |
type |
string | No | Filter forms by type. |
List form submissions
Section titled “List form submissions”locationId is required. Add formId to scope results to a single form, and startAt /
endAt to filter by submission date.
curl "https://services.smbcrm.com/forms/submissions?locationId=<location_id>&formId=<form_id>&limit=20&page=1" \ -H "Authorization: Bearer <token>" \ -H "Version: v3"{ "submissions": [ { "id": "<submission_id>", "contactId": "<contact_id>", "createdAt": "2026-07-08T15:04:00.000Z", "formId": "<form_id>", "name": "Jordan Lee", "email": "jordan@example.com", "others": { "full_name": "Jordan Lee", "email": "jordan@example.com" } } ], "meta": { "total": 1, "currentPage": 1, "nextPage": null, "prevPage": null }}| Query param | Type | Required | Description |
|---|---|---|---|
locationId |
string | Yes | Your SMBcrm account/location ID. |
formId |
string | No | Limit results to submissions for one form. |
limit |
number | No | Maximum number of submissions to return per page. |
page |
number | No | Page number, starting at 1. |
q |
string | No | Search term to filter submissions. |
startAt |
string | No | Only return submissions on or after this date. |
endAt |
string | No | Only return submissions on or before this date. |
Upload a submission file
Section titled “Upload a submission file”locationId and contactId are required query parameters. Send the file itself as
multipart/form-data, not JSON — drop the Content-Type: application/json header and let
your HTTP client set the multipart boundary for you. Name the form field after the custom
field the file belongs to.
curl -X POST "https://services.smbcrm.com/forms/upload-custom-files?locationId=<location_id>&contactId=<contact_id>" \ -H "Authorization: Bearer <token>" \ -H "Version: v3" \ -F "resume=@/path/to/resume.pdf"A successful upload returns 200 OK.
| Query param | Type | Required | Description |
|---|---|---|---|
locationId |
string | Yes | Your SMBcrm account/location ID. |
contactId |
string | Yes | The contact to attach the uploaded file to. |
Related
Section titled “Related”- Contacts: fetch the contact a submission created or matched.
- Custom Fields, Values & Tags: the custom fields behind your form’s questions.
- Surveys: a similar read-only API for survey submissions.
