Skip to navigation

Pull records from your ERP

View as Markdown

Starts pulling records from your connected ERP into Tabs. This is the same pull the Sync button in your dashboard starts. You don’t pass an ERP or an account: Tabs uses the ERP connected to the account your API key belongs to.

What gets pulled

  • With no body, every entity type your ERP supports (listed below).
  • With entityTypes, only those types, for example ["CUSTOMER", "ITEM"]. Each one must be in your ERP’s list.
  • For each entity type, the pull fetches records created or changed in your ERP since the last successful pull of that type, going back at least 24 hours. The first pull of a type fetches every record.
  • If you have never pulled from your ERP, run one pull with no body before pulling single entity types. Items and customers can’t be saved until the accounts, currencies, departments, locations and ERP settings (METADATA) they refer to have been pulled.

Entity types each ERP accepts

  • QuickBooks: ACCOUNT, CLASS, DEPARTMENT, ITEM, CUSTOMER, INVOICE, PAYMENT, METADATA
  • NetSuite: CURRENCY, ACCOUNT, DEPARTMENT, LOCATION, ITEM, CUSTOMER, INVOICE, PAYMENT, METADATA
  • Sage Intacct: ACCOUNT, CLASS, DEPARTMENT, LOCATION, ITEM, CUSTOMER, PROJECT, ADDRESS_CONTACT, INVOICE, PAYMENT, METADATA
  • Campfire: METADATA, ACCOUNT, DEPARTMENT, ITEM, CUSTOMER, INVOICE, PAYMENT

Pulling from Rillet isn’t supported.

One pull at a time

Only one pull runs for your account at a time. If a pull is already running, including one started from the dashboard, the request returns 409 and starts nothing. Try again once it finishes.

Checking the result

The pull runs in the background. Poll GET /v3/jobs/{jobId} with the returned jobId. The job’s type is SYNC.

  • NEW or IN_PROGRESS: the pull hasn’t finished.
  • SUCCESS: the pull finished. results.data holds totals (createdCount, updatedCount, skippedCount, errorCount, totalCount) and one entry per entity type in results.data.entities. If one entity type fails, the others still run and the job is still SUCCESS, so check results.data.success, and error on each entry in results.data.entities.
  • FAILURE: the pull stopped, or never started. If it started, results.data.error says why. NetSuite accounts connected with OAuth 2.0 get FAILURE until the one-time subsidiary setup in the dashboard is finished.

Authentication

Authorizationstring
API Key authentication via header

Request

This endpoint expects an object.
entityTypeslist of enumsOptional

Entity types to pull. Leave out to pull every type your ERP supports. Each type must be one your connected ERP accepts; any other returns 400 and starts nothing.

  • QuickBooks: ACCOUNT, CLASS, DEPARTMENT, ITEM, CUSTOMER, INVOICE, PAYMENT, METADATA
  • NetSuite: CURRENCY, ACCOUNT, DEPARTMENT, LOCATION, ITEM, CUSTOMER, INVOICE, PAYMENT, METADATA
  • Sage Intacct: ACCOUNT, CLASS, DEPARTMENT, LOCATION, ITEM, CUSTOMER, PROJECT, ADDRESS_CONTACT, INVOICE, PAYMENT, METADATA
  • Campfire: METADATA, ACCOUNT, DEPARTMENT, ITEM, CUSTOMER, INVOICE, PAYMENT

Response

The pull was started
payloadobject
Response payload, will be empty when success is false
successboolean

Boolean with true=success, false=failure

messagestring

Plain-text description of the result

errorobjectOptional
json element with any error messages or warnings

Errors

400
Bad Request Error
409
Conflict Error