What an endpoint includes
Each endpoint has:name: tool label shown in Akapulu Labsurl: destination HTTP URLheaders: request headersbody: JSON payload
Akapulu Labs invokes your endpoint with the POST method and a JSON-encoded body.
Content-Type: application/json is sent by default; add Content-Type under Headers if you need a different value.Host your endpoint as an HTTP server
Your endpoint URL must point to a running HTTP server route that can accept POST requests from Akapulu Labs during live conversations.- Use a valid
https://URL for production. - The route must be publicly reachable from the internet.
For authentication, create a secret and pass it in your request Headers using
{{secret.*}}.HTTP transition behavior
HTTP endpoint tools support two transition patterns:- Simple transition: set
transition_toon the HTTP function. If the endpoint returns a successful 2xx response, the flow transitions to that node. - Dynamic transition: set
allowed_next_nodeson the HTTP function. After a successful 2xx response, Akapulu Labs reads the returned JSON fieldnext_nodeand transitions to that node.
- the endpoint response must be a JSON object
- it must include
next_node next_nodemust be a stringnext_nodemust match one of the nodes listed inallowed_next_nodes- every entry in
allowed_next_nodesmust be a valid node name in the scenario
400 or 500, the flow does not transition to any node.
If dynamic transition is configured and the response is missing next_node, returns a non-string next_node, or returns a next_node that is not in allowed_next_nodes, the tool call is treated as an error and the flow does not transition.
Tool call results are included in conversation transcripts. For failed HTTP tools, Akapulu Labs stores a sanitized error message rather than the raw upstream error text.
Create an endpoint
- Go to akapulu.com/endpoints and click Create Endpoint.
- In the Setup tab, enter:
- endpoint
name - destination
url - example:
name:Book Appointmenturl:https://api.yourcompany.com/v1/book-appointment
- endpoint
- In the Headers tab, add a JSON object for request headers.
- example:
- In Body, add a JSON object for the request payload.
- example:
- Note: You can use template variables in headers and body. Learn more in Templates and Variables.
- Note: Secret variables are allowed only in endpoint headers. Secret variables are not allowed in request bodies,
role_instruction, ortask_instruction.
- Save the endpoint and copy its endpoint ID from the details view.
- Attach the endpoint to your scenario using one of these methods:
Attach via JSON
Use your endpoint ID in node JSON: Innodes_json, endpoint references live inside each node object under:
functions[].endpoint_idfor HTTP tools
functions[].name is the tool-call name presented to the LLM. Use clear action names like book_appointment, create_lead, or lookup_order.
Example shape inside nodes json:
- set the endpoint
urlto the deployed route for your handlerhttps://my-endpoint.com/route-demo-request - Akapulu Labs will call your endpoint and return the result to the conversation flow
- JSON response will be added to llm context and will transition to the “Pricing Help” node
Attach via UI
HTTP function tool (LLM-invoked)
Use this when you want the model to decide when to call the endpoint during a node:- Open your scenario and go to the node where you want to add the tool.
- Click Add Function.
- Select the HTTP Endpoints tab in the modal.
- Choose your endpoint by name.
- Enter a clear function name and description. This is the tool metadata shown to the model when it decides whether to call the endpoint.
- Use the transition toggle at the bottom of the modal to choose Simple or Dynamic transition behavior.
- Configure the transition path for the endpoint:
- For Simple, drag the function probe to the single next node you want to enter after a successful tool result.
- For Dynamic, drag the function probe to each node you want to allow. Each connected node is added to
allowed_next_nodes.For dynamic routing, the endpoint must return JSON withnext_nodeset to one of the node names inallowed_next_nodes.

