Create a process
curl --request POST \
--url https://archyon.app/api/workspaces/{id}/processes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"mermaid": "<string>",
"participants": {}
}
'import requests
url = "https://archyon.app/api/workspaces/{id}/processes"
payload = {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"mermaid": "<string>",
"participants": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: '<string>',
name: '<string>',
description: '<string>',
mermaid: '<string>',
participants: {}
})
};
fetch('https://archyon.app/api/workspaces/{id}/processes', 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://archyon.app/api/workspaces/{id}/processes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => '<string>',
'name' => '<string>',
'description' => '<string>',
'mermaid' => '<string>',
'participants' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://archyon.app/api/workspaces/{id}/processes"
payload := strings.NewReader("{\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"mermaid\": \"<string>\",\n \"participants\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://archyon.app/api/workspaces/{id}/processes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"mermaid\": \"<string>\",\n \"participants\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://archyon.app/api/workspaces/{id}/processes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"mermaid\": \"<string>\",\n \"participants\": {}\n}"
response = http.request(request)
puts response.read_body{
"process": {
"id": "<string>",
"workspaceId": "<string>",
"name": "<string>",
"mermaid": "<string>",
"participants": {},
"createdAt": 123,
"updatedAt": 123,
"description": "<string>",
"createdBy": 123
}
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Processes
Create a process
Processes are Mermaid sequenceDiagram flows whose participant
aliases map to component ids via participants. The Architecture
canvas resolves each step against the workspace’s relationships
and animates an electron along the edge.
id is required and must be kebab-case (2–50 chars).
POST
/
api
/
workspaces
/
{id}
/
processes
Create a process
curl --request POST \
--url https://archyon.app/api/workspaces/{id}/processes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"mermaid": "<string>",
"participants": {}
}
'import requests
url = "https://archyon.app/api/workspaces/{id}/processes"
payload = {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"mermaid": "<string>",
"participants": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: '<string>',
name: '<string>',
description: '<string>',
mermaid: '<string>',
participants: {}
})
};
fetch('https://archyon.app/api/workspaces/{id}/processes', 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://archyon.app/api/workspaces/{id}/processes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => '<string>',
'name' => '<string>',
'description' => '<string>',
'mermaid' => '<string>',
'participants' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://archyon.app/api/workspaces/{id}/processes"
payload := strings.NewReader("{\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"mermaid\": \"<string>\",\n \"participants\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://archyon.app/api/workspaces/{id}/processes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"mermaid\": \"<string>\",\n \"participants\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://archyon.app/api/workspaces/{id}/processes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"mermaid\": \"<string>\",\n \"participants\": {}\n}"
response = http.request(request)
puts response.read_body{
"process": {
"id": "<string>",
"workspaceId": "<string>",
"name": "<string>",
"mermaid": "<string>",
"participants": {},
"createdAt": 123,
"updatedAt": 123,
"description": "<string>",
"createdBy": 123
}
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Authorizations
Both Clerk session JWTs (browser) and Archyon Personal Access
Tokens (an_pat_…, server / CLI / MCP) use the same Bearer
header. The server distinguishes them by token shape.
- Clerk JWTs carry org context in the token claims
(
org_id,org_role,org_slug) — required for org-scoped endpoints. Configure your Clerk session template to include these claims; see DEPLOYMENT.md. - PATs are minted at
/account→ Tokens. Each PAT is bound to whichever org was active at mint time. Switch orgs and re-mint to address a different org.
Path Parameters
Workspace id (slug-like; provided at create time).
Body
application/json
Response
Created.
Show child attributes
Show child attributes