curl --request GET \
--url https://api.example.com/actions/version/{id}import requests
url = "https://api.example.com/actions/version/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/actions/version/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/actions/version/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/actions/version/{id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/actions/version/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/actions/version/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "urn:via:action:abc-123",
"actionId": "507f1f77bcf86cd799439011",
"version": 1,
"published": true,
"createdAt": "2025-01-01T00:00:00.000Z",
"updatedAt": "2025-01-02T00:00:00.000Z",
"digestSRI": "sha256-47DEQpj8HBSaTImW5JCeuQeRkm5NMpJWZG3hSuFU",
"content": {
"target": {
"method": "POST",
"domain": "api.stripe.com",
"path": "/v1/payment_intents"
},
"userParams": {
"amount": {
"description": "Amount to charge, in the smallest currency unit (e.g. cents)"
}
},
"executionParams": {
"currency": {
"description": "ISO 4217 currency code"
}
},
"rules": [
{
"name": "max-amount",
"description": "Reject charges above 100.00 USD",
"expression": "userParams.amount <= 10000"
}
],
"mapper": {
"amount": "amount",
"currency": "currency"
}
}
}
],
"totalPages": 1
}{
"statusCode": 400,
"message": "id is not a valid MongoDB id",
"error": "Bad Request"
}Get Versions
Retrieve a paginated list of an action’s published versions, newest first, for the action identified by the id path parameter. Each version includes its full JSON content, its digestSRI, and publication metadata; drafts are hidden from public clients. Supports pagination via pageIndex and pageSize. If the action does not exist or does not belong to the authenticated organization, an empty page is returned (data: [], totalPages: 0) rather than a 404.
curl --request GET \
--url https://api.example.com/actions/version/{id}import requests
url = "https://api.example.com/actions/version/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/actions/version/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/actions/version/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/actions/version/{id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/actions/version/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/actions/version/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "urn:via:action:abc-123",
"actionId": "507f1f77bcf86cd799439011",
"version": 1,
"published": true,
"createdAt": "2025-01-01T00:00:00.000Z",
"updatedAt": "2025-01-02T00:00:00.000Z",
"digestSRI": "sha256-47DEQpj8HBSaTImW5JCeuQeRkm5NMpJWZG3hSuFU",
"content": {
"target": {
"method": "POST",
"domain": "api.stripe.com",
"path": "/v1/payment_intents"
},
"userParams": {
"amount": {
"description": "Amount to charge, in the smallest currency unit (e.g. cents)"
}
},
"executionParams": {
"currency": {
"description": "ISO 4217 currency code"
}
},
"rules": [
{
"name": "max-amount",
"description": "Reject charges above 100.00 USD",
"expression": "userParams.amount <= 10000"
}
],
"mapper": {
"amount": "amount",
"currency": "currency"
}
}
}
],
"totalPages": 1
}{
"statusCode": 400,
"message": "id is not a valid MongoDB id",
"error": "Bad Request"
}Headers
Pin request, response, and webhook shapes to a specific dated API version (YYYY-MM-DD). Omit to use the version pinned to your API key (set when the key is created; new keys default to the latest version). New integrations should target the latest version.
^\d{4}-\d{2}-\d{2}$"2026-09-01"
Path Parameters
MongoDB id of the action whose versions to list.
"507f1f77bcf86cd799439011"
Query Parameters
Zero-based page index. 0 returns the first page.
0
Number of items per page
5 <= x <= 10010
Search query to filter by. Is case-insensitive and does not need to match the entire value.
100"example"
Filter by active status. Accepts true/false as string or boolean.
true
Response
A paginated list of the action's published versions (each with its full content and integrity digest), plus the total page count.