Get one workflow
Returns the workflow plus steps - every check key that can appear in a run's checks[], so you can build your result mapping before running anything.
steps is a superset: workflows branch, so a single run produces a subset of these keys. A key that never arrives means that branch was not taken, not that something failed. Order is indicative, not guaranteed.
curl -X GET "https://api.deepvue.link/v1/workflows/123e4567-e89b-12d3-a456-426614174000" \
-H "Content-Type: application/json" \
-H "client-id: YOUR_API_KEY" \
-H "x-api-key: YOUR_API_KEY"
import requests
import json
url = "https://api.deepvue.link/v1/workflows/123e4567-e89b-12d3-a456-426614174000"
headers = {
"Content-Type": "application/json",
"client-id": "YOUR_API_KEY",
"x-api-key": "YOUR_API_KEY"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://api.deepvue.link/v1/workflows/123e4567-e89b-12d3-a456-426614174000", {
method: "GET",
headers: {
"Content-Type": "application/json",
"client-id": "YOUR_API_KEY",
"x-api-key": "YOUR_API_KEY"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://api.deepvue.link/v1/workflows/123e4567-e89b-12d3-a456-426614174000", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("client-id", "YOUR_API_KEY")
req.Header.Set("x-api-key", "YOUR_API_KEY")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://api.deepvue.link/v1/workflows/123e4567-e89b-12d3-a456-426614174000')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['client-id'] = 'YOUR_API_KEY'
request['x-api-key'] = 'YOUR_API_KEY'
response = http.request(request)
puts response.body
{
"id": "e97e7d78-4ceb-4283-8080-5c5e0b72ddac",
"name": "Individual KYC",
"description": "PAN, e-Aadhaar and face match",
"published": true,
"run_ttl_seconds": 86400,
"abandon_timeout_seconds": 3600,
"created_at": "2026-06-01T10:00:00Z"
}
{
"error": "Bad Request",
"message": "The request contains invalid parameters or malformed data",
"code": 400,
"details": [
{
"field": "email",
"message": "Invalid email format"
}
]
}
{
"error": "missing credentials: send client-id + x-api-key headers"
}
{
"error": "invalid Deepvue credentials"
}
{
"error": "Not Found",
"message": "The requested resource was not found",
"code": 404
}
/v1/workflows/{id}Target server for requests. Edit to use your own host.
Your Deepvue client identifier.
Your Deepvue API key. Secret - keep it server-side.
The workflow's UUID.
Request Preview
Response
Response will appear here after sending the request
Authentication
API Key for authentication. Your Deepvue client identifier.
API Key for authentication. Your Deepvue API key. Secret - keep it server-side.
Path Parameters
The workflow's UUID.
Responses
Use this to trigger runs.
Omitted when unset.
true = a published version exists.
How long a run of this workflow stays usable from start. 0 = no deadline. Default 24h.
Idle window before ?status=abandoned reports a run. 0 = off. Default 1h. Applied at read time - changing it re-classifies existing runs immediately, with no backfill.
Omitted when no per-workflow webhook is configured.
The checks this workflow may run; [] when it has none. Only verification checks are listed - consent screens, document capture and decision logic are not, since they produce no result you receive. Reflects the version a run would actually execute.