Pipory
Node reference

Vtiger

Vtiger node reference - all 48 operations, the credential it needs, and a worked example.

Vtiger CRM REST API. 48 operations: generic record CRUD against any module (create, get, partial update, full replace, delete, reopen, changed-since sync); VQL query plus list, find, count and phone/email lookup builders; per-module shortcuts for contacts, organizations, leads, deals and cases; lead conversion; record relationships and tags; and metadata discovery (modules, field definitions, related modules, picklist dependencies, current user).

Credential: Vtiger instanceUrl|username|accessKey - see Credentials.

Permissions

Vtiger has no scope system and no OAuth flow. The credential is HTTP Basic — a CRM username plus that user's access key, found on the user's My Preferences page in the CRM (it is not the login password, and it is regenerated, not chosen). Nothing is ticked when the key is created, so every operation below is reachable by any valid key and a refusal is never a missing checkbox on the credential.

What gates a call is the CRM user the key belongs to. Their Role decides which records they can reach at all (their own, their subordinates', or everyone's) and their Profile decides what they may do per module — the View / Create / Edit / Delete checkboxes, plus per-field visible / read-only / writable toggles — both under Settings → User Management. So the grant question here is "which user is this key for, and what is that user allowed to do in the Contacts (or Leads, or HelpDesk…) module", and the fix for a refusal is to widen that user's Profile or to issue a key for a different user. Limit the blast radius the same way: create a dedicated integration user on a restricted Profile rather than using an admin's key.

Because the module is chosen at run time rather than baked into the endpoint, the per-operation answer is only knowable against a live instance — which is why the node ships Describe a module's fields. It returns createable, updateable, deleteable and retrieveable for the calling user on that module, and each field's mandatory and editable flags. Run it against the module you are about to write to and you have the exact permission answer for that user.

Two things that look like permission errors and are not: Vtiger meters API calls per user per day by edition, so a sudden refusal on a workflow that worked yesterday is usually an exhausted quota; and elementType is case-sensitive, so contacts fails where Contacts succeeds.

Operations (48)

Records (any module)

OperationWhat it does
createCreate record
retrieveGet record by ID
reviseUpdate record fields (partial)
updateReplace record (all mandatory fields)
deleteDelete record
reopenReopen a closed record
syncGet records changed since a time

Finding records

OperationWhat it does
queryRun a VQL query
listRecordsList records in a module
findRecordsFind records by field value
countRecordsCount records
lookupFind records by phone or email

Contacts

OperationWhat it does
createContactCreate contact
retrieveContactRetrieve contact
updateContactUpdate contact
listContactsList contacts
findContactsFind contacts by field value

Organizations (Accounts)

OperationWhat it does
createAccountCreate organization
updateAccountUpdate organization
listAccountsList organizations
findAccountsFind organizations by field value
getAccountHierarchyGet organization hierarchy

Leads

OperationWhat it does
createLeadCreate lead
updateLeadUpdate lead
listLeadsList leads
findLeadsFind leads by field value
convertLeadConvert lead

Deals (Potentials)

OperationWhat it does
createPotentialCreate deal
updatePotentialUpdate deal
listPotentialsList deals
findPotentialsFind deals by field value

Cases (Tickets)

OperationWhat it does
createTicketCreate case
updateTicketUpdate case
listTicketsList cases
findTicketsFind cases by field value

Relationships

OperationWhat it does
retrieveRelatedList related records
queryRelatedQuery related records (VQL)
addRelatedLink two records
deleteRelatedUnlink two records

Tags

OperationWhat it does
addTagsAdd tags to a record
retrieveTagsGet a record's tags
deleteTagsRemove tags from a record

Metadata & discovery

OperationWhat it does
listModulesList modules
describeModuleDescribe a module's fields
listRelatedTypesList a module's related modules
getPicklistDependencyGet picklist dependency map
getCurrentUserGet the API user

Files

OperationWhat it does
retrieveFileRetrieve a file's contents

Example

Query records without hand-writing VQL

Vtiger's only list/search primitive is a SQL-like query string, and asking a workflow author to type SELECT * FROM Contacts WHERE email = 'x' LIMIT 0,100; into a text box is a bad form. findContacts composes it. Two limits worth knowing: VQL has NO bracket grouping — conditions are evaluated strictly left to right — and a query returns at most 100 rows, silently truncating above that.

Set Operation to findContacts, then fill in:

FieldValueNotes
email{{ myTrigger.email }}Composed into the WHERE clause
limit100Vtiger's hard ceiling; results above it truncate SILENTLY, so page with offset rather than raising this

Sets {{matches.records}} and {{matches.count}}.