Automation

Get an action

Read the action and its full current implementation.

Read the action and its full current implementation. The response ETag is the current revision ID for conditional updates.

GET /automation/v1/actions/{ns}/{name}

Authentication

Authorization: Bearer $PRAXIS_API_KEY

Request fields

ParameterTypeDescription
path: nsstringrequired; Namespace, folded to lowercase; matches [a-z0-9][a-z0-9._-]{0,63}. praxis is read-only.
path: namestringrequired; Name, folded to lowercase; matches [a-z0-9][a-z0-9._-]{0,63}.

Examples

Set these environment variables to your own resources:

VariableSource
ACTION_NAMEname returned by creating an action
: "${ACTION_NAME:?Set ACTION_NAME}"
curl --fail-with-body -X GET "https://api.deepraxis.ai/automation/v1/actions/docs-samples/${ACTION_NAME}" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
import { createAutomationClient } from '@deepraxis/sdk/automation';

function env(name: string): string {
  const value = process.env[name];
  if (!value) throw new Error(`Set ${name}`);
  return value;
}
const automation = createAutomationClient({
  apiKey: env('PRAXIS_API_KEY'),
  baseUrl: 'https://api.deepraxis.ai',
  maxRetries: 0,
  timeoutMs: 90_000,
});
const result = await automation.actions.retrieve({
  "path": {
    "ns": "docs-samples",
    "name": env("ACTION_NAME")
  }
});
console.log(result);

Response

HTTP 200

Success

HeaderTypeDescription
ETagstringCurrent resource revision for conditional updates.

application/json

FieldTypeDescription
idstringrequired; Action id, prefixed act_; calls normally use namespace and name instead of the id.
namespacestringrequired; Action namespace; platform actions use praxis, and a bare name resolves to praxis.
namestringrequired; Action name; together with namespace it identifies the action. Lowercase letters, digits, dot, underscore and hyphen, up to 64 characters.
descriptionstringrequired; Free-text action description, at most 1000 characters.
labelsobjectrequired; User-defined string key and value tags for grouping and list filtering (labels[key]=value); keys must not start with praxis.
ownerstringrequired; Tenant that owns the action, injected by the gateway; treat it as an opaque string.
builtinbooleanrequired; true for platform-provided actions (namespace praxis); false for user-created actions.
current_revisionobjectrequired; One immutable revision of an action: a snapshot of its contract, implementation and run settings. Each update that changes content creates a new revision. no additional fields.
current_revision.idstringrequired; Revision id, prefixed actr_; used for display and as the revision of a rollback, and cannot be referenced directly by scripts.
current_revision.digeststringrequired; Content digest of the contract and implementation; an update with identical content does not create a new revision.
current_revision.input_schemaobjectrequired; Any JSON object whose keys are strings and whose values are any JSON value.
current_revision.input_schema.* (variant 5)objectRecursive JSON value.
current_revision.input_schema.* (variant 6)[]null / string / number / boolean / object / JSON[]Recursive JSON value.
current_revision.output_schemaobjectrequired; Any JSON object whose keys are strings and whose values are any JSON value.
current_revision.output_schema.* (variant 5)objectRecursive JSON value.
current_revision.output_schema.* (variant 6)[]null / string / number / boolean / object / JSON[]Recursive JSON value.
current_revision.errorsobject[]required; Errors the action declares it may raise, each with type, code and description.
current_revision.errors[].typestringrequired; Error type: a stable URI or a standard Open Workflow type such as validation, timeout, communication or runtime.
current_revision.errors[].codestringoptional; Optional stable error code callers can branch on.
current_revision.errors[].descriptionstringrequired; What this error means and when it occurs, written for callers.
current_revision.annotationsobjectrequired; Declared action behaviour {read_only, idempotent}; keys not supplied at creation default to false. no additional fields.
current_revision.annotations.read_onlybooleanrequired; true declares that the action does not change external state and only reads data.
current_revision.annotations.idempotentbooleanrequired; true declares that repeating a call with the same input has the same effect as calling once; retries of such a action reuse one idempotency key (run_id plus step path, without the attempt number).
current_revision.timeout_msnumberrequired; Timeout of one execution in milliseconds; when not supplied it defaults to 30000 for code and 600000 for container or shell implementations.
current_revision.implementationobject / object / objectrequired; code uses language=ts and source. container and shell are not yet available; creation returns OPERATION_NOT_SUPPORTED.
current_revision.implementation (variant 1).kind"code"required; Always code: implemented by source code.
current_revision.implementation (variant 1).language"ts"required; Source language; only ts (TypeScript) is supported now.
current_revision.implementation (variant 1).sourcestringrequired; Complete TypeScript source of the action; empty for built-in actions.
current_revision.implementation (variant 2).kind"container"required; Always container: implemented as a container image (not yet available).
current_revision.implementation (variant 2).imagestringrequired; Container image reference.
current_revision.implementation (variant 2).commandstring[]required; Command and arguments to execute in the container.
current_revision.implementation (variant 3).kind"shell"required; Always shell: implemented as a shell script (not yet available).
current_revision.implementation (variant 3).scriptstringrequired; Full text of the shell script to run.
current_revision.host"builtin" / "isolate" / "sandbox"required; Where an action runs, computed at publication. builtin is a platform-provided action; isolate runs user code in an isolated Worker isolate; sandbox runs in a sandbox (container and shell implementations).
current_revision.platform_apisstring[]required; Platform APIs derived from the code; also the scopes of the action's run token (least privilege).
current_revision.created_byobjectrequired; Principal {type, id} injected by the gateway that says who initiated or acted. This service does not resolve names; the console resolves them in batches. no additional fields.
current_revision.created_by.type"user" / "api_key" / "agent" / "run" / "trigger"required; Principal type. user is a signed-in user; api_key is a platform API key; agent is an agent; run is an action performed by a run itself (for example a parent run); trigger is a trigger.
current_revision.created_by.idstringrequired; Principal identifier whose meaning follows type: a user, API key, agent, run or trigger id. Treat it as an opaque string.
current_revision.messagenull / stringrequired; Note supplied when this revision was created, or null.
current_revision.created_atstringrequired; Time this revision was created (RFC 3339 UTC).
stats_7dobjectrequired; Seven-day statistics; platform actions are isolated by caller tenant and reflect only the current caller, not global platform totals. no additional fields.
stats_7d.callsnumberrequired; Number of calls to the action over the last seven days, aggregated hourly.
stats_7d.failuresnumberrequired; Number of those calls that failed over the last seven days.
stats_7d.p50_msnull / numberrequired; Approximate upper bound of median latency in milliseconds, using power-of-two buckets rounded up (9 ms → 16 ms), with a separate zero bucket; null when no valid latency samples exist.
dependentsobjectrequired; Counts of scripts and workflows that reference the action, measured on the latest version plus drafts. no additional fields.
dependents.scriptsnumberrequired; Number of scripts that reference this action.
dependents.workflowsnumberrequired; Number of workflows that reference this action.
archived_atnull / stringrequired; Archive time, or null while not archived. An archived name stays reserved and cannot be reused.
created_atstringrequired; Creation time (RFC 3339 UTC).
updated_atstringrequired; Time of the last update (RFC 3339 UTC).

Measured response

HTTP 200

{
  "id": "act_00mv67loz4fe4f27bdf89346c885b3a28b2038c091",
  "owner": "tnt_3a9759864ccb4e00",
  "namespace": "docs-samples",
  "name": "sample-action-1791867412840-b05e8a",
  "description": "",
  "labels": {},
  "builtin": false,
  "archived_at": null,
  "created_at": "2026-10-13T04:57:09.039Z",
  "updated_at": "2026-10-13T04:57:09.039Z",
  "current_revision": {
    "id": "actr_00mv67loz3e46938b8ecf54e57b8f31297df016a1c",
    "digest": "e35c209873c60486ca8da455878062cb7ea572a6147ce3ca03e0693b4769fa45",
    "input_schema": {
      "type": "object",
      "properties": {
        "n": {
          "type": "number"
        }
      },
      "required": [
        "n"
      ],
      "additionalProperties": false
    },
    "output_schema": {
      "type": "object",
      "properties": {
        "answer": {
          "type": "number"
        }
      },
      "required": [
        "answer"
      ],
      "additionalProperties": false
    },
    "errors": [],
    "annotations": {
      "read_only": false,
      "idempotent": false
    },
    "timeout_ms": 30000,
    "implementation": {
      "kind": "code",
      "language": "ts",
      "source": "export default async (input: { n: number }) => ({ answer: input.n + 1 });"
    },
    "host": "isolate",
    "platform_apis": [],
    "created_by": {
      "type": "api_key",
      "id": "key_3e00b8984967"
    },
    "message": null,
    "created_at": "2026-10-13T04:57:09.039Z"
  },
  "stats_7d": {
    "calls": 0,
    "failures": 0,
    "p50_ms": null
  },
  "dependents": {
    "scripts": 0,
    "workflows": 0
  }
}

Errors

HTTPCodes and description
400INVALID_PARAMS: Invalid request parameters, path, cursor, or body format.
404ACTION_NOT_FOUND: The action does not exist or is not visible to this tenant; a same-name script/workflow adds a hint pointing to its endpoint.
defaultRFC 9457 automation problem. 429 includes Retry-After.

Authentication and common errors · Retain the X-Request-Id response header for troubleshooting.

Export

On this page