SalesOS

Web Forms

Web form builder and lead capture

Get all web forms

GET
/v1/web-forms

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Query Parameters

isActiveboolean
curl -X GET "https://api.salesos.org/v1/web-forms?isActive=true" \
  -H "Authorization: Bearer <token>"

[
  {}
]

Create a new web form

POST
/v1/web-forms

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired
nameRequiredstring

Form name

descriptionstring

Form description

fieldsarray<object>

Form fields configuration

settingsobject
stylingobject
redirectUrlstring

Redirect URL after submission

thankYouMessagestring

Thank you message after submission

notificationEmailsarray<string>

Email addresses to notify on submission

assignmentRuleIdstring

Assignment rule ID to apply to leads

isActiveboolean

Is form active

Default: true

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/web-forms" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "string",
    "description": "string",
    "fields": [
      {
        "name": "string",
        "label": "string",
        "type": "text",
        "required": true,
        "placeholder": "string",
        "options": [
          {
            "label": "string",
            "value": "string"
          }
        ]
      }
    ],
    "settings": {
      "submitButtonText": "string",
      "showLabels": true,
      "showPlaceholders": true,
      "enableCaptcha": true,
      "doubleOptIn": true,
      "autoResponderEnabled": true,
      "autoResponderSubject": "string",
      "autoResponderBody": "string"
    },
    "styling": {
      "backgroundColor": "string",
      "textColor": "string",
      "buttonColor": "string",
      "buttonTextColor": "string",
      "fontFamily": "string",
      "borderRadius": "string",
      "padding": "string",
      "customCss": "string"
    },
    "redirectUrl": "string",
    "thankYouMessage": "string",
    "notificationEmails": [
      "string"
    ],
    "assignmentRuleId": "string",
    "isActive": true
  }'

{}

Get global web form statistics

GET
/v1/web-forms/stats

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

curl -X GET "https://api.salesos.org/v1/web-forms/stats" \
  -H "Authorization: Bearer <token>"

{}

Get a web form by ID

GET
/v1/web-forms/{id}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
curl -X GET "https://api.salesos.org/v1/web-forms/<string>" \
  -H "Authorization: Bearer <token>"

{}

Update a web form

PATCH
/v1/web-forms/{id}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired
namestring

Form name

descriptionstring

Form description

fieldsarray<object>

Form fields configuration

settingsobject
stylingobject
redirectUrlstring

Redirect URL after submission

thankYouMessagestring

Thank you message after submission

notificationEmailsarray<string>

Email addresses to notify on submission

assignmentRuleIdstring

Assignment rule ID to apply to leads

isActiveboolean

Is form active

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X PATCH "https://api.salesos.org/v1/web-forms/<string>" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "string",
    "description": "string",
    "fields": [
      {
        "name": "string",
        "label": "string",
        "type": "text",
        "required": true,
        "placeholder": "string",
        "options": [
          {
            "label": "string",
            "value": "string"
          }
        ]
      }
    ],
    "settings": {
      "submitButtonText": "string",
      "showLabels": true,
      "showPlaceholders": true,
      "enableCaptcha": true,
      "doubleOptIn": true,
      "autoResponderEnabled": true,
      "autoResponderSubject": "string",
      "autoResponderBody": "string"
    },
    "styling": {
      "backgroundColor": "string",
      "textColor": "string",
      "buttonColor": "string",
      "buttonTextColor": "string",
      "fontFamily": "string",
      "borderRadius": "string",
      "padding": "string",
      "customCss": "string"
    },
    "redirectUrl": "string",
    "thankYouMessage": "string",
    "notificationEmails": [
      "string"
    ],
    "assignmentRuleId": "string",
    "isActive": true
  }'

{}

Activate a web form

POST
/v1/web-forms/{id}/activate

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/web-forms/<string>/activate" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"

{}

Deactivate a web form

POST
/v1/web-forms/{id}/deactivate

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/web-forms/<string>/deactivate" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"

{}

Clone a web form

POST
/v1/web-forms/{id}/clone

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/web-forms/<string>/clone" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{}'

Get embed code for the form

GET
/v1/web-forms/{id}/embed-code

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
curl -X GET "https://api.salesos.org/v1/web-forms/<string>/embed-code" \
  -H "Authorization: Bearer <token>"

Regenerate form slug

POST
/v1/web-forms/{id}/regenerate-slug

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/web-forms/<string>/regenerate-slug" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"

Get form statistics

GET
/v1/web-forms/{id}/stats

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
curl -X GET "https://api.salesos.org/v1/web-forms/<string>/stats" \
  -H "Authorization: Bearer <token>"

{}

Get form submissions

GET
/v1/web-forms/{id}/submissions

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring

Query Parameters

statusstring
Value in: "PENDING" | "PROCESSED" | "FAILED" | "DUPLICATE" | "SPAM"
pagenumber
limitnumber
curl -X GET "https://api.salesos.org/v1/web-forms/<string>/submissions?status=PENDING&page=0&limit=0" \
  -H "Authorization: Bearer <token>"

Get a specific submission

GET
/v1/web-forms/{id}/submissions/{submissionId}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
submissionIdRequiredstring
curl -X GET "https://api.salesos.org/v1/web-forms/<string>/submissions/<string>" \
  -H "Authorization: Bearer <token>"

Delete a submission

DELETE
/v1/web-forms/{id}/submissions/{submissionId}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
submissionIdRequiredstring
curl -X DELETE "https://api.salesos.org/v1/web-forms/<string>/submissions/<string>" \
  -H "Authorization: Bearer <token>"

Get public form data by slug

GET
/v1/web-forms/public/{slug}

Path Parameters

slugRequiredstring
curl -X GET "https://api.salesos.org/v1/web-forms/public/<string>"

Submit a web form (public endpoint)

POST
/v1/web-forms/public/{slug}/submit

Request Body

application/jsonRequired
dataRequiredobject

Form field values

Path Parameters

slugRequiredstring

Header Parameters

user-agentRequiredstring
refererRequiredstring
Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/web-forms/public/<string>/submit" \
  -H "user-agent: <string>" \
  -H "referer: <string>" \
  -H "Idempotency-Key: <string>" \
  -H "Content-Type: application/json" \
  -d '{
    "data": {}
  }'