cURL
curl -X PUT "https://production.runalloy.com/workflows/{workflowId}/upgrade?userId={{userId}}" \
-H "Authorization: bearer YOUR_API_KEY" \
-H "x-api-version: 2025-09"import requests
url = "https://production.runalloy.com/workflows/{workflowId}/upgrade"
params = {"userId": "{{userId}}"}
headers = {
"Authorization": "bearer YOUR_API_KEY",
"x-api-version": "2025-09"
}
response = requests.put(url, params=params, headers=headers)
print(response.json())const userId = "{{userId}}";
const workflowId = "{workflowId}";
const url = `https://production.runalloy.com/workflows/${workflowId}/upgrade?userId=${userId}`;
fetch(url, {
method: "PUT",
headers: {
"Authorization": "bearer YOUR_API_KEY",
"x-api-version": "2025-09"
}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));<?php
$userId = "{{userId}}";
$workflowId = "{workflowId}";
$url = "https://production.runalloy.com/workflows/{$workflowId}/upgrade?userId=" . urlencode($userId);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: bearer YOUR_API_KEY",
"x-api-version: 2025-09"
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
?>package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
userId := "{{userId}}"
workflowId := "{workflowId}"
baseURL := "https://production.runalloy.com/workflows/" + workflowId + "/upgrade"
params := url.Values{}
params.Add("userId", userId)
fullURL := baseURL + "?" + params.Encode()
req, _ := http.NewRequest("PUT", fullURL, nil)
req.Header.Set("Authorization", "bearer YOUR_API_KEY")
req.Header.Set("x-api-version", "2025-09")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var data map[string]interface{}
json.Unmarshal(body, &data)
fmt.Println(data)
}import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import com.google.gson.Gson;
import java.util.Map;
public class Example {
public static void main(String[] args) throws Exception {
String userId = "{{userId}}";
String workflowId = "{workflowId}";
String baseUrl = "https://production.runalloy.com/workflows/" + workflowId + "/upgrade";
String urlString = baseUrl + "?userId=" + java.net.URLEncoder.encode(userId, "UTF-8");
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("PUT");
conn.setRequestProperty("Authorization", "bearer YOUR_API_KEY");
conn.setRequestProperty("x-api-version", "2025-09");
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
Gson gson = new Gson();
Map<String, Object> data = gson.fromJson(response.toString(), Map.class);
System.out.println(data);
}
}require 'net/http'
require 'json'
require 'uri'
userId = "{{userId}}"
workflowId = "{workflowId}"
base_url = "https://production.runalloy.com/workflows/#{workflowId}/upgrade"
uri = URI(base_url)
params = { userId: userId }
uri.query = URI.encode_www_form(params)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Put.new(uri)
request['Authorization'] = 'bearer YOUR_API_KEY'
request['x-api-version'] = '2025-09'
response = http.request(request)
data = JSON.parse(response.body)
puts data{
"upgraded": true
}"{}"Workflows
Upgrade a workflow
This endpoint allows you as the ISV to upgrade the workflow for a specified end user.
In order to upgrade a workflow via this endpoint, the new workflow must have the same configurable fields as the original. If any new configurable fields were added, you will not be able to upgrade the workflow programmatically and instead would need to reinstall the workflow for the end user.
PUT
/
workflows
/
{workflowId}
/
upgrade
cURL
curl -X PUT "https://production.runalloy.com/workflows/{workflowId}/upgrade?userId={{userId}}" \
-H "Authorization: bearer YOUR_API_KEY" \
-H "x-api-version: 2025-09"import requests
url = "https://production.runalloy.com/workflows/{workflowId}/upgrade"
params = {"userId": "{{userId}}"}
headers = {
"Authorization": "bearer YOUR_API_KEY",
"x-api-version": "2025-09"
}
response = requests.put(url, params=params, headers=headers)
print(response.json())const userId = "{{userId}}";
const workflowId = "{workflowId}";
const url = `https://production.runalloy.com/workflows/${workflowId}/upgrade?userId=${userId}`;
fetch(url, {
method: "PUT",
headers: {
"Authorization": "bearer YOUR_API_KEY",
"x-api-version": "2025-09"
}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));<?php
$userId = "{{userId}}";
$workflowId = "{workflowId}";
$url = "https://production.runalloy.com/workflows/{$workflowId}/upgrade?userId=" . urlencode($userId);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: bearer YOUR_API_KEY",
"x-api-version: 2025-09"
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
?>package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
userId := "{{userId}}"
workflowId := "{workflowId}"
baseURL := "https://production.runalloy.com/workflows/" + workflowId + "/upgrade"
params := url.Values{}
params.Add("userId", userId)
fullURL := baseURL + "?" + params.Encode()
req, _ := http.NewRequest("PUT", fullURL, nil)
req.Header.Set("Authorization", "bearer YOUR_API_KEY")
req.Header.Set("x-api-version", "2025-09")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var data map[string]interface{}
json.Unmarshal(body, &data)
fmt.Println(data)
}import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import com.google.gson.Gson;
import java.util.Map;
public class Example {
public static void main(String[] args) throws Exception {
String userId = "{{userId}}";
String workflowId = "{workflowId}";
String baseUrl = "https://production.runalloy.com/workflows/" + workflowId + "/upgrade";
String urlString = baseUrl + "?userId=" + java.net.URLEncoder.encode(userId, "UTF-8");
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("PUT");
conn.setRequestProperty("Authorization", "bearer YOUR_API_KEY");
conn.setRequestProperty("x-api-version", "2025-09");
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
Gson gson = new Gson();
Map<String, Object> data = gson.fromJson(response.toString(), Map.class);
System.out.println(data);
}
}require 'net/http'
require 'json'
require 'uri'
userId = "{{userId}}"
workflowId = "{workflowId}"
base_url = "https://production.runalloy.com/workflows/#{workflowId}/upgrade"
uri = URI(base_url)
params = { userId: userId }
uri.query = URI.encode_www_form(params)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Put.new(uri)
request['Authorization'] = 'bearer YOUR_API_KEY'
request['x-api-version'] = '2025-09'
response = http.request(request)
data = JSON.parse(response.body)
puts data{
"upgraded": true
}"{}"Headers
The version of the API to use. The current API version is 2025-09.
Path Parameters
Id of the parent workflow in which you are upgrading for the end user
Query Parameters
Id of the end user you wish to upgrade the workflow for
Response
200
Example:
true
⌘I

