List processes
GET /organizations/{org_id}/runs
This endpoint retrieves a list of process instances (runs) within the specified organization. It supports various filters through query parameters.
Replace {org_id}
with your actual Organization ID.
Authorization: Bearer {your_access_token}
Accept: application/json
X-Tallyfy-Client: APIClient
This endpoint offers several parameters to filter the results. Refer to the GET /organizations/{org}/runs
definition in Swagger for the full list. Common parameters include:
q
(string): Search term for process name.status
(string): Filter by status (e.g.,active
,problem
,delayed
,complete
,archived
).owners
(string): Comma-separated list of User IDs to filter by process owner.checklist_id
(string): Filter processes launched from a specific template ID.folder
(string): Filter processes within a specific folder ID.tag
(string): Filter processes by a specific Tag ID.starred
(boolean): Filter by starred status.type
(string): Filter by type (e.g.,procedure
,form
).groups
(string): Comma-separated list of Group IDs involved in tasks within the process.task_status
(string): Filter processes based on the status of tasks within them (e.g.,in-progress
,completed
).with
(string): Comma-separated list to include related data (e.g.,checklist
,tasks
,tags
,assets
).page
(integer): For pagination, the page number to retrieve (default: 1).per_page
(integer): For pagination, the number of results per page (default: 10).sort
(string): Field to sort by (e.g.,name
,created_at
,-created_at
for descending).
const accessToken = 'YOUR_PERSONAL_ACCESS_TOKEN';const orgId = 'YOUR_ORGANIZATION_ID';
// Construct query parametersconst params = new URLSearchParams({ status: 'active', // Example: Get only active processes // q: 'Onboarding', // Example: Search for name containing "Onboarding" // checklist_id: 'template_id_example', per_page: '5' // Example: Limit to 5 results per page});const queryStr = params.toString();const apiUrl = `https://go.tallyfy.com/api/organizations/${orgId}/runs${queryStr ? '?' + queryStr : ''}`;
const headers = new Headers();headers.append('Authorization', `Bearer ${accessToken}`);headers.append('Accept', 'application/json');headers.append('X-Tallyfy-Client', 'APIClient');
fetch(apiUrl, { method: 'GET', headers: headers}).then(response => { return response.json().then(data => { // Attempt to parse JSON regardless of status if (!response.ok) { console.error("Failed to list processes:", data); throw new Error(`HTTP error! status: ${response.status}`); } return data; // Pass successful data along });}).then(data => { console.log('Successfully listed processes:'); console.log(JSON.stringify(data, null, 2)); // Access pagination info via data.meta.pagination if needed}).catch(error => { console.error('Error listing processes:', error.message);});
import requestsimport jsonimport os
access_token = os.environ.get('TALLYFY_ACCESS_TOKEN', 'YOUR_PERSONAL_ACCESS_TOKEN')org_id = os.environ.get('TALLYFY_ORG_ID', 'YOUR_ORGANIZATION_ID')api_url = f'https://go.tallyfy.com/api/organizations/{org_id}/runs'
headers = { 'Authorization': f'Bearer {access_token}', 'Accept': 'application/json', 'X-Tallyfy-Client': 'APIClient'}
# Define query parametersparams = { 'status': 'active', # Example: Only active processes 'per_page': 10, 'page': 1, # 'q': 'ACME Corp', # 'checklist_id': 'template_id_abc', # 'with': 'tags' # Example: Include tags}
response = Nonetry: response = requests.get(api_url, headers=headers, params=params) response.raise_for_status() # Raises HTTPError for bad responses (4xx or 5xx)
processes_data = response.json() print('Successfully listed processes:') print(json.dumps(processes_data, indent=4)) # Access pagination: processes_data.get('meta', {}).get('pagination')
except requests.exceptions.HTTPError as http_err: print(f"HTTP error occurred listing processes: {http_err}") if response is not None: print(f"Response Body: {response.text}")except requests.exceptions.RequestException as req_err: print(f"Request failed listing processes: {req_err}")except json.JSONDecodeError: print("Failed to decode JSON response when listing processes") if response is not None: print(f"Response Text: {response.text}")except Exception as err: print(f"An unexpected error occurred: {err}")
import java.net.URI;import java.net.URLEncoder;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.io.IOException;import java.nio.charset.StandardCharsets;import java.time.Duration;import java.util.Map;import java.util.HashMap; // Use HashMap for mutable mapimport java.util.stream.Collectors;
public class ListProcesses {
public static void main(String[] args) { String accessToken = System.getenv().getOrDefault("TALLYFY_ACCESS_TOKEN", "YOUR_PERSONAL_ACCESS_TOKEN"); String orgId = System.getenv().getOrDefault("TALLYFY_ORG_ID", "YOUR_ORGANIZATION_ID"); String baseUrl = "https://go.tallyfy.com/api/organizations/" + orgId + "/runs";
// Define query parameters Map<String, String> queryParamsMap = new HashMap<>(); queryParamsMap.put("status", "active"); queryParamsMap.put("per_page", "5"); // queryParamsMap.put("q", "Search Term");
String queryParamsString = queryParamsMap.entrySet().stream() .map(entry -> URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8) + "=" + URLEncoder.encode(entry.getValue(), StandardCharsets.UTF_8)) .collect(Collectors.joining("&", "?", ""));
String apiUrl = baseUrl + (queryParamsMap.isEmpty() ? "" : queryParamsString);
HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build();
HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(apiUrl)) .header("Authorization", "Bearer " + accessToken) .header("Accept", "application/json") .header("X-Tallyfy-Client", "APIClient") .GET() .build();
try { HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) { System.out.println("Successfully listed processes:"); System.out.println(response.body()); // TODO: Consider parsing JSON response using Jackson/Gson // Access pagination: Use jsonNode.path("meta").path("pagination") } else { System.err.println("Failed to list processes. Status: " + response.statusCode()); System.err.println("Response Body: " + response.body()); } } catch (IOException | InterruptedException e) { System.err.println("Request failed: " + e.getMessage()); Thread.currentThread().interrupt(); } catch (Exception e) { System.err.println("An unexpected error occurred: " + e.getMessage()); e.printStackTrace(); } }}
package main
import ( "bytes" "encoding/json" "fmt" "io/ioutil" "net/http" "net/url" "os" "time")
func main() { accessToken := os.Getenv("TALLYFY_ACCESS_TOKEN") if accessToken == "" { accessToken = "YOUR_PERSONAL_ACCESS_TOKEN" } orgId := os.Getenv("TALLYFY_ORG_ID") if orgId == "" { orgId = "YOUR_ORGANIZATION_ID" } baseURL := fmt.Sprintf("https://go.tallyfy.com/api/organizations/%s/runs", orgId)
// Define query parameters queryParams := url.Values{} queryParams.Add("status", "active") queryParams.Add("per_page", "10") queryParams.Add("with", "tags") // Example: include tags
apiUrl := baseURL if len(queryParams) > 0 { apiUrl += "?" + queryParams.Encode() }
client := &http.Client{Timeout: 15 * time.Second} req, err := http.NewRequest("GET", apiUrl, nil) if err != nil { fmt.Printf("Error creating request: %v\n", err) return }
req.Header.Set("Authorization", "Bearer "+accessToken) req.Header.Set("Accept", "application/json") req.Header.Set("X-Tallyfy-Client", "APIClient")
resp, err := client.Do(req) if err != nil { fmt.Printf("Error making GET request: %v\n", err) return } defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Printf("Error reading response body: %v\n", err) return }
if resp.StatusCode != http.StatusOK { fmt.Printf("Failed to list processes. Status: %d\nBody: %s\n", resp.StatusCode, string(body)) return }
fmt.Println("Successfully listed processes:") // Pretty print JSON response var prettyJSON bytes.Buffer if err := json.Indent(&prettyJSON, body, "", " "); err == nil { fmt.Println(prettyJSON.String()) } else { fmt.Println(string(body)) } // TODO: Unmarshal JSON into a slice of process structs if needed}
#include <iostream>#include <string>#include <cpprest/http_client.h>#include <cpprest/json.h>
using namespace web;using namespace web::http;using namespace web::http::client;using namespace web::json;
pplx::task<void> ListTallyfyProcesses(){ utility::string_t accessToken = U("YOUR_PERSONAL_ACCESS_TOKEN"); utility::string_t orgId = U("YOUR_ORGANIZATION_ID");
uri_builder builder(U("https://go.tallyfy.com/api/organizations/")); builder.append_path(orgId); builder.append_path(U("runs")); builder.append_query(U("status"), U("active")); // Example query parameter builder.append_query(U("per_page"), 5); builder.append_query(U("with"), U("tags")); utility::string_t apiUrl = builder.to_string();
http_client client(apiUrl); http_request request(methods::GET);
request.headers().add(U("Authorization"), U("Bearer ") + accessToken); request.headers().add(U("Accept"), U("application/json")); request.headers().add(U("X-Tallyfy-Client"), U("APIClient"));
return client.request(request).then([](http_response response) { return response.extract_json().then([response](pplx::task<value> task) { try { value const & body = task.get(); if (response.status_code() == status_codes::OK) { std::wcout << L"Successfully listed processes:\n" << body.serialize() << std::endl; // Access data: body[U("data")].as_array() // Access pagination: body[U("meta")][U("pagination")] } else { std::wcerr << L"Failed to list processes. Status: " << response.status_code() << L"\nResponse: " << body.serialize() << std::endl; } } catch (const http_exception& e) { std::wcerr << L"HTTP exception during list processes: " << e.what() << std::endl; } catch (const std::exception& e) { std::wcerr << L"Exception during list processes response handling: " << e.what() << std::endl; } }); });}
int main() { try { ListTallyfyProcesses().wait(); } catch (const std::exception &e) { std::cerr << "Error in main: " << e.what() << std::endl; } return 0;}// Requires C++ REST SDK (Casablanca)
using System;using System.Net.Http;using System.Net.Http.Headers;using System.Threading.Tasks;using System.Text.Json;using System.Web; // For HttpUtility
public class TallyfyProcessLister{ private static readonly HttpClient client = new HttpClient();
public static async Task ListProcessesAsync() { var accessToken = Environment.GetEnvironmentVariable("TALLYFY_ACCESS_TOKEN") ?? "YOUR_PERSONAL_ACCESS_TOKEN"; var orgId = Environment.GetEnvironmentVariable("TALLYFY_ORG_ID") ?? "YOUR_ORGANIZATION_ID";
// Build URL with query parameters var query = HttpUtility.ParseQueryString(string.Empty); query["status"] = "active"; // Example query["per_page"] = "10"; query["with"] = "tags"; // query["q"] = "Search Term"; string queryString = query.ToString(); var apiUrl = $"https://go.tallyfy.com/api/organizations/{orgId}/runs?{queryString}";
try { using var request = new HttpRequestMessage(HttpMethod.Get, apiUrl); request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); request.Headers.Add("X-Tallyfy-Client", "APIClient");
HttpResponseMessage response = await client.SendAsync(request); string responseBody = await response.Content.ReadAsStringAsync();
if (response.IsSuccessStatusCode) { Console.WriteLine("Successfully listed processes:"); // Pretty print JSON try { using var doc = JsonDocument.Parse(responseBody); Console.WriteLine(JsonSerializer.Serialize(doc.RootElement, new JsonSerializerOptions { WriteIndented = true })); // Access pagination: doc.RootElement.GetProperty("meta").GetProperty("pagination")... } catch (JsonException) { Console.WriteLine(responseBody); // Print raw if not valid JSON } } else { Console.WriteLine($"Failed to list processes. Status: {response.StatusCode}"); Console.WriteLine($"Response: {responseBody}"); } } catch (HttpRequestException e) { Console.WriteLine($"Request Exception listing processes: {e.Message}"); } catch (Exception ex) { Console.WriteLine($"An unexpected error occurred: {ex.Message}"); } }
// Example Usage: // static async Task Main(string[] args) // { // await ListProcessesAsync(); // }}
A successful request returns a 200 OK
status code and a JSON object containing a data
array. Each element in the array represents a process run matching the filter criteria.
{ "data": [ { "id": "run_id_abc", "increment_id": 5012, "checklist_id": "template_id_123", "checklist_title": "Customer Onboarding", "name": "Onboarding - ACME Corp", "summary": "Process instance for ACME.", "status": "active", "progress": { "complete": 5, "total": 10, "percent": 50 }, "started_by": 1001, "created_at": "2024-05-18T10:00:00.000Z", "last_updated": "2024-05-20T15:30:00.000Z", "due_date": "2024-06-18T10:00:00.000Z", "owner_id": 1001, // ... other run properties ... }, { "id": "run_id_def", // ... details for another process run ... } ], "meta": { "pagination": { "total": 55, "count": 10, "per_page": 10, "current_page": 1, "total_pages": 6, "links": { "next": "https://go.tallyfy.com/api/organizations/{org_id}/runs?status=active&per_page=10&page=2" } } }}
The meta.pagination
object provides details for navigating through multiple pages of results if applicable.
The GET endpoint retrieves all tasks linked to a specific process run with customizable filtering options headers and query parameters while supporting multiple programming languages for implementation.
An API endpoint that retrieves detailed information about a specific process run through a GET request with optional parameters to include related data like checklists tasks and tags in the response.
Tasks > List organization tasks
A comprehensive API endpoint documentation explaining how to retrieve and filter organization-wide tasks using GET requests with various query parameters and code examples in multiple programming languages.
An API endpoint documentation for retrieving process templates from organizations with code examples in JavaScript Python Java and Go along with details about request headers query parameters and response format.
About Tallyfy
- 2025 Tallyfy, Inc.
- Privacy Policy
- Terms of Use
- Report Issue
- Trademarks