Introducing Xano Actions
Build and share reusable visual building blocks
Xano Actions are reusable visual functions that serve as the building blocks for any workflow. Easily connect to various third-party services and modify the business logic to fit your unique use case.
Discover
Browse and discover actions created by the community. Test them directly without logging in.
Create
Build your own custom Actions and share them with anyone.
Install
Easily install Actions into your Xano workspace and integrate them seamlessly into your workflows.
Browse by category
Featured Actions
Gets all but the first element of array (or string).
Text example
provided
`
{"array": "test"}
`
returns
`
["e", "s", "t"]
`
Array example
provided
`
{"array": [1, 2, 3, 4]}
`
returns
`
[2, 3, 4]
`
John Carmack’s fast inverse square root function is a famous algorithm used in computer graphics, particularly in 3D rendering, to compute the inverse square root of a number quickly.
It was notably used in the Quake III Arena game engine to speed up computations related to lighting, shading, and physics. The function approximates the value of 1/sqrt(x) very efficiently, significantly faster than the traditional method of calculating a square root followed by division.
Function Documentation: Claude AI -> Ask a Question
Claude AI API documentation
Overview
This function sends a message request to the Claude AI API using the provided API key, prompt, and token limit. The function captures the response from the Claude API and returns it.
Inputs
claudeapikey (registry/text) Required
Description: The API key used to authenticate requests to the Claude AI API.
Example: claudeapiabc123
prompt (text) Required
Description: The prompt or message that you want to send to Claude AI as role user.
Example: What is the capital of France?
max_token (integer) Required
Description: The maximum number of tokens to be used for generating the response, Default - 1024.
Example: 1024
assistant_prompt (text) Optional
Description: The prompt or message that you want to send to Claude AI as role assistant. Default - As an enthusiastic assistant, provide clear and understandable responses.
Example: `As an enthusiastic assistant, provide clear and understandable responses
Function Stack
Try / Catch Block
Group: Claude API Request
API Request to https://api.anthropic.com/v1/messages
Purpose: Sends the prompt to the Claude AI API with the API key, prompt, assistant prompt, and token limit.
Return Value: The API response is stored as api_response.
Example:
` json
{
"model": "claude",
"message": [
{
"role": "user",
"content": "prompt"
},
{
"role": "assistant",
"content": "assistant_prompt"
}
]
}
`
Create Variable: response
Variable: var: response = var: api_response.response
Purpose: Stores the API response, including the message generated by Claude AI.
2 Error Handling (Catch)
Create Variable: response
Purpose: If the API call fails or returns an error, this block catches the error and provides an error message.
Response
The function returns the result of the Claude AI message generation, including the generated text.
Success Response
`json
{
"id": "msg_01H4x**",
"type": "message",
"role": "{role}",
"content": [
{
"type": "text",
"text": "Neural networks are a type of machine learning algorithm ..."
}
],
"model": "claude-3-opus-20240229",
"stopreason": "endturn",
"stop_sequence": null,
"usage": {
"input_tokens": 23,
"output_tokens": 219
}
}
`
Error Response
`json
{
"type": "error",
"error": {
"error": "authentication_error",
"message": "invalid x api key."
}
}
`
Example
Input
`json
{
"prompt": "{prompt}",
"maxtokens": "{maxtoken}",
"assistantprompt": "{assistantprompt}"
}
`
Output
`json
{
"id": "msg_01H4x**",
"type": "message",
"role": "{role}",
"content": [
{
"type": "text",
"text": "Neural networks are a type of machine learning algorithm ..."
}
],
"model": "claude-3-opus-20240229",
"stopreason": "endturn",
"stop_sequence": null,
"usage": {
"input_tokens": 23,
"output_tokens": 219
}
}
`
A helper function that creates a 1-click MCP install link for Cursor using URL-based authentication with Xano MCP Servers. This function generates deeplinks and various markup formats (Markdown, HTML, JSX) that allow users to install MCP servers directly into Cursor with a single click.
Input Parameters
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| mcpserverurl | string | Yes | The full URL endpoint of the Xano MCP server |
| server_name | string | Yes | Display name for the MCP server |
| server_type | enum | Yes | Type of MCP server connection |
Example Input
`json
{
"mcpserverurl": "https://x123-wu0q-dtak.n7.xano.io/x2/mcp/6vi_VA6-/mcp/sse",
"server_name": "Xano MCP Server Name",
"server_type": "sse"
}
`
Example Output
`json
{
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=Xano MCP Server Name&config=eyJ0eXBlIjoic3NlIiwidXJsIjoiaHR0cHM6Ly94MTIzLXd1MHEtZHRhay5uNy54YW5vLmlvL3gyL21jcC82dmlfVkE2LS9tY3Avc3NlIn0=",
"markdown": {
"dark": "",
"light": ""
},
"html": {
"dark": "<a href=\"cursor://anysphere.cursor-deeplink/mcp/install?name=Xano MCP Server Name&config=eyJ0eXBlIjoic3NlIiwidXJsIjoiaHR0cHM6Ly94MTIzLXd1MHEtZHRhay5uNy54YW5vLmlvL3gyL21jcC82dmlfVkE2LS9tY3Avc3NlIn0=\"><img src=\"https://cursor.com/deeplink/mcp-install-dark.svg\" alt=\"Add Xano MCP Server Name MCP server to Cursor\" height=\"32\" /></a>",
"light": "<a href=\"cursor://anysphere.cursor-deeplink/mcp/install?name=Xano MCP Server Name&config=eyJ0eXBlIjoic3NlIiwidXJsIjoiaHR0cHM6Ly94MTIzLXd1MHEtZHRhay5uNy54YW5vLmlvL3gyL21jcC82dmlfVkE2LS9tY3Avc3NlIn0=\"><img src=\"https://cursor.com/deeplink/mcp-install-light.svg\" alt=\"Add Xano MCP Server Name MCP server to Cursor\" height=\"32\" /></a>"
},
"jsx": {
"dark": "<a href=\"cursor://anysphere.cursor-deeplink/mcp/install?name=Xano MCP Server Name&config=eyJ0eXBlIjoic3NlIiwidXJsIjoiaHR0cHM6Ly94MTIzLXd1MHEtZHRhay5uNy54YW5vLmlvL3gyL21jcC82dmlfVkE2LS9tY3Avc3NlIn0=\"><img src=\"https://cursor.com/deeplink/mcp-install-dark.svg\" alt=\"Add Xano MCP Server Name MCP server to Cursor\" height=\"32\" /></a>",
"light": "<a href=\"cursor://anysphere.cursor-deeplink/mcp/install?name=Xano MCP Server Name&config=eyJ0eXBlIjoic3NlIiwidXJsIjoiaHR0cHM6Ly94MTIzLXd1MHEtZHRhay5uNy54YW5vLmlvL3gyL21jcC82dmlfVkE2LS9tY3Avc3NlIn0=\"><img src=\"https://cursor.com/deeplink/mcp-install-light.svg\" alt=\"Add Xano MCP Server Name MCP server to Cursor\" height=\"32\" /></a>"
}
}
`
Output Fields
deeplink
The raw Cursor deeplink URL that can be used programmatically or shared directly.
markdown
Ready-to-use Markdown install buttons with Cursor's official badge images:
dark: Dark theme install button
light: Light theme install button
html
HTML anchor tags with embedded install buttons:
dark: Dark theme HTML button
light: Light theme HTML button
jsx
JSX-compatible HTML for React components:
dark: Dark theme JSX button
light: Light theme JSX button
Usage Notes
The config parameter in the deeplink contains a base64-encoded JSON configuration
All markup formats include proper URL encoding for compatibility
The function supports both dark and light theme variants for different UI contexts
Install buttons use Cursor's official badge images hosted at cursor.com/deeplink/
Implementation Details
The function creates a Cursor deeplink following the format:
`
cursor://anysphere.cursor-deeplink/mcp/install?name={SERVERNAME}&config={BASE64CONFIG}
`
Where {BASE64_CONFIG} is a base64-encoded JSON object containing:
`json
{
"type": "{server_type}",
"url": "{mcpserverurl}"
}
`
Function Documentation: OpenAI -> Create a Chat Completion
OpenAI API documentation
Overview
This function generates a chat completion using the OpenAI API based on a user-provided input text. It requires parameters such as the model & input message. The function validates environment variables and conditions before making an API request and processing the response.
Inputs
openaiapikey (registry|text) Required Sensitive data
Description: The API key for your OpenAI account.
model (enum) Required
Description: Specifies the model to be used for generating the chat completion.
Options:
gpt-4o-mini (default)
gpt-4o
message (text) Required
Description: The input message or prompt that will be sent to the OpenAI API for generating the chat completion.
Function Stack
OpenAI API Request
API Request to https://api.openai.com
Purpose: Sends a request to the OpenAI API using the specified model and message.
Precondition: openaiapiresponse.status == 200
Purpose: Confirms that the API request was successful (HTTP status code 200).
OpenAI API Response
Create Variable: response
Purpose: Stores the response from the OpenAI API.
Response
The function returns the generated chat completion
Success response
`json
{"Barack Obama is 6 feet 1 inch tall (185 cm)."}
`
Error response
`json
{
"message": "Incorrect API key provided: ssk-None***GQPD. You can find your API key at https://platform.openai.com/account/api-keys."
}
`
Example
Input
`json
{ "model": "gpt-4o-mini", "message": "What is Obama's height?" }
`
Response
`json
{"Barack Obama is 6 feet 1 inch tall (185 cm)."}
`
Function Documentation: HubSpot → Create Contact
Overview
This function creates a new contact in HubSpot using specified input parameters. It involves setting environment variables, preparing the request, and handling the response.
Inputs
hubspotapikey (registry|text) Required Sensitive data
Description: The API key for your HubSpot account.
first_name (text)
Description: The first name of the contact.
last_name (text)
Description: The last name of the contact.
email (text)
Description: The email address of the contact.
company (text)
Description: The company associated with the contact.
lead_status (enum)
Description: The lead status of the contact.
Options:
NEW
OPEN
IN_PROGRESS
OPEN_DEAL
UNQUALIFIED
ATTEMPTEDTOCONTACT
CONNECTED
BAD_TIMING
contact_owner (integer)
Description: The owner of the contact.
phone_number (text)
Description: The phone number of the contact.
additional_properties (json)
Description: Additional properties in JSON format.
Schema:
`json
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
`
Function Stack
Set Properties Object
Create Variable: properties_object
Purpose: Sets properties object from input: additional_properties.
HubSpot API Request
API Request to https://api.hubapi.com/crm/v3/objects/contacts
Purpose: Sends a POST request to create a new contact in HubSpot.
Preconditions
Precondition: hubspot_api.response.status == 201
Purpose: Ensures successful creation of the contact with HTTP status code 201.
Response
The function returns the result from the HubSpot API response.
Success response
`json
{
"id": "12345678",
"properties": {
"company": "Xano",
.
.
.
},
"createdAt": "2024-09-23T13:26:23.352Z",
"updatedAt": "2024-09-23T13:26:23.352Z",
"archived": false
}
`
Error message
`json
{
"message":"Uh oh! Hubspot returned with an error: Property values were not valid: [{\"isValid\":false,\"message\":\"Property \\\"prop2\\\" does not exist\",\"error\":\"PROPERTYDOESNTEXIST\",\"name\":\"prop2\",\"localizedErrorMessage\":\"Property \\\"prop2\\\" does not exist\",\"portalId\":47373842},{\"isValid\":false,\"message\":\"Property \\\"prop1\\\" does not exist\",\"error\":\"PROPERTYDOESNTEXIST\",\"name\":\"prop1\",\"localizedErrorMessage\":\"Property \\\"prop1\\\" does not exist\",\"portalId\":47373842}]"
}
`
Example
Input
`json
{
"first_name": "Unico",
"last_name": "Connect",
"email": "imagine@xano.com",
"company": "UC",
"lead_status": "OPEN",
"contact_owner": 0,
"phone_number": "123456",
"customer_Id": 0,
"additional_properties":
{
"mobilephone":"123456"
}
}
`
Output
`json
{
"id": "123456789",
"properties": {
"company": "UC",
"createdate": "2024-09-23T13:30:40.386Z",
"email": "imagine@xano.com",
"firstname": "Unico",
"hsallcontact_vids": "60968500829",
"hscurrentlyenrolledinprospecting_agent": "false",
"hsemaildomain": "xano.com",
"hsiscontact": "true",
"hsisunworked": "true",
"hsleadstatus": "OPEN",
"hslifecyclestagelead_date": "2024-09-23T13:30:40.386Z",
"hsmarketablestatus": "false",
"hsmarketableuntil_renewal": "false",
"hsmembershiphasaccessedprivate_content": "0",
"hsobjectid": "60968500829",
"hsobjectsource": "INTEGRATION",
"hsobjectsource_id": "3898752",
"hsobjectsource_label": "INTEGRATION",
"hs_pipeline": "contacts-lifecycle-pipeline",
"hsregisteredmember": "0",
"hssearchablecalculatedmobilenumber": "123456",
"hssearchablecalculatedphonenumber": "123456",
"lastmodifieddate": "2024-09-23T13:30:40.386Z",
"lastname": "Connect",
"lifecyclestage": "lead",
"mobilephone": "123456",
"phone": "123456"
},
"createdAt": "2024-09-23T13:30:40.386Z",
"updatedAt": "2024-09-23T13:30:40.386Z",
"archived": false
}
`
Function Documentation: xAI -> Create a Chat Completion
xAI API documentation
Overview
This function generates a completion using the xAI API based on a user-provided request. It requires parameters such as the model & prompt text. The function validates environment variables and conditions before making an API request and processing the response.
Inputs
xaiapikey (registry|text) Required Sensitive data
Description: The API key for your xAI account.
model (enum) Required
Description: Specifies the model to be used for generating the completion.
Options:
Available models will be specified by xAI
message (text) Required
Description: The input prompt that will be sent to the xAI API for generating the completion.
system (text) Required
Description: Initial instructions that shape the AI's behavior, role, and response style. Sets the context and guidelines for how the AI should interact throughout the conversation on task.
Function Stack
xAI API Request
API Request to https://api.x.ai/v1/completions
Purpose: Sends a request to the xAI API using the specified model and prompt.
Precondition: xaiapiresponse.status == 200
Purpose: Confirms that the API request was successful (HTTP status code 200).
xAI API Response
Create Variable: response
Purpose: Stores the response from the xAI API.
Response
The function returns the generated completion in a structured format
Success Response
Response provided as a string.
Error Response
`json
{
"error": {
"message": "Invalid API key provided",
"type": "invalidrequesterror"
}
}
`
Example
Input
`json
{
"model": "grok-beta",
"prompt": "What is Obama's height?"
}
`
Response
`
"Barack Obama is 6 feet 1 inch tall (185 cm)."
`
Function Documentation: OpenAI -> Describe an Image from a URL
OpenAI Vision API
Overview
This function generates a description of an image using the OpenAI API based on the provided image URL. It requires parameters such as the image URL & model. The function ensures necessary environment variables are set and verifies conditions before making the API request and processing the response.
Inputs
openaiapikey (registry|text) Required Sensitive data
Description: The API key for your OpenAI account.
image_url (text) Required
Description: The URL of the image that will be sent to the OpenAI API for generating the description.
model (enum) Required
Description: Specifies the model to be used for generating the image description.
Options:
gpt-4o-mini (default)
gpt-4o
Function Stack
OpenAI API Request
API Request to https://api.openai.com
Purpose: Sends a request to the OpenAI API using the specified model and image URL.
Precondition: openaiapiresponse.status == 200
Purpose: Confirms that the API request was successful (HTTP status code 200).
OpenAI API Response
Create Variable: response
Purpose: Stores the response from the OpenAI API.
Response
The function returns the generated image description, optionally including token usage details if the showtokenusage flag is set to true.
Success response
`json
{
"The image depicts a model or miniature of a fortified castle or walled city. It features a large structure at the top, resembling a castle, with walls and towers surrounding smaller buildings that likely represent a village or town inside the fortifications. The overall layout suggests a historical or fantasy setting, commonly seen in architectural models or films."
}
`
Error response
`json
{
"message":"Invalid image."
}
`
Example
Input
`json
{
"imageurl": "https://upload.wikimedia.org/wikipedia/commons/b/b7/MedievalDurr%C3%ABs.jpg",
"model": "gpt-4o-mini",
}
`
Response
`json
{
"The image depicts a model or miniature of a fortified castle or walled city. It features a large structure at the top, resembling a castle, with walls and towers surrounding smaller buildings that likely represent a village or town inside the fortifications. The overall layout suggests a historical or fantasy setting, commonly seen in architectural models or films."
}
`
Function Documentation: Brevo → Send Single Email
Brevo API documentation
Overview
This function sends a single email using the Brevo (Sendinblue) API with HTML content. It requires inputs such as the API key, sender and receiver details, email content, and subject. The function validates and processes the input before making a request to the Brevo API.
Inputs
brevoapikey (registry/text) Required
Description: API key for authenticating with Brevo API.
Example: xkeysib-...
from (object) Required
Description: The sender's email address.
Example: sender@example.com
to (object) Required
Description: The recipient's email address.
Example: receiver@example.com
message_html (text) Required
Description: The HTML content to be sent.
Example: <html><body><h1>Hello</h1></body></html>
subject (text) Required
Description: The subject of the email.
Example: Welcome to our service!
Function Stack
Try / Catch Block
Precondition: Check Valid HTML Content
Description: Ensures the HTML content for the email is valid before proceeding.
API Request to Sendinblue
API Request to https://api.brevo.com/v3/smtp/email
Purpose: Sends the email using the Brevo (Sendinblue) API.
Return Value: The API response is stored as api_response.
Create Variable: response
Variable: var: response = var: api_response.response.result
Purpose: Stores the API response for the SMS send operation.
2 Error Handling (Catch)
Create Variable: response
Purpose: If the API call fails or returns an error, this block catches the error and provides an error message.
Response
The function returns the result of the email send operation, including status and any relevant messages.
Success Response
`json
{
"messageId": "<202410100.1236169*@smtp-relay.mailin.fr>",
}
`
Error response
`json
{
"message": "Key not found",
"code": "unauthorized"
}
`
Example
Input
`json
{
"from":{
"from_name":"John",
"from_email":"sohansakhare**@gmail.com"
},
"to":{
"to_name":"David",
"to_email":"sajankumar.*@unicoco*.com"
},
"email_html":"<html><head></head><body><p>Hello world</p></body></html>",
"subject":"abc"
}
`
Output
`json
{
"messageId": "<202410100.1236169*@smtp-relay.mailin.fr>"
}
`
Function Documentation: HubSpot → Create Deal
Overview
This function creates a new deal in HubSpot using specified input parameters. It involves setting environment variables, preparing the request with deal details, and handling the response from the HubSpot API.
Inputs
hubspotapikey (registry|text) Required Sensitive data
Description: The API key for your HubSpot account.
name (text)
Description: The name of the deal.
deal_stage (enum)
Description: The stage of the deal.
Options
appointmentscheduled
qualifiedtobuy
presentationscheduled
decisionmakerboughtin
contractsent
closedwon
closedlost
close_date (timestamp)
Description: The expected close date of the deal. A unix timestamp in milliseconds.
owner_id (integer)
Description: The ID of the owner of the deal.
amount (decimal)
Description: The amount associated with the deal.
additional_properties (json)
Description: Additional properties in JSON format for the deal.
Function Stack
Create Properties Object
Create Variable: properties_obj
Purpose: Sets properties object from input: additional_properties and other input fields.
HubSpot API Request
API Request to https://api.hubapi.com/crm/v3/objects/deals
Purpose: Sends a POST request to create a new deal in HubSpot.
Preconditions
Precondition: hubspot_api.response.status == 201
Purpose: Ensures successful creation of the deal with HTTP status code 201.
Response
The function returns the result from the HubSpot API response.
Success response
`json
{
"id": "22658811284",
"properties": {
"createdate": "2024-09-26T11:47:07.243Z",
.
.
.
},
"createdAt": "2024-09-26T11:47:07.243Z",
"updatedAt": "2024-09-26T11:47:07.243Z",
"archived": false
}
`
Error response
`json
{
"message": "Uh oh! Hubspot returned with an error: Authentication credentials not found. This API supports OAuth 2.0 authentication and you can find more details at https://developers.hubspot.com/docs/methods/auth/oauth-overview"
}
`
Example
Input
`json
{
"name": "Xano Actions",
"deal_stage": "qualifiedtobuy",
"close_date": 1729771263000,
"owner_id": 0,
"amount": 1456.55,
"additional_properties":
{
"closedwonreason": "Quick deployment"
}
}
`
Output
`json
{
"id": "22651426560",
"properties": {
"amount": "1456.55",
.
.
.
},
"createdAt": "2024-09-26T12:02:50.213Z",
"updatedAt": "2024-09-26T12:02:50.213Z",
"archived": false
}
`
Function Documentation: OpenAI → Generate an image (Simple)
OpenAI Vision API
Overview
This function generates an image using the OpenAI API based on a text prompt, with options for size and model. It is designed to take user input, validate it, and return an image URL if the request is successful.
Inputs
openaiapikey (registry | text)
Purpose: API key required to authenticate with OpenAI's image generation endpoint.
Example: "sk-...your-key-here"
prompt (text)
Purpose: The text description for the image to generate.
Example: "A futuristic city with flying cars"
img_size (enum)
Purpose: The size of the generated image.
Options:
"1024x1024"
"1024x1792"
"1792x1024"
model (enum)
Purpose: The OpenAI model to use for generating the image.
Options:
"dall-e-3"
"dall-e-2"
Function Stack
OpenAI API Request
Endpoint: https://api.openai.com/v1/images/generations
Purpose: Sends a POST request to the OpenAI API with the prompt and image size parameters.
Preconditions
Condition: openai_api.response.status == 200
Purpose: Ensures that the request was successful (HTTP 200 status code).
OpenAI API Response
Create Variable: response
Purpose: Stores the response from OpenAI API, which contains the URL of the generated image.
Response
The function returns the generated image URL or image content.
Success response
`json
{
"image_url": "https://api.openai.com/v1/images/abcd1234"
}
`
Error response
`json
{
"message": "Incorrect API key provided: ssk-None***GQPD. You can find your API key at https://platform.openai.com/account/api-keys."
}
`
Example
Input
Headers:
Authorization: Bearer openaiapikey
Body:
`json
{
"prompt": "A futuristic city with flying cars",
"size": "1024x1024",
"model": "DALL-E"
}
`
Output
`json
{
"image_url": "https://api.openai.com/v1/images/abcd1234"
}
`
WhatsApp API → Send Message via WhatsApp
Overview
This function allows you to send a WhatsApp message using the WhatsApp API by calling the Facebook Graph API. You can specify the recipient's phone number and the message content, and the function will handle sending the message to the recipient.
Inputs
whatsappaccountid (registry/text) Required
Description: The WhatsApp account ID associated with the message-sending feature.
Example: 1234567890
whatsapp_token (registry/text) Required
Description: The token or authentication key to authenticate the API request to WhatsApp.
Example: EAAkfsidlfjsdflslkn...
to_number (text) Required
Description: The recipient's phone number in international format (without '+' or '00'). For example, a US phone number would be entered as 11234567890.
Example: 11234567890
message (text) Required
Description: The content of the message that will be sent to the recipient.
Example: Hello, this is a test message from our service!
version (text) Required
Description: The API version to use when making the request to the WhatsApp Graph API.
Example: v2.8
Function Stack
API Request to WhatsApp API
API Request To: https://graph.facebook.com/{version}/{whatsappaccountid}/messages
Method: POST
Headers:
Authorization: Bearer {whatsapp_token}
Body:
`json
{
"messaging_product" : "whatsapp",
"recipient_type" : "individual",
"to": "+9183277*",
"type": "text",
"text": {
"preview_url": false,
"body": "Hello World"
}
}
`
Purpose: Sends a POST request to the WhatsApp API with the recipient's phone number and the message to be delivered.
Create Variable: response
Variable: var: response = var: api_response.response.result
Purpose: Stores the response from the Whatsapp API after sending the message.
Response
The function returns the result from the WhatsApp API.
Success Response
`json
{
"messaging_product": "whatsapp",
"contacts": [
{
"input": "+9183277*",
"wa_id": "91832770*"
}
],
"messages": [
{
"id": "wamid.HBgMOTE4MzI3N**"
}
]
}
`
Error response
`json
{
"success": false,
"error_code": 401,
"message": "Unauthorized: Invalid or missing API token."
}
`
Example
Input
`json
{
"messaging_product" : "whatsapp",
"recipient_type" : "individual",
"to": "+9183277*",
"type": "text",
"text": {
"preview_url": false,
"body": "Hello World"
}
}
`
Output
`json
{
"messaging_product": "whatsapp",
"contacts": [
{
"input": "+918327*",
"wa_id": "9183277*"
}
],
"messages": [
{
"id": "wamid.HBgMOTE4MzI3N**"
}
]
}
`
Function Documentation: Convert Api -> File Convert
Convert API documentation
Overview
This function stack handles file conversion using ConvertAPI. The function allows users to input a file URL, specify the fromformat, toformat, and file_url and returns the converted file's URL.
Inputs
convertapikey (registry/text) Required
Description: The API key used for authenticating the Convert API.
Example: xkeysib-...
from_format (enum) Required
Check Valid Format:
Description: The format to convert from (e.g., png, jpg, pdf, doc, xls, csv).
Example: pdf
to_format (enum) Required
Description: The format to convert to (e.g., png, jpg, pdf, doc, xls, csv).
Example: jpg
file_url (text) Required
Description: The URL of the file to be converted.
Example: https://example.com/sample.jpg
Function Stack
Try / Catch Block
Precondition: Checks File Format
Description: It checks from format should be same as to format.
API Request to https://v2.convertapi.com/convert/{fromformat}/to/{toformat}
Purpose: Converts the file from the fromformat to the toformat using the file URL.
Return Value: The API response is stored as api_response.
Create Variable: response
Variable: var: response = var: api_response.response.result
Purpose: Stores the API response for the convert api .
2 Error Handling (Catch)
Create Variable: response
Purpose: If the API call fails or returns an error, this block catches the error and provides an error message.
Response
The function returns the URL of the converted file from ConvertAPI, including success or error messages.
Success Response
`json
{
"ConversionCost": 1,
"Files": [
{
"FileName": "0266554465.pdf",
"FileExt": "pdf",
"FileSize": 63923,
"FileId": "wtj3krv14y87qzcoptgr9ytoj4a8evqx",
"Url": "https://v2.convertapi.com/d/wtj3krv14y87qzcoptgr9ytoj4a8evqx/0266554465.pdf"
}
]
}
`
Error Response
`json
{
"code": "invalid_parameter",
"message": "Unable to convert file. The provided file format is not supported."
}
`
Example
Input
`json
{
"from_format": "pdf",
"to_format": "jpg",
"file_url": "https://example.com/sample.pdf"
}
`
Output
`json
{
"ConversionCost": 1,
"Files": [
{
"FileName": "0266554465.pdf",
"FileExt": "pdf",
"FileSize": 63923,
"FileId": "wtj3krv14y87qzcoptgr9ytoj4a8evqx",
"Url": "https://v2.convertapi.com/d/wtj3krv14y87qzcoptgr9ytoj4a8evqx/0266554465.pdf"
}
]
}
`
Function Documentation: Postmark → Send Email with Template
Overview
This function allows you to send emails using the Postmark API with a pre-defined template. You can specify the recipient email address, the template ID, and the data to populate the template placeholders.
Inputs
postmarkbaseurl (registry|text) Required
Description: The base url for calling the Postmark API (e.g., "https://api.postmarkapp.com/").
postmarkservertoken (registry|text) Required Sensitive data
Description: This is the Postmark Server API Token (e.g., "14g8dce4-7054-47c9-a18a-2107e5cf4e41"). This is needed for authentication on endpoints.
from_email (text) Required
Description: The email address that will appear as the sender.
Example: noreply@yourdomain.com
to_emails (text) Required
Description: A list of email addresses to send the batch emails to.
Example: user1@example.com
template_id (integer) Required
Description: The ID of the Postmark template to use.
Example: 12345
template_model (json) Required
Description: The data to populate the template placeholders. The structure of this data depends on your specific Postmark template.
Example: Refer to Postmark documentation for template data structure.
Function Stack
Create Variable:
Create Variable: api_url
Purpose: Constructs the API URL for sending emails with templates.
Create Variable:
Create Variable: api_token
Purpose: Stores the Postmark API token.
Precondition:
Precondition: from_email should not exceed 255 characters.
Purpose: Ensures the sender email address is not too long.
Precondition: from_email is a valid email format.
Purpose: Ensures the sender email address is formatted correctly.
Precondition: to_email is a valid email format and allows comma-separated values.
Purpose: Ensures recipient email addresses are formatted correctly and the list is not too long.
Precondition: to_email should not exceed 50 email addresses.
Purpose: Limits the number of recipients per batch.
Postmask API Request:
API Request to: https://api.postmarkapp.com/email
Purpose: Sends a POST request to the api_url with the following payload:
`JSON
{
"from_email": "noreply@yourdomain.com",
"to_email": "user@example.com",
"template_id": 12345,
"template_model": {
"name": "John Doe",
"email": "john.doe@example.com"
}
}
`
Create Variable:
Create Variable: postmark_response
Purpose: Stores the response from the Postmark API.
Create Variable:
Create Variable: response
Purpose: Creates a response object with the result from the Postmark API.
Response
The function returns the result from the Postmark API response.
Success response
`json
{
"To": "user1@example.com",
"SubmittedAt": "2024-10-07T14:33:15.817Z",
"MessageID": "message-id-1",
"ErrorCode": 0,
"Message": "OK"
},
{
"To": "user2@example.com",
"SubmittedAt": "2024-10-07T14:33:15.817Z",
"MessageID": "message-id-2",
"ErrorCode": 0,
"Message": "OK"
}
`
Error response
`json
{
"ErrorCode": 401,
"Message": "Unauthorized: Missing or incorrect API key."
}
`
Example
Input
`json
{
"from_email": "noreply@yourdomain.com",
"to_email": "user@example.com",
"template_id": 12345,
"template_model": {
"name": "John Doe",
"email": "john.doe@example.com"
}
}
`
Output
`json
{
"To": "user@example.com",
"SubmittedAt": "2024-10-07T14:33:15.817Z",
"MessageID": "message-id-1",
"ErrorCode": 0,
"Message": "OK"
}
`
HubSpot → Get Deal
Overview
This function retrieves a specific deal from HubSpot using the deal's ID. It involves setting environment variables, preparing the request, and handling the response from the HubSpot API.
Inputs
hubspotapikey (registry|text) Required Sensitive data
Description: The API key for your HubSpot account.
deal_id (integer)
Description: The unique identifier of the deal to be retrieved.
properties (text[])
Description: A list of deal properties to retrieve.
propertieswithhistory (text[])
Description: A list of deal properties with their history to retrieve.
Function Stack
HubSpot API Request
API Request to https://api.hubapi.com/crm/v3/objects/deals/{deal_id}
Purpose: Sends a GET request to retrieve the specified deal from HubSpot.
Preconditions
Precondition: hubspot_api.response.status == 200
Purpose: Ensures successful retrieval of the deal with HTTP status code 200.
Response
The function returns the result from the HubSpot API response.
Success response
`json
{
"deal_id": 22413038713,
"properties": [],
"propertieswithhistory": [
"closedwonreason"
]
}
`
Error response
`json
{
"message": "Uh oh! Hubspot returned with an error: Authentication credentials not found. This API supports OAuth 2.0 authentication and you can find more details at https://developers.hubspot.com/docs/methods/auth/oauth-overview"
}
`
Example
Input
`json
{
"deal_id": 22413038713,
"properties": [],
"propertieswithhistory": [
"closedwonreason"
]
}
`
Output
`json
{
"id": "22413038713",
"properties": {
"amount": "1456.55",
.
.
.
},
"createdAt": "2024-09-26T12:02:50.213Z",
"updatedAt": "2024-09-26T12:02:50.213Z",
"archived": false
}
`
Featured Packages
LeDash
LeDash is a powerful Xano package inspired by Lodash, bringing its robust utility functions to the Xano ecosystem.
LeDash ensures predictable data handling by safely managing unpredictable or missing objects. Instead of errors, it returns sensible defaults (e.g., empty arrays, objects, or strings) tailored to your expected type, streamlining development and boosting reliability. Notion
The Xano Notion Actions Package is a powerful collection of zero-dependency functions that bridge the gap between your Xano backend and Notion workspaces. Keep your documentation, databases, and workflows perfectly in sync with minimal effort. Statistics
Provides core statistical functions including moments, variance, regression, distribution shape (skewness, kurtosis), and common aggregates like mean, median, percentiles, and sums. Supports both biased and unbiased calculations where relevant, making it useful for exploratory data analysis and lightweight modeling.