All nodes/Integrations/amoCRM

amoCRM REST Call

Performs an arbitrary REST request to the amoCRM API v4 (leads/contacts/deals/tasks — any method). Requires amoCRM Config via the 'amocrm_config' port. method/path/body are set in the config (templates supported).

amoCRM REST Call
amoCRM ConfigSuccess
Error

Type in the graph: amocrm_rest_call

Exec

An error branch can be enabled (expose_error_output) to handle failures on their own path.

Try it

Minimal working workflow

Entry
amoCRM REST Call
amoCRM Config
Exit
  • Execute
  • Data
  • Execute + Data
Press “Copy nodes”, open the editor and hit Ctrl+V on the canvas.

Pick your own connection or knowledge base first — the graph carries REPLACE_ME.

When to use it

One node for the whole of amoCRM: there are no separate nodes for deals, contacts or tasks — you name the method, the path and the body, and the node takes care of the account address, the authorization header and parsing the reply. Doing the same through HTTP Request is not worth it: you would assemble the host by hand and paste in a token that then lands in the run log.

This is a graph step, not an agent tool: the node has no tool_out port, so a model cannot call it. To give an agent a CRM call, wrap it in a WF Tool.

How it works

“HTTP Method” is a fixed list of verbs. “Path” and “Body (JSON)” are template fields: the path starts with a slash (/api/v4/leads, /api/v4/contacts/{{ nodes.pick.output.id }}) and the domain comes from the connection. An empty body means a request without one.

A successful reply is parsed from JSON and leaves as result — in templates, {{ nodes.<id>.output.result }}. A reply with no body yields an empty object.

Anything outside the 2xx range stops the node, and a machine-readable code travels with the message: ACCESS_DENIED for 401 and 403, NOT_FOUND for 404, RATE_LIMIT for 429, VALIDATION for the other 4xx. Turn on “Error output” and that branch receives an object with error_code, message and failed_node_id — the code is easy to branch on in an If node.

Common mistakes

  • An array body. The field accepts a JSON object only; a list (the shape amoCRM expects for batch creation) is refused with “body must be a JSON object”.
  • JSON broken by substitution. A template value lands in the body verbatim, so quote strings yourself — and an entire object is easier to build with a Template node and drop in as one expression.
  • A path without the leading slash, or with a domain. The host comes from the connection; the field holds only the path.
  • A body on a GET. Leave the field empty for reads: a non-empty body is sent even with GET.
  • Paging. amoCRM returns data in pages; page parameters are appended to the path as an ordinary query string, and the node does not fetch further pages by itself.

Inputs

PortWirePayloadNotes
amoCRM Configamocrm_configDatadata

required

Outputs

PortWirePayloadNotes
SuccessoutputExecute + Dataexecute_dataobject
Erroron_errorExecute + Dataexecute_data

shown when expose_error_output = true

Configuration

FieldTypeDefaultDescription
amoCRM connectionconnection_idstring""

Saved workspace amoCRM connection, so a one-call graph does not need a separate amoCRM Config node. A node wired to the 'amocrm_config' port wins over this field.

connection: amocrmoverridden by port: amocrm_config

HTTP MethodmethodstringGET

HTTP method for the amoCRM REST API v4 (e.g. GET, POST, PATCH)

Options: GET — GET — read, POST — POST — create, PATCH — PATCH — update, PUT — PUT — replace, DELETE — DELETE — delete

Pathpathstring""

amoCRM REST API v4 path, e.g. /api/v4/leads (templates supported)

supports templates

Body (JSON)bodystring{}

Request body as JSON (templates supported)

supports templates

Shared fields

Every node has these three — the platform adds them, not the node author.

  • expose_error_output — When enabled, show an execution output to connect nodes that run if this step fails.