SOFTEXIT STUDIO / DEVELOPER REFERENCE

Zapier REST API Reference

Technical reference for the authenticated REST endpoints used by the SoftEXIT Studio Zapier integration. Includes connection verification, metadata discovery, record operations, exact and paged searches, and instant webhook subscriptions.
Documentation version: 2026-10-7   |   Audience: support engineers, and integration developers.
For step-by-step connection instructions, see SoftEXIT Studio Zapier Help. This page documents HTTP methods, paths, inputs, and response structures.

1. Overview & authentication

This is the REST surface used by the SoftEXIT Studio Zapier connector. It is not a specification for the separate Studio Inbound API. Access requires an active organization integration credential and Professional-plan eligibility (or a higher plan where provided).
API root: /api/zapier. The paths below are relative to the API origin configured for the running SoftEXIT Studio integration (the connector’s https://softexit.com/studio/).
Request headers: Authorization: Bearer YOUR_API_KEY, Accept: application/json; for JSON request bodies also supply Content-Type: application/json.
Identifier convention: solutionPermanentId, tablePermanentId, recordPermanentId, and subscriptionPermanentId are stable public IDs. Examples below use placeholder UUIDs, not real IDs.
Response convention: JSON responses generally have ok and requestId. Many list endpoints use a data array. Error responses contain ok: false and error.
Authorization: Bearer YOUR_API_KEY
Accept: application/json
Content-Type: application/json

Validate connection

GET
GET /api/zapier/me
Confirms the bearer API key and returns connection identification. Zapier uses this operation to verify the account.
Example response (illustrative values):
{
  "ok": true,
  "provider": "ZAPIER",
  "integrationName": "SoftEXIT Studio",
  "organizationName": "Example Organization",
  "requestId": "req-example"
}

2. Discovery & field metadata

Zapier calls these endpoints when building Solution, Table, field, user, and lookup dropdowns. Results are limited to what the authenticated organization and integration are permitted to access.

List Solutions

GET
GET /api/zapier/solutions
Lists Solutions enabled for the integration.
Example response (illustrative values):
{
  "ok": true,
  "data": [
    {
      "id": "11111111-1111-1111-1111-111111111111",
      "name": "CRM"
    }
  ],
  "requestId": "req-example"
}

List Tables

GET
GET /api/zapier/solutions/{solutionPermanentId}/tables
Lists permitted Tables in the selected Solution.
Inputs: solutionPermanentId (path, required).
Example response (illustrative values):
{
  "ok": true,
  "data": [
    {
      "id": "22222222-2222-2222-2222-222222222222",
      "solutionPermanentId": "11111111-1111-1111-1111-111111111111",
      "name": "Contacts",
      "tableName": "Contacts"
    }
  ],
  "requestId": "req-example"
}

List eligible users

GET
GET /api/zapier/solutions/{solutionPermanentId}/users
Lists eligible active licensed Studio users available for owner/user mapping.
Inputs: solutionPermanentId (path, required).
Example response (illustrative values):
{
  "ok": true,
  "data": [
    {
      "id": "44444444-4444-4444-4444-444444444444",
      "name": "Example User (user@example.com)"
    }
  ],
  "requestId": "req-example"
}

List writable field definitions

GET
GET /api/zapier/solutions/{solutionPermanentId}/tables/{tablePermanentId}/fields
Returns dynamic writable field definitions for the chosen Table. Field availability and input types reflect the Table configuration and protection rules.
Inputs: solutionPermanentId, tablePermanentId (paths, required).
Notes: The data property contains field-description objects; their available properties vary by field type. Use the response to build supported mapping inputs. Signature, Links, Auto Number, Formula, and protected fields are not exposed as writable fields.

List search fields

GET
GET /api/zapier/solutions/{solutionPermanentId}/tables/{tablePermanentId}/search-fields
Lists text fields permitted for Find Record and Find Records queries.
Inputs: solutionPermanentId, tablePermanentId (paths, required).
Example response (illustrative values):
{
  "ok": true,
  "data": [
    {
      "id": "CustomerName",
      "name": "Customer Name",
      "fieldName": "CustomerName",
      "type": "Text"
    }
  ],
  "requestId": "req-example"
}

List Lookup choices

GET
GET /api/zapier/solutions/{solutionPermanentId}/tables/{tablePermanentId}/fields/{fieldName}/lookup-options
Retrieves the choices for a supported Lookup field, suitable for dynamic Zapier dropdowns.
Inputs: solutionPermanentId, tablePermanentId, and fieldName (paths, required).
Example response (illustrative values):
{
  "ok": true,
  "data": [
    {
      "id": "33333333-3333-3333-3333-333333333333",
      "name": "Example related record"
    }
  ],
  "requestId": "req-example"
}
Notes: Returns up to 1,000 options from the configured Lookup; some parent-filtered Lookups may not support choice discovery during setup.

3. Record creation, retrieval, search & maintenance

Record paths operate on a single selected Solution and Table. Substitute the permanent identifiers found through metadata discovery. Examples show user-defined field names for illustration only; your own Table field names will differ.

Create Record

POST
POST /api/zapier/solutions/{solutionPermanentId}/tables/{tablePermanentId}/records
Creates a record in the selected Table. The fields property contains user-configured Table field names and values.
Inputs: solutionPermanentId, tablePermanentId (paths, required); JSON body with fields (object), optional recordOwnerPermanentId.
Example request body (illustrative identifiers and field names):
{
  "fields": {
    "CustomerName": "Example Customer",
    "Email": "customer@example.com"
  },
  "recordOwnerPermanentId": "44444444-4444-4444-4444-444444444444"
}
Example response (illustrative values):
{
  "ok": true,
  "id": "33333333-3333-3333-3333-333333333333",
  "requestId": "req-example"
}
Notes: HTTP 201 on successful creation. The API also accepts field values at the top level when fields is omitted. Owner IDs are account permanent IDs; valid owner selections can be queried through the users endpoint.

Get Record

GET
GET /api/zapier/solutions/{solutionPermanentId}/tables/{tablePermanentId}/records/{recordPermanentId}
Retrieves one record by permanent Record ID.
Inputs: solutionPermanentId, tablePermanentId, recordPermanentId (paths, required).
Example response (illustrative values):
{
  "ok": true,
  "id": "33333333-3333-3333-3333-333333333333",
  "data": {
    "CustomerName": "Example Customer",
    "Email": "customer@example.com"
  },
  "requestId": "req-example"
}
Notes: A missing record returns HTTP 404.

Update Record

PATCH
PATCH /api/zapier/solutions/{solutionPermanentId}/tables/{tablePermanentId}/records/{recordPermanentId}
Updates only the supplied writable fields of an existing record. Does not replace the entire record.
Inputs: solutionPermanentId, tablePermanentId, recordPermanentId (paths, required); JSON body with fields and/or recordOwnerPermanentId.
Example request body (illustrative identifiers and field names):
{
  "fields": {
    "Email": "updated@example.com"
  }
}
Example response (illustrative values):
{
  "ok": true,
  "id": "33333333-3333-3333-3333-333333333333",
  "requestId": "req-example"
}
Notes: Record Owner can be changed or cleared by supplying the owner property. At least one field or owner change is expected by the Zapier action. A missing record returns HTTP 404.

Delete Record

DELETE
DELETE /api/zapier/solutions/{solutionPermanentId}/tables/{tablePermanentId}/records/{recordPermanentId}
Permanently deletes the selected existing record.
Inputs: solutionPermanentId, tablePermanentId, recordPermanentId (paths, required).
Example response (illustrative values):
{
  "ok": true,
  "id": "33333333-3333-3333-3333-333333333333",
  "requestId": "req-example"
}
Notes: A missing record returns HTTP 404. Confirm the record identifier before invoking this operation.

Find Record (single exact match)

GET
GET /api/zapier/solutions/{solutionPermanentId}/tables/{tablePermanentId}/records/find?fieldName={fieldName}&value={value}
Searches a supported text field for an exact value and returns the first match.
Inputs: fieldName (required string), value (required string) as query parameters, plus Solution/Table path IDs.
Example response (illustrative values):
{
  "ok": true,
  "found": true,
  "id": "33333333-3333-3333-3333-333333333333",
  "data": {
    "CustomerName": "Example Customer"
  },
  "requestId": "req-example"
}
Notes: If no match exists, returns HTTP 200 with {"ok":true,"found":false,"requestId":"..."}; no id or data is included.

Find Records (paged)

GET
GET /api/zapier/solutions/{solutionPermanentId}/tables/{tablePermanentId}/records/search?fieldName={fieldName}&value={value}&matchType=contains&page=1
Finds multiple matching records using exact match or contains, returning up to 10 records per page.
Inputs: fieldName, value (required query strings); matchType (optional: exact [default] or contains), page (optional integer, default 1); plus required Solution/Table IDs.
Example response (illustrative values):
{
  "ok": true,
  "data": [
    {
      "id": "33333333-3333-3333-3333-333333333333",
      "CustomerName": "Example Customer"
    }
  ],
  "page": 1,
  "pageSize": 10,
  "count": 1,
  "hasMore": false,
  "nextPage": null,
  "requestId": "req-example"
}
Notes: If hasMore is true, pass nextPage into a subsequent request. Page size is fixed at 10 in the current integration.

4. Instant REST Hook triggers

SoftEXIT Studio implements instant events through registered webhook subscriptions. Zapier creates a subscription when a Zap is enabled and deletes it when the Zap is disabled. New Record, Updated Record, and Deleted Record correspond to the event types below.

Get sample records

GET
GET /api/zapier/solutions/{solutionPermanentId}/tables/{tablePermanentId}/records/samples
Returns sample records for Zapier trigger setup and test runs.
Inputs: solutionPermanentId, tablePermanentId (paths, required).
Example response (illustrative values):
{
  "ok": true,
  "data": [
    {
      "id": "33333333-3333-3333-3333-333333333333",
      "CustomerName": "Example Customer"
    }
  ],
  "requestId": "req-example"
}
Notes: Returns up to three recent sample records. Instant triggers must be enabled for the Solution.

Create webhook subscription

POST
POST /api/zapier/subscriptions
Registers a Zapier delivery URL for a specific record event, Solution, and Table.
Inputs: JSON body: eventType, solutionPermanentId, tablePermanentId, targetUrl (all required).
Example request body (illustrative identifiers and field names):
{
  "eventType": "RECORD_CREATED",
  "solutionPermanentId": "11111111-1111-1111-1111-111111111111",
  "tablePermanentId": "22222222-2222-2222-2222-222222222222",
  "targetUrl": "https://hooks.zapier.com/hooks/catch/EXAMPLE"
}
Example response (illustrative values):
{
  "ok": true,
  "id": "55555555-5555-5555-5555-555555555555",
  "subscriptionPermanentId": "55555555-5555-5555-5555-555555555555",
  "eventType": "RECORD_CREATED",
  "requestId": "req-example"
}
Notes: HTTP 201 on success. Valid events: RECORD_CREATED, RECORD_UPDATED, RECORD_DELETED. The Solution must allow instant triggers.

Remove webhook subscription

DELETE
DELETE /api/zapier/subscriptions/{subscriptionPermanentId}
Unregisters the subscription with the specified permanent ID.
Inputs: subscriptionPermanentId (path, required).
Example response (illustrative values):
{
  "ok": true,
  "id": "55555555-5555-5555-5555-555555555555",
  "removed": true,
  "requestId": "req-example"
}
Notes: Returns HTTP 200. The removed boolean indicates whether a subscription was removed.

Webhook delivery format

After subscription, the SoftEXIT service sends an HTTP POST with Content-Type: application/json to the registered targetUrl. Its JSON body is a flat record snapshot, including id and recordPermanentId, plus supported field values. The deleted-record trigger delivers a snapshot captured before deletion.
{
  "id": "33333333-3333-3333-3333-333333333333",
  "recordPermanentId": "33333333-3333-3333-3333-333333333333",
  "CustomerName": "Example Customer",
  "Email": "customer@example.com"
}
The webhook body does not require the receiver to call Get Record. The event type is established by the subscription that receives it; the body’s user-defined fields depend on the Table.

5. Response codes, errors & security

HTTP 200: Successful read, update, delete, search or unsubscribe.   HTTP 201: Record created or webhook subscription created.   HTTP 400: Invalid request, parameters, payload, IDs, or disallowed field operation.   HTTP 401: Invalid or missing bearer key.   HTTP 403: Plan or integration entitlement denied; instant triggers may be disabled.   HTTP 404: Specified record does not exist for Get, Update, or Delete.   HTTP 500: Request could not be processed.
Error JSON example:
{
  "ok": false,
  "error": "Invalid or missing credentials.",
  "requestId": "req-example"
}
Request ID: Include the returned requestId when contacting SoftEXIT support; it helps correlate request activity with integration logs.
Security and access: Access is scoped to the authenticated organization, authorized Solutions, enabled Tables, and the integration’s permissions. Protected fields are not exposed as writable integration fields. Keep API keys private and rotate them if exposed.
Supported data mappings: Common writable types include Text, Indexed Text, multiline Text, Integer, Decimal, Boolean, Date, DateTime, Currency, Percentage, PickList, Barcode, Geolocation, Rating, supported Lookups, and User/Account values. Availability depends on the Table configuration. Auto Number, Formula, Signature, Links, and protected fields are not writable through this Zapier interface.

Integration support

For obtaining an API key, configuring the Zapier connection, and troubleshooting workflows, use the SoftEXIT Studio Zapier Help guide. For technical support, provide the relevant HTTP method, endpoint, status code, and request ID. Never send the API key.
Reference scope: This page describes the SoftEXIT Studio REST endpoints consumed by the Zapier connector, based on the current implementation. It does not grant access to APIs outside the enabled integration.
SoftEXIT Studio | Zapier Integration API Reference | October 2026