API Documentation
API reference for ProcessMind: endpoints, authentication, and integration guides for developers.
This guide provides examples and best practices for calling the ProcessMind API to retrieve data, submit information, or automate workflows.
For complete endpoint documentation with request/response formats, see the API Reference.
For additional examples and client libraries, visit the API Documentation on GitHub.
All API requests should be made to:
https://api.processmind.com All routes are versioned under /v1. The full machine-readable API specification is available (OpenAPI 3.1) at:
GET https://api.processmind.com/v1/openapi.json All API requests require your API key in the x-api-key header:
x-api-key: your-api-key-here The API key can be obtained from your ProcessMind account settings. See Getting your API Key for instructions.
ProcessMind’s API follows standard HTTP status codes:
| Status | Meaning |
|---|---|
200 OK | Request succeeded |
201 Created | Resource created |
204 No Content | Request succeeded, no response body |
400 Bad Request | Invalid request or missing/invalid parameters |
401 Unauthorized | Missing or invalid API key |
403 Forbidden | Authenticated but not allowed to perform the action |
404 Not Found | Resource does not exist |
500 Internal Server Error | Unexpected server error |
The ProcessMind API enables you to:
Below are practical examples showing how to perform common operations with the ProcessMind API.
To upload a file to a datatable, first obtain a presigned URL:
const presignedUrl = await getPresignedUploadUrl({
apiKey,
tenantId: "tenant-123",
datatableId: "table-456"
});
console.log(presignedUrl); // https://s3.amazonaws.com/…?X-Amz-Signature=… Retrieve all datasets in your tenant:
const datasets = await getDatasets({
apiKey,
tenantId: "tenant-123"
});
console.log(datasets); Retrieve details about your tenant:
const tenantInfo = await getTenant({
apiKey,
tenantId: "tenant-123"
});
console.log(tenantInfo); Create a new process in your tenant:
const process = await createProcess({
apiKey,
tenantId: "tenant-123",
displayName: "Order to Cash"
});
console.log(process.id); // Use this ID for subsequent operations Upload a BPMN file to define your process model:
const fs = require("fs");
const bpmnXml = fs.readFileSync("./my-process.bpmn", "utf8");
await uploadBpmn({
apiKey,
tenantId: "tenant-123",
processId: "process-456",
bpmnXml
}); Connect a datatable to a process for analysis:
const mapping = await createProcessMapping({
apiKey,
tenantId: "tenant-123",
processId: "process-456",
dataTableId: "datatable-789",
displayName: "Sales Data 2024",
showByDefault: true
}); Add a user to your tenant:
const result = await addTenantUser({
apiKey,
tenantId: "tenant-123",
id: "user-456",
email: "colleague@example.com",
isAdminInTenant: false,
isActiveInTenant: true,
sendInvitationEmail: true
}); Note: Role fields in the body (
isAdminInTenant,access,isDashboardViewer) are honored verbatim. The user-management endpoints are a full tenant-admin surface, so only issue write-scoped API keys to callers you trust with administrative control. No invitation email is sent by the System API; you are responsible for onboarding the user.
The general flow for uploading a file to ProcessMind is:
getPresignedUploadUrl call.Here is a simplified example using fetch:
async function uploadFile({ apiKey, tenantId, datatableId, file }) {
// Step 1: Obtain a presigned URL
const uploadUrl = await getPresignedUploadUrl({ apiKey, tenantId, datatableId });
// Step 2: Upload the file via PUT
await fetch(uploadUrl, {
method: "PUT",
headers: {
"Content-Type": file.type
},
body: file
});
} info
Below are complete, copy-paste ready examples in different languages.
Minimal Bash script to upload a file to ProcessMind using two curl calls, with placeholders for all values
Uploads a local CSV file to ProcessMind using a presigned URL.
Steps:
Configuration:
https://api.processmind.comUploads a local CSV file to a remote API using a presigned URL.
Steps:
Configuration:
List endpoints accept limit and offset query parameters and return a bare JSON array (no envelope, no total count):
| Parameter | Type | Default | Maximum |
|---|---|---|---|
limit | integer | 100 | 1,000 |
offset | integer | 0 | None |
GET /v1/tenant/{tenantId}/processes?limit=50&offset=100 To page through everything, keep requesting with offset += limit until the response array is shorter than the requested limit (or empty). Values above the maximum are rejected with 400. The versioned data endpoints (datasets, datatables, versions, webhooks) follow the same convention.
/v1; breaking changes ship in a new version rather than silently changing /v1.Sunset header with the removal date, and Deprecation: true.info
If you have questions or need assistance with the API, contact the support team or open an issue in the API examples repository.
We use cookies to improve your experience, personalize content, and analyze traffic. By clicking "Accept All," you consent to our use of cookies.