---
schema_version: "1"
id: 8f0759ab32c9f80d43a1c13f8ac1be83c504fa2e668dea3eff74867850fd1e61
title: Spiff Object API
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/sales-cloud/spiff/references/generated-api-specs/spiff-object-api-reference.md
canonical_url: https://developer.salesforce.com/docs/sales/spiff/references/spiff-object-api-reference
source_site: developer.salesforce.com
content_type: documentation
content_hash: a7a9151a817b115330c7b3878145b11e9acfd873de8420496dc54b52a2e209b9
products:
  - Salesforce Spiff
  - Sales Cloud
---
Spiff Object API

# Spiff Object API

Create, read, update, and delete Spiff objects and fields.

All endpoints in the Spiff Object API require a signature header, which is a HMAC-SHA256 cryptographic hash of the current time, the request body, and a secret key for your company. The signature format is `t={timestamp},v1={digest}`, where `{timestamp}` is a UTC epoch timestamp and `{digest}` is a string representation of the HMAC-SHA256 digest.

For information about generating the signature header, see [Get Started with Salesforce Spiff Import API and Object API](/docs/sales/spiff/guide/import-object-api-get-started.html).

**Version:** 1.0.0

## Servers

*   `https://{subdomain}.spiff.com/api/external_data`

Default security: signature.

## Security

*   `signature` (apiKey) HMAC-SHA256 cryptographic hash of the current time, the request body, and a secret key for your company. The signature format is `t={timestamp},v1={digest}`, where `{timestamp}` is a UTC epoch timestamp and `{digest}` is a string representation of the HMAC-SHA256 digest. See [Get Started with Salesforce Spiff Import API and Object API](/docs/sales/spiff/guide/import-object-api-get-started.html).
    *   API key in header: signature

## Operations

### GET getAllObjects

`GET /{company_id}/objects`

Operation ID: `getAllObjects`.

Returns a list of all Spiff objects.

#### Parameters

*   `subdomain` (path, string, required)
    
    The subdomain for your Spiff environment.
    
    *   If you're in the US, use `us1`.
    *   If you're in the EU, use `eu1`.
    
    _Example_
    
    ```
    us1
    ```
    
*   `company_id` (path, string (guid), required) Your company's UUID in Spiff, which you can find at **Admin » Settings » Company Settings » Company Identifiers**.
    
    _Example_
    
    ```
    e3804275-aba4-4581-ac23-5b195b1a5f52
    ```
    
*   `signature` (header, string, required) HMAC-SHA256 cryptographic hash of the current time, the request body, and a secret key for your company. The signature format is `t={timestamp},v1={digest}`, where `{timestamp}` is a UTC epoch timestamp and `{digest}` is a string representation of the HMAC-SHA256 digest. See [Get Started with Salesforce Spiff Import API and Object API](/docs/sales/spiff/guide/import-object-api-get-started.html).  
    Example: `t=1750092638,v1=d79efcece486e8de2f0384b9b07f2af6cd5859685489f6c1fd71be`.

#### Responses

*   **200** The request was successful. The response includes a list of objects and fields.
    
    Media type: `application/json`. Schema: `object`.
    
    *   `objects` (_array of Object_)
    
    _Example_
    
    ```
    {
      "objects": [
        {
          "id": "0a5de148-4864-41f3-bd59-03ee50435e14",
          "label": "User",
          "label_plural": "Users",
          "record_type": "user",
          "source": "manual",
          "fields": [
            {
              "name": "email",
              "data_type": "string"
            }
          ]
        }
      ]
    }
    ```
    
*   **400**
    
    The request was unsuccessful for one of these reasons:
    
    *   Your endpoint URL is invalid.
    *   Your import format is invalid.
    *   Your import format doesn't match your connector fields.
*   **401** The request was unsuccessful because the HMAC-SHA256 signature is invalid.
*   **404** The request was unsuccessful because we couldn't find a match for the `company_id`.

### POST createObject

`POST /{company_id}/objects`

Operation ID: `createObject`.

Creates a Spiff object and fields.

#### Parameters

*   `subdomain` (path, string, required)
    
    The subdomain for your Spiff environment.
    
    *   If you're in the US, use `us1`.
    *   If you're in the EU, use `eu1`.
    
    _Example_
    
    ```
    us1
    ```
    
*   `company_id` (path, string (guid), required) Your company's UUID in Spiff, which you can find at **Admin » Settings » Company Settings » Company Identifiers**.
    
    _Example_
    
    ```
    e3804275-aba4-4581-ac23-5b195b1a5f52
    ```
    
*   `signature` (header, string, required) HMAC-SHA256 cryptographic hash of the current time, the request body, and a secret key for your company. The signature format is `t={timestamp},v1={digest}`, where `{timestamp}` is a UTC epoch timestamp and `{digest}` is a string representation of the HMAC-SHA256 digest. See [Get Started with Salesforce Spiff Import API and Object API](/docs/sales/spiff/guide/import-object-api-get-started.html).  
    Example: `t=1750092638,v1=d79efcece486e8de2f0384b9b07f2af6cd5859685489f6c1fd71be`.

#### Request body

Values for the Spiff object and fields that you want to create.

Media type: `application/json`. Schema: `object`.

*   `object` (_ObjectPayload_)

#### Responses

*   **200** The request was successful and the object was created.
    
    Media type: `application/json`. Schema: `object`.
    
    *   `object` (_Object_)
    
    _Example_
    
    ```
    {
      "object": {
        "id": "0a5de148-4864-41f3-bd59-03ee50435e14",
        "label": "User",
        "label_plural": "Users",
        "record_type": "user",
        "source": "manual",
        "fields": [
          {
            "name": "email",
            "data_type": "string"
          }
        ]
      }
    }
    ```
    
*   **400**
    
    The request was unsuccessful for one of these reasons:
    
    *   Your endpoint URL is invalid.
    *   Your import format is invalid.
    *   Your import format doesn't match your connector fields.
*   **401** The request was unsuccessful because the HMAC-SHA256 signature is invalid.
*   **404** The request was unsuccessful because we couldn't find a match for the `company_id`.

### GET getObject

`GET /{company_id}/objects/{id}`

Operation ID: `getObject`.

Returns an individual Spiff object.

#### Parameters

*   `subdomain` (path, string, required)
    
    The subdomain for your Spiff environment.
    
    *   If you're in the US, use `us1`.
    *   If you're in the EU, use `eu1`.
    
    _Example_
    
    ```
    us1
    ```
    
*   `company_id` (path, string (guid), required) Your company's UUID in Spiff, which you can find at **Admin » Settings » Company Settings » Company Identifiers**.
    
    _Example_
    
    ```
    e3804275-aba4-4581-ac23-5b195b1a5f52
    ```
    
*   `id` (path, string, required) The ID of a record or object.
*   `signature` (header, string, required) HMAC-SHA256 cryptographic hash of the current time, the request body, and a secret key for your company. The signature format is `t={timestamp},v1={digest}`, where `{timestamp}` is a UTC epoch timestamp and `{digest}` is a string representation of the HMAC-SHA256 digest. See [Get Started with Salesforce Spiff Import API and Object API](/docs/sales/spiff/guide/import-object-api-get-started.html).  
    Example: `t=1750092638,v1=d79efcece486e8de2f0384b9b07f2af6cd5859685489f6c1fd71be`.

#### Responses

*   **200** The request was successful. The response includes the object and its fields.
    
    Media type: `application/json`. Schema: `object`.
    
    *   `object` (_Object_)
    
    _Example: same as POST /{company\_id}/objects 200 response._
    
*   **400**
    
    The request was unsuccessful for one of these reasons:
    
    *   Your endpoint URL is invalid.
    *   Your import format is invalid.
    *   Your import format doesn't match your connector fields.
*   **401** The request was unsuccessful because the HMAC-SHA256 signature is invalid.
*   **404** The request was unsuccessful because we couldn't find a match for the `company_id`.

### PUT updateObject

`PUT /{company_id}/objects/{id}`

Operation ID: `updateObject`.

Updates field values of an individual Spiff object.

#### Parameters

*   `subdomain` (path, string, required)
    
    The subdomain for your Spiff environment.
    
    *   If you're in the US, use `us1`.
    *   If you're in the EU, use `eu1`.
    
    _Example_
    
    ```
    us1
    ```
    
*   `company_id` (path, string (guid), required) Your company's UUID in Spiff, which you can find at **Admin » Settings » Company Settings » Company Identifiers**.
    
    _Example_
    
    ```
    e3804275-aba4-4581-ac23-5b195b1a5f52
    ```
    
*   `id` (path, string, required) The ID of a record or object.
*   `signature` (header, string, required) HMAC-SHA256 cryptographic hash of the current time, the request body, and a secret key for your company. The signature format is `t={timestamp},v1={digest}`, where `{timestamp}` is a UTC epoch timestamp and `{digest}` is a string representation of the HMAC-SHA256 digest. See [Get Started with Salesforce Spiff Import API and Object API](/docs/sales/spiff/guide/import-object-api-get-started.html).  
    Example: `t=1750092638,v1=d79efcece486e8de2f0384b9b07f2af6cd5859685489f6c1fd71be`.

#### Request body

The updated values for the object.

Media type: `application/json`. Schema: `object`.

*   `object` (_ObjectPayload_)

#### Responses

*   **200** The request was successful and the object's fields were updated.
    
    Media type: `application/json`. Schema: `object`.
    
    *   `object` (_Object_)
    
    _Example: same as POST /{company\_id}/objects 200 response._
    
*   **400**
    
    The request was unsuccessful for one of these reasons:
    
    *   Your endpoint URL is invalid.
    *   Your import format is invalid.
    *   Your import format doesn't match your connector fields.
*   **401** The request was unsuccessful because the HMAC-SHA256 signature is invalid.
*   **404** The request was unsuccessful because we couldn't find a match for the `company_id` or the object's `id`.
*   **422** The request was unsuccessful because the input data is invalid.

### DELETE deleteEmptyObject

`DELETE /{company_id}/objects/{id}`

Operation ID: `deleteEmptyObject`.

Deletes an empty Spiff object.

#### Parameters

*   `subdomain` (path, string, required)
    
    The subdomain for your Spiff environment.
    
    *   If you're in the US, use `us1`.
    *   If you're in the EU, use `eu1`.
    
    _Example_
    
    ```
    us1
    ```
    
*   `company_id` (path, string (guid), required) Your company's UUID in Spiff, which you can find at **Admin » Settings » Company Settings » Company Identifiers**.
    
    _Example_
    
    ```
    e3804275-aba4-4581-ac23-5b195b1a5f52
    ```
    
*   `id` (path, string, required) The ID of a record or object.
*   `signature` (header, string, required) HMAC-SHA256 cryptographic hash of the current time, the request body, and a secret key for your company. The signature format is `t={timestamp},v1={digest}`, where `{timestamp}` is a UTC epoch timestamp and `{digest}` is a string representation of the HMAC-SHA256 digest. See [Get Started with Salesforce Spiff Import API and Object API](/docs/sales/spiff/guide/import-object-api-get-started.html).  
    Example: `t=1750092638,v1=d79efcece486e8de2f0384b9b07f2af6cd5859685489f6c1fd71be`.

#### Responses

*   **200** The request was successful and the object was deleted.
    
    Media type: `application/json`. Schema: `object`.
    
    *   `object` (_Object_)
    
    _Example: same as POST /{company\_id}/objects 200 response._
    
*   **400**
    
    The request was unsuccessful for one of these reasons:
    
    *   Your endpoint URL is invalid.
    *   Your import format is invalid.
    *   Your import format doesn't match your connector fields.
*   **401** The request was unsuccessful because the HMAC-SHA256 signature is invalid.
*   **404** The request was unsuccessful because we couldn't find a match for the `company_id` or the object's `id`.
*   **422** The request was unsuccessful because the input data is invalid.

## Schemas

### Object

Represents metadata for Spiff objects and fields.

*   `id` (_string (guid)_) The ID of the Spiff object.  
    Example: `0a5de148-4864-41f3-bd59-03ee50435e14`.
*   `label` (_string_) The singular name of the Spiff object.  
    Example: `User`.
*   `label_plural` (_string_) The plural name of the Spiff object.  
    Example: `Users`.
*   `record_type` (_string_) The generic or normalized Spiff table for the object.  
    Allowed values: `account`, `asset`, `conversion_rate`, `deal_split_type`, `deal_split`, `deal_team_member`, `deal`, `event`, `generic`, `invoice`, `line_item`, `payer`, `product`, `quota`, `quota_type`, `quick_books_invoice`, `salesforce_account`, `salesforce_asset`, `salesforce_conversion_rate`, `salesforce_deal_split_type`, `salesforce_deal_split`, `salesforce_deal_team_member`, `salesforce_deal`, `salesforce_event`, `salesforce_line_item`, `salesforce_product`, `salesforce_quota`, `salesforce_quota_type`, `salesforce_task`, `salesforce_user`, `stripe_payer`, `stripe_payment`, `task`, `user`. Example: `user`.
*   `source` (_string_) The source system where the object originates.  
    Allowed values: `domo`, `looker`, `manual`, `microsoft_graph_auth`, `quickbooks_oauth2`, `salesforce`, `salesforcesandbox`, `scim`, `snowflake`, `stripe`, `webhook`. Example: `manual`.
*   `fields` (_array of object_) The fields on the object.
    *   `name` (_string_, required) The field name.  
        Example: `email`.
    *   `data_type` (_string_, required) The field's data type.  
        Allowed values: `date`, `datetime`, `integer`, `currency`, `percent`, `string`. Example: `string`.
    *   `required` (_boolean_, required) Whether the field is required when you import records.  
        Example: `true`.

### ObjectPayload

Represents the Spiff object and fields that you're modifying.

*   `label` (_string_) The name of the Spiff object.  
    Example: `Users`.
*   `record_type` (_string_, required) The generic or normalized Spiff table for the object.  
    Allowed values: `account`, `asset`, `conversion_rate`, `deal_split_type`, `deal_split`, `deal_team_member`, `deal`, `event`, `generic`, `invoice`, `line_item`, `payer`, `product`, `quota`, `quota_type`, `quick_books_invoice`, `salesforce_account`, `salesforce_asset`, `salesforce_conversion_rate`, `salesforce_deal_split_type`, `salesforce_deal_split`, `salesforce_deal_team_member`, `salesforce_deal`, `salesforce_event`, `salesforce_line_item`, `salesforce_product`, `salesforce_quota`, `salesforce_quota_type`, `salesforce_task`, `salesforce_user`, `stripe_payer`, `stripe_payment`, `task`, `user`. Example: `user`.
*   `source` (_string_) The source system where the object originates.  
    Allowed values: `domo`, `looker`, `manual`, `microsoft_graph_auth`, `quickbooks_oauth2`, `salesforce`, `salesforcesandbox`, `scim`, `snowflake`, `stripe`, `webhook`. Example: `salesforce`.
*   `fields` (_array of object_, required) The fields on the object.
    *   `name` (_string_, required) The field name.  
        Example: `email`.
    *   `data_type` (_string_, required) The field's data type.  
        Allowed values: `date`, `datetime`, `integer`, `currency`, `percent`, `string`. Example: `string`.
    *   `required` (_boolean_, required) Whether the field is required when you import records.  
        Example: `true`.