Import and export flows
Robility Flow allows you to export flows for backup, reuse, or sharing, and import flows to quickly load and run pre-built automations.
Exporting a Flow
You can export individual flows in the following ways:
1. Export from projects: From the Projects page, locate the flow, click More, then select Export.
2. Export by sharing: While editing a flow, click Share > Export.
3. Export with the Robility flow API: Programmatically via the API endpoint: GET /flows/download.
Exported flows are downloaded to your local machine as JSON files named FLOW_NAME.json. If you export an entire project, the JSON files are packaged in a zip archive. For more information, see Robility flow JSON file contents.
Save with My API Keys
When exporting from the Projects page or Share menu, you can select Save with my API keys to export the flow and any defined API key variables. Non-API key variables are included in the export regardless of the Save with my API keys setting.
When you or another user imports the flow to another Robility flow instance, that instance must have Robility flow global variables with the same names and valid values in order to run the flow successfully. If any variables are missing or invalid, those variables must be created or edited after importing the flow.
Import a flow
You can import Robility flow JSON files from your local machine in the following ways:
1. Import to projects: On the Projects page, click Upload a flow, and then select the Robility flow JSON file to import.
2. Import anywhere: Drag and drop Robility flow JSON files from your file explorer into your Robility flow window to import a flow from any Robility flow page.
3. Import with the Robility flow API: To import one Robility flow JSON file, use the /flows/upload/ endpoint. To import a zip archive of Robility flow JSON files, use the /projects/upload endpoint.
Run an imported flow
Once imported, your flow is ready to use. If the flow contains any global variables, make sure your Robility flow instance has global variables with the same names and valid values. For more information, see Save with my API keys.
Robility flow JSON file contents
An exported flow is downloaded to your local machine as a JSON file named FLOW_NAME.json.
Robility flow JSON files contain nodes and edges that describe components and connections, and additional metadata that describe the flow.
Nodes
Nodes represent the components that make up the flow. For example, this object represents a Chat Input component:
{
“data”: {
“description”: “Get chat inputs from the Playground.”,
“display_name”: “Chat Input”,
“id”: “ChatInput-jFwUm”,
“node”: {
“base_classes”: [“Message”],
“description”: “Get chat inputs from the Playground.”,
“display_name”: “Chat Input”,
“icon”: “MessagesSquare”,
“template”: {
“input_value”: {
“display_name”: “Text”,
“info”: “Message to be passed as input.”,
“value”: “Hello”
},
“sender”: {
“value”: “User”,
“options”: [“Machine”, “User”]
},
“sender_name”: {
“value”: “User”
},
“should_store_message”: {
“value”: true
}
}
},
“type”: “ChatInput”
},
“position”: {
“x”: 689.5720422421635,
“y”: 765.155834131403
}
}
Each node has a unique identifier in the format of NODE_NAME-UUID, such as ChatInput-jFwUm.
Entrypoint nodes, such as the ChatInput node, are the first node executed when running a flow.
Edges
Edges represent the connections between nodes.
The connection between the ChatInput node and the OpenAIModel node is represented as an edge:
{
“className”: “”,
“data”: {
“sourceHandle”: {
“dataType”: “ChatInput”,
“id”: “ChatInput-jFwUm”,
“name”: “message”,
“output_types”: [“Message”]
},
“targetHandle”: {
“fieldName”: “input_value”,
“id”: “OpenAIModel-OcXkl”,
“inputTypes”: [“Message”],
“type”: “str”
}
},
“id”: “reactflow__edge-ChatInput-jFwUm{œdataTypeœ:œChatInputœ,œidœ:œChatInput-jFwUmœ,œnameœ:œmessageœ,œoutput_typesœ:[œMessageœ]}-OpenAIModel-OcXkl{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-OcXklœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}”,
“source”: “ChatInput-jFwUm”,
“sourceHandle”: “{œdataTypeœ: œChatInputœ, œidœ: œChatInput-jFwUmœ, œnameœ: œmessageœ, œoutput_typesœ: [œMessageœ]}”,
“target”: “OpenAIModel-OcXkl”,
“targetHandle”: “{œfieldNameœ: œinput_valueœ, œidœ: œOpenAIModel-OcXklœ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}”
}
This edge shows that the ChatInput component outputs a Message type to the target node, which is the OpenAIModel node. The OpenAIModel component accepts the Message type at the input_value field.
Additional metadata and project information
Additional information about the flow is stored in the root data object.
- Metadata and project information including the name, description, and last_tested_version of the flow:
{
“name”: “Basic Prompting”,
“description”: “Perform basic prompting with an OpenAI model.”,
“tags”: [“chatbots”],
“id”: “1511c230-d446-43a7-bfc3-539e69ce05b8”,
“last_tested_version”: “1.0.19.post2”,
“gradient”: “2”,
“icon”: “Braces”
}
- Visual information about the flow defining the initial position of the flow in the workspace:
“viewport”: {
“x”: -37.61270157375441,
“y”: -155.91266341888854,
“zoom”: 0.7575251406952855
}
- Notes are comments that help you understand the flow within the workspace. They may contain links, code snippets, and other information. Notes are written in Markdown and stored as node objects.
{
“id”: “undefined-kVLkG”,
“node”: {
“description”: “## 📖 README\nPerform basic prompting with an OpenAI model.\n\n#### Quick Start\n- Add your **OpenAI API key** to the **OpenAI Model**\n- Open the **Playground** to chat with your bot.\n…”
}
}