CRM Providers & Fields

A crm tool works on the CRM connected to your account. These two endpoints give you what its crmAction needs: the CRM’s id, and the fields the AI may read or update.

List connected CRMs

GET/v2.0/tools/crm/providers

Returns the CRMs connected to your account. Use an id as crmAction.providerId. Scope: tools:read.

cURL
curl https://api.sendiee.com/v2.0/tools/crm/providers \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "success": true,
  "data": [
    {
      "id": "6a1000000000000000000001",
      "name": "Datox",
      "capabilities": [
        "fields",
        "lookup",
        "update",
        "task"
      ],
      "lastSuccessAt": "2026-11-01T10:42:00.000Z",
      "lastFailureAt": null,
      "lastError": ""
    }
  ]
}

Provider fields

ParameterTypeDescription
idstringUse as crmAction.providerId.
namestringThe CRM's display name.
capabilitiesarrayWhat the CRM supports: fields, lookup, update, task. A tool whose action the CRM does not support fails when the AI calls it.
lastSuccessAt / lastFailureAtstring | nullWhen Sendiee last reached the CRM, and when a call last failed.
lastErrorstringThe last failure, empty when the latest call worked.

Get a CRM’s fields

GET/v2.0/tools/crm/providers/:providerId/fields

Asks the CRM for the fields on its customer record. Copy the entries you want into crmAction.fields as { key, label, type, options }, and add a hint to tell the AI when to use each one. Scope: tools:read.

cURL
curl https://api.sendiee.com/v2.0/tools/crm/providers/6a1000000000000000000001/fields \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "success": true,
  "provider": {
    "id": "6a1000000000000000000001",
    "name": "Datox"
  },
  "data": {
    "object": {
      "key": "lead",
      "label": "Lead"
    },
    "fields": [
      {
        "key": "city",
        "label": "City",
        "type": "text",
        "options": [],
        "read": true,
        "write": true
      },
      {
        "key": "service",
        "label": "Service",
        "type": "select",
        "options": [
          {
            "value": "CLEANING",
            "label": "Cleaning"
          },
          {
            "value": "WHITENING",
            "label": "Whitening"
          }
        ],
        "read": true,
        "write": true
      },
      {
        "key": "phone",
        "label": "Phone",
        "type": "phone",
        "options": [],
        "read": true,
        "write": false
      }
    ]
  }
}

Field entries

ParameterTypeDescription
keystringThe CRM's field key.
labelstringThe name people see in the CRM.
typestringtext | long_text | number | boolean | date | datetime | select | multi_select | email | phone | currency | name | person.
optionsarrayFor select and multi_select: the choices as { value, label }. Empty for other types.
readbooleanA lookup tool may use this field.
writebooleanAn update tool may use this field. The CRM's admin allows it, and the type can be written: long_text, phone and person fields are read only.

Errors

Errors use the usual { error, code, message } shape.

StatusCodeMeaning
404PROVIDER_NOT_FOUNDNo CRM with this id on your account
403FEATURE_NOT_ENABLEDCRM tools are not enabled for this account
409PROVIDER_DISCONNECTEDThe CRM is no longer connected. Reconnect it from the CRM
409PROVIDER_DISABLEDThe CRM is turned off
422The CRM’s own codeThe CRM refused the request; the message is the CRM’s
503PROVIDER_UNREACHABLEThe CRM did not answer within 10 seconds. Try again later
503PROVIDER_BAD_RESPONSEThe CRM answered with something Sendiee could not read