API reference

Pipelines

Workflows, runs, logs, artifacts, environments, secrets, and the endpoints runners call.
GET/v1/runner/job

The job's plan: steps, contexts and its secrets. The job counts as running from here.

Auth
None.
curl 'https://api.cactive.com.au/v1/runner/job'
Send it from this page with your session or a key.

Response 200

{
  plan: {
    protocol: number
    job: {
      id: string
      key: string
      name: string
      runId: string
      runNumber: number
      attempt: number
      workflow: string
      repository: string
      timeoutMinutes: number
    }
    contexts: {
      [key: string]: boolean | null | string | number | (boolean | null | string | number | object | {
        [key: string]: boolean | null | string | number | object
      })[] | {
        [key: string]: boolean | null | string | number | (boolean | null | string | number | object)[] | object
      }
    }
    env: {
      [key: string]: string
    }
    defaults: {
      shell?: string
      workingDirectory?: string
    }
    steps: {
      index: number
      id?: string
      name?: string
      if?: string
      run?: string
      shell?: string
      workingDirectory?: string
      uses?: "checkout" | "cache" | "upload-artifact" | "download-artifact"
      with?: {
        [key: string]: string
      }
      env?: {
        [key: string]: string
      }
      continueOnError?: boolean | string
      timeoutMinutes?: string | number
    }[]
    outputs: {
      [key: string]: string
    }
    marker: string
    limits: {
      logBytes: number
      summaryBytes: number
      artifactBytes: number
      cacheBytes: number
    }
    serverUrl: string
  }
}
POST/v1/runner/checkout

A git credential for the run's repository, minutes long.

Auth
None.

Request body

  • refstring

    Up to 255 characters.

curl -X POST 'https://api.cactive.com.au/v1/runner/checkout' \
  -H 'Content-Type: application/json' \
  -d '{
    "ref": "example"
  }'
Send it from this page with your session or a key.

Response 200

{
  url: string
  authorization: string
  sha: string
  ref: string
}
POST/v1/runner/status

Step progress and a heartbeat; answers whether to stop.

Auth
None.

Request body

  • stepsobject[]required

    Up to 1,100 items.

  • steps[].indexintegerrequired

    0–5000.

  • steps[].namestringrequired

    Up to 500 characters.

  • steps[].status"pending" | "in_progress" | "completed"required
  • steps[].conclusion"success" | "failure" | "cancelled" | "skipped"
  • steps[].outcome"success" | "failure" | "cancelled" | "skipped"
  • steps[].startedAtnumber
  • steps[].completedAtnumber
  • steps[].postboolean
curl -X POST 'https://api.cactive.com.au/v1/runner/status' \
  -H 'Content-Type: application/json' \
  -d '{
    "steps": [
      {
        "index": 1,
        "name": "Example",
        "status": "pending"
      }
    ]
  }'
Send it from this page with your session or a key.

Response 200

{
  cancel: boolean
}
POST/v1/runner/complete

The job's result.

Auth
None.

Request body

  • conclusion"success" | "failure" | "cancelled"required
  • stepsobject[]

    Default []. Up to 1,100 items.

  • steps[].indexintegerrequired

    0–5000.

  • steps[].namestringrequired

    Up to 500 characters.

  • steps[].status"pending" | "in_progress" | "completed"required
  • steps[].conclusion"success" | "failure" | "cancelled" | "skipped"
  • steps[].outcome"success" | "failure" | "cancelled" | "skipped"
  • steps[].startedAtnumber
  • steps[].completedAtnumber
  • steps[].postboolean
  • outputsobject

    Default {}. Values: string (up to 65,536 characters).

  • annotationsobject[]

    Default []. Up to 50 items.

  • annotations[].level"error" | "warning" | "notice"required
  • annotations[].messagestringrequired

    Up to 4,000 characters.

  • annotations[].filestring

    Up to 500 characters.

  • annotations[].lineinteger
  • annotations[].titlestring

    Up to 200 characters.

  • annotations[].stepinteger
  • summarystring

    Up to 65,536 characters.

  • errorstring

    Up to 2,000 characters.

  • timedOutboolean
curl -X POST 'https://api.cactive.com.au/v1/runner/complete' \
  -H 'Content-Type: application/json' \
  -d '{
    "conclusion": "success"
  }'
Send it from this page with your session or a key.

Response 200

{
  ok: true
}
POST/v1/runner/logs

Self-hosted runners' output, in batches of timestamped lines.

Auth
None.

Request body

  • linesobject[]required

    Up to 20,000 items.

  • lines[].tnumberrequired
  • lines[].mstringrequired

    Up to 200,000 characters.

curl -X POST 'https://api.cactive.com.au/v1/runner/logs' \
  -H 'Content-Type: application/json' \
  -d '{
    "lines": [
      {
        "t": 1,
        "m": "example"
      }
    ]
  }'
Send it from this page with your session or a key.

Response 200

{
  ok: true
}
POST/v1/runner/cache/restore

Finds a cache for key (exact) or restoreKeys (prefixes, newest first) with the same version, in the job's ref, a pull request's target, then the default branch. Answers hit (exact, partial, none) and a presigned download.

Auth
None.

Request body

  • keystringrequired

    1–512 characters.

  • restoreKeysstring[]

    Default []. Up to 10 items. Each 1–512 characters.

  • versionstringrequired

    Matches ^[0-9a-f]{64}$.

curl -X POST 'https://api.cactive.com.au/v1/runner/cache/restore' \
  -H 'Content-Type: application/json' \
  -d '{
    "key": "example",
    "version": "example"
  }'
Send it from this page with your session or a key.

Response 200

{
  hit: "none"
  key?: undefined
  size?: undefined
  url?: undefined
} | {
  hit: "partial" | "exact"
  key: string
  size: number
  url: string
}
POST/v1/runner/cache/save

A presigned upload for a cache in the job's own ref only (key, version, size), or exists when that key is already saved there (caches are immutable).

Auth
None.

Request body

  • keystringrequired

    1–512 characters.

  • versionstringrequired

    Matches ^[0-9a-f]{64}$.

  • sizeintegerrequired

    ≥ 1.

curl -X POST 'https://api.cactive.com.au/v1/runner/cache/save' \
  -H 'Content-Type: application/json' \
  -d '{
    "key": "example",
    "version": "example",
    "size": 1
  }'
Send it from this page with your session or a key.

Response 200

{
  exists: true
  url?: undefined
} | {
  url: string
  exists?: undefined
}
POST/v1/runner/cache/commit

Finishes a cache after its upload; the repository's oldest unused caches go when it passes its quota.

Auth
None.

Request body

  • keystringrequired

    1–512 characters.

  • versionstringrequired

    Matches ^[0-9a-f]{64}$.

  • sizeinteger

    ≥ 0.

curl -X POST 'https://api.cactive.com.au/v1/runner/cache/commit' \
  -H 'Content-Type: application/json' \
  -d '{
    "key": "example",
    "version": "example"
  }'
Send it from this page with your session or a key.

Response 200

{
  ok: true
}
POST/v1/runner/artifacts/upload

Starts an artifact of the job's run (name, size, files, retentionDays): a presigned PUT for exactly that size. Names are unique per run attempt.

Auth
None.

Request body

  • namestringrequired

    Matches ^[^\\/:*?"<>|\r\n]{1,100}$.

  • sizeintegerrequired

    ≥ 1.

  • filesintegerrequired

    ≥ 0.

  • retentionDaysinteger

    1–400.

curl -X POST 'https://api.cactive.com.au/v1/runner/artifacts/upload' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Example",
    "size": 1,
    "files": 1
  }'
Send it from this page with your session or a key.

Response 200

{
  url: string
}
POST/v1/runner/artifacts/commit

Finishes an artifact after its upload; it's then listed with the run and kept until its retention ends.

Auth
None.

Request body

  • namestringrequired

    Matches ^[^\\/:*?"<>|\r\n]{1,100}$.

  • sizeinteger
  • filesinteger
curl -X POST 'https://api.cactive.com.au/v1/runner/artifacts/commit' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Example"
  }'
Send it from this page with your session or a key.

Response 200

{
  ok: true
}
POST/v1/runner/artifacts/download

Presigned downloads of the run's artifacts (name for one; this attempt's first, then earlier attempts').

Auth
None.

Request body

  • namestring

    Matches ^[^\\/:*?"<>|\r\n]{1,100}$.

curl -X POST 'https://api.cactive.com.au/v1/runner/artifacts/download' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Example"
  }'
Send it from this page with your session or a key.

Response 200

{
  artifacts: {
    name: string
    size: number
    url: string
  }[]
}
GET/v1/orgs/:orgId/repos/:name/pipelines/workflows

The workflows of a branch (default: the default branch), with their problems and last run.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Query parameters

  • refstring

    1–255 characters.

Errors

  • 404Repository not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/workflows' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  ref: string
  sha: string
  workflows: {
    file: string
    name: string
    triggers: string[]
    dispatch: null | {
      inputs: {
        name: string
        description?: string
        type: "string" | "number" | "boolean" | "environment" | "choice"
        required: boolean
        default?: boolean | string | number
        options?: string[]
      }[]
    }
    problems: {
      message: string
      line?: number
      column?: number
      severity: "error" | "warning"
    }[]
    disabled: boolean
    lastRun: null | {
      runId: string
      number: number
      attempt: number
      workflowFile: string
      workflowName: string
      event: "push" | "pull_request" | "schedule" | "workflow_dispatch"
      ref: string
      branch: string
      sha: string
      title: string
      actor: {
        id: null | string
        label: null | string
      }
      status: "queued" | "in_progress" | "waiting" | "completed"
      conclusion: null | "success" | "failure" | "skipped" | "cancelled" | "timed_out" | "startup_failure"
      pullNumber: null | number
      cancelRequested: boolean
      waitingForConcurrency: boolean
      problems: null | {
        message: string
        line?: number
        column?: number
      }[]
      createdAt: number
      startedAt: null | number
      completedAt: null | number
    }
  }[]
}
PUT/v1/orgs/:orgId/repos/:name/pipelines/workflows/:file

Turns a workflow on or off (off: no event starts it).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • file

    Workflow file name in .cactive/workflows, e.g. ci.yml.

Request body

  • enabledbooleanrequired

Errors

  • 404Repository not found
  • 404Workflow not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/workflows/{file}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "enabled": true
  }'
Send it from this page with your session or a key.

Response 200

{
  file: string
  disabled: boolean
}
POST/v1/orgs/:orgId/repos/:name/pipelines/workflows/:file/dispatches

Runs a workflow by hand on a branch with inputs (workflow_dispatch).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • file

    Workflow file name in .cactive/workflows, e.g. ci.yml.

Request body

  • refstringrequired

    1–255 characters. Trimmed.

  • inputsobject

    Default {}. Values: string (up to 10,000 characters), number or boolean.

Errors

  • 404Repository not found
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/workflows/{file}/dispatches' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "ref": "example"
  }'
Send it from this page with your session or a key.

Response 201

{
  run: {
    runId: string
    number: number
    attempt: number
    workflowFile: string
    workflowName: string
    event: "push" | "pull_request" | "schedule" | "workflow_dispatch"
    ref: string
    branch: string
    sha: string
    title: string
    actor: {
      id: null | string
      label: null | string
    }
    status: "queued" | "in_progress" | "waiting" | "completed"
    conclusion: null | "success" | "failure" | "skipped" | "cancelled" | "timed_out" | "startup_failure"
    pullNumber: null | number
    cancelRequested: boolean
    waitingForConcurrency: boolean
    problems: null | {
      message: string
      line?: number
      column?: number
    }[]
    createdAt: number
    startedAt: null | number
    completedAt: null | number
  }
}
GET/v1/orgs/:orgId/repos/:name/pipelines/runs

Runs, newest first, filtered by workflow, branch, status, actor and event.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Query parameters

  • workflowstring

    Up to 100 characters.

  • branchstring

    Up to 255 characters.

  • status"queued" | "in_progress" | "waiting" | "completed" | "success" | "failure" | "cancelled" | "startup_failure"
  • actorstring

    Up to 64 characters.

  • event"push" | "pull_request" | "schedule" | "workflow_dispatch"
  • shastring

    Matches ^[0-9a-f]{40}$.

  • cursorstring

    Up to 2,000 characters.

  • limitinteger

    Default 25. 1–100. Coerced from a string.

Errors

  • 404Repository not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/runs' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  runs: {
    runId: string
    number: number
    attempt: number
    workflowFile: string
    workflowName: string
    event: "push" | "pull_request" | "schedule" | "workflow_dispatch"
    ref: string
    branch: string
    sha: string
    title: string
    actor: {
      id: null | string
      label: null | string
    }
    status: "queued" | "in_progress" | "waiting" | "completed"
    conclusion: null | "success" | "failure" | "skipped" | "cancelled" | "timed_out" | "startup_failure"
    pullNumber: null | number
    cancelRequested: boolean
    waitingForConcurrency: boolean
    problems: null | {
      message: string
      line?: number
      column?: number
    }[]
    createdAt: number
    startedAt: null | number
    completedAt: null | number
  }[]
  cursor: null | string
}
GET/v1/orgs/:orgId/repos/:name/pipelines/runs/:number

A run (an attempt of it): jobs with steps, the job graph, approvals, artifacts.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • number

    Issue or pull request number, or under pipelines a run number.

Query parameters

  • attemptinteger

    ≥ 1. Coerced from a string.

Errors

  • 404Repository not found
  • 404Run not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/runs/{number}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  run: {
    runId: string
    number: number
    attempt: number
    workflowFile: string
    workflowName: string
    event: "push" | "pull_request" | "schedule" | "workflow_dispatch"
    ref: string
    branch: string
    sha: string
    title: string
    actor: {
      id: null | string
      label: null | string
    }
    status: "queued" | "in_progress" | "waiting" | "completed"
    conclusion: null | "success" | "failure" | "skipped" | "cancelled" | "timed_out" | "startup_failure"
    pullNumber: null | number
    cancelRequested: boolean
    waitingForConcurrency: boolean
    problems: null | {
      message: string
      line?: number
      column?: number
    }[]
    createdAt: number
    startedAt: null | number
    completedAt: null | number
  }
  attempt: number
  attempts: number[]
  graph: {
    key: string
    name: string
    needs: string[]
    environment: null | string
    matrix: boolean
  }[]
  jobs: {
    jobId: string
    key: string
    name: string
    matrix: null | {
      [key: string]: unknown
    }
    status: "queued" | "in_progress" | "waiting" | "completed"
    conclusion: null | "success" | "failure" | "skipped" | "cancelled" | "timed_out" | "startup_failure"
    waitingFor: null | "approval" | "timer" | "concurrency" | "capacity" | "runner"
    waitUntil: null | number
    runner: null | {
      kind: "hosted" | "self-hosted"
      label: null | string
      device: null | string
    }
    environment: null | {
      name: string
      url: null | string
    }
    steps: unknown[]
    annotations: unknown[]
    summary: null | string
    error: null | string
    continueOnError: boolean
    reusedFrom: null | number
    minutes: null | number
    queuedAt: null | number
    startedAt: null | number
    completedAt: null | number
    logArchived: boolean
  }[]
  approvals: {
    environment: string
    status: "pending" | "expired" | "approved" | "rejected"
    reviewers: {
      name: string
      type: "user" | "team"
      id: string
    }[]
    preventSelfReview: boolean
    canReview: boolean
    decidedBy: null | string
    comment: null | string
    decidedAt: null | number
    requestedAt: number
  }[]
  artifacts: {
    name: string
    size: number
    files: number
    attempt: number
    expiresAt: number
    createdAt: number
  }[]
  scopes: ("platform:admin" | "platform:infra" | "platform:analytics" | "platform:coverage" | "org:read" | "org:write" | "audit:read" | "tenant:read" | "tenant:write" | "members:read" | "members:write" | "projects:read" | "projects:write" | "deployments:read" | "deployments:write" | "env:read" | "env:write" | "keys:read" | "keys:use" | "keys:write" | "domains:read" | "domains:write" | "resources:read" | "resources:write" | "git:read" | "git:write" | "git:admin" | "logs:read" | "analytics:read" | "knowledge:read" | "knowledge:write" | "connectors:read" | "connectors:write" | "chat:use" | "mcp:connect" | "agents:read" | "agents:write" | "agents:run" | "mail:read" | "mail:send" | "mail:admin" | "calendar:read" | "calendar:write" | "contacts:read" | "contacts:write" | "issues:read" | "issues:write" | "issues:admin" | "maps:read" | "maps:write" | "drive:read" | "drive:write" | "crm:read" | "crm:write" | "crm:admin" | "marketing:read" | "marketing:write" | "marketing:send" | "marketing:admin" | "health:read" | "health:write" | "weather:read" | "weather:write" | "food:read" | "food:write" | "vehicles:read" | "vehicles:write" | "vehicles:control" | "vehicles:admin" | "sharing:read" | "sharing:write")[]
}
POST/v1/orgs/:orgId/repos/:name/pipelines/runs/:number/cancel

Cancels a run: queued and waiting jobs end at once, running ones are stopped. Needs git:write.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • number

    Issue or pull request number, or under pipelines a run number.

Errors

  • 404Repository not found
  • 404Run not found
  • 409This run has finished
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/runs/{number}/cancel' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  run: {
    runId: string
    number: number
    attempt: number
    workflowFile: string
    workflowName: string
    event: "push" | "pull_request" | "schedule" | "workflow_dispatch"
    ref: string
    branch: string
    sha: string
    title: string
    actor: {
      id: null | string
      label: null | string
    }
    status: "queued" | "in_progress" | "waiting" | "completed"
    conclusion: null | "success" | "failure" | "skipped" | "cancelled" | "timed_out" | "startup_failure"
    pullNumber: null | number
    cancelRequested: boolean
    waitingForConcurrency: boolean
    problems: null | {
      message: string
      line?: number
      column?: number
    }[]
    createdAt: number
    startedAt: null | number
    completedAt: null | number
  }
}
POST/v1/orgs/:orgId/repos/:name/pipelines/runs/:number/rerun

Re-runs a finished run as a new attempt: all jobs, the failed ones, or one job (and what needs it).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • number

    Issue or pull request number, or under pipelines a run number.

Request body

  • failedOnlyboolean

    Default false.

  • jobstring

    Up to 100 characters.

Errors

  • 404Repository not found
  • 404Run not found
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/runs/{number}/rerun' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "failedOnly": false,
    "job": "example"
  }'
Send it from this page with your session or a key.

Response 200

{
  run: {
    runId: string
    number: number
    attempt: number
    workflowFile: string
    workflowName: string
    event: "push" | "pull_request" | "schedule" | "workflow_dispatch"
    ref: string
    branch: string
    sha: string
    title: string
    actor: {
      id: null | string
      label: null | string
    }
    status: "queued" | "in_progress" | "waiting" | "completed"
    conclusion: null | "success" | "failure" | "skipped" | "cancelled" | "timed_out" | "startup_failure"
    pullNumber: null | number
    cancelRequested: boolean
    waitingForConcurrency: boolean
    problems: null | {
      message: string
      line?: number
      column?: number
    }[]
    createdAt: number
    startedAt: null | number
    completedAt: null | number
  }
}
POST/v1/orgs/:orgId/repos/:name/pipelines/runs/:number/approvals

Approves or rejects the jobs of the current attempt waiting for an environment (its reviewers only).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • number

    Issue or pull request number, or under pipelines a run number.

Request body

  • environmentstringrequired

    Matches ^[A-Za-z0-9 _.-]{1,100}$. Trimmed.

  • decision"approve" | "reject"required
  • commentstring

    Up to 1,000 characters. Trimmed.

Errors

  • 404Repository not found
  • 404Run not found
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/runs/{number}/approvals' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "environment": "example",
    "decision": "approve"
  }'
Send it from this page with your session or a key.

Response 200

{
  ok: true
}
GET/v1/orgs/:orgId/repos/:name/pipelines/runs/:number/jobs/:jobId

One job of a run: status, runner, environment, steps, annotations, summary and error.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • number

    Issue or pull request number, or under pipelines a run number.

  • jobId

    Job id: an agent job (job_…), under pipelines a pipeline job (pjb_…), or under crm an import or export (cjb_…); under marketing a list import (mkj_…).

Errors

  • 404Repository not found
  • 404Run not found
  • 404Job not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/runs/{number}/jobs/{jobId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  run: {
    runId: string
    number: number
    attempt: number
    workflowFile: string
    workflowName: string
    event: "push" | "pull_request" | "schedule" | "workflow_dispatch"
    ref: string
    branch: string
    sha: string
    title: string
    actor: {
      id: null | string
      label: null | string
    }
    status: "queued" | "in_progress" | "waiting" | "completed"
    conclusion: null | "success" | "failure" | "skipped" | "cancelled" | "timed_out" | "startup_failure"
    pullNumber: null | number
    cancelRequested: boolean
    waitingForConcurrency: boolean
    problems: null | {
      message: string
      line?: number
      column?: number
    }[]
    createdAt: number
    startedAt: null | number
    completedAt: null | number
  }
  job: {
    jobId: string
    key: string
    name: string
    matrix: null | {
      [key: string]: unknown
    }
    status: "queued" | "in_progress" | "waiting" | "completed"
    conclusion: null | "success" | "failure" | "skipped" | "cancelled" | "timed_out" | "startup_failure"
    waitingFor: null | "approval" | "timer" | "concurrency" | "capacity" | "runner"
    waitUntil: null | number
    runner: null | {
      kind: "hosted" | "self-hosted"
      label: null | string
      device: null | string
    }
    environment: null | {
      name: string
      url: null | string
    }
    steps: unknown[]
    annotations: unknown[]
    summary: null | string
    error: null | string
    continueOnError: boolean
    reusedFrom: null | number
    minutes: null | number
    queuedAt: null | number
    startedAt: null | number
    completedAt: null | number
    logArchived: boolean
  }
}
GET/v1/orgs/:orgId/repos/:name/pipelines/runs/:number/jobs/:jobId/logs

A page of a job's log after cursor; done when the job finished and everything was read.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • number

    Issue or pull request number, or under pipelines a run number.

  • jobId

    Job id: an agent job (job_…), under pipelines a pipeline job (pjb_…), or under crm an import or export (cjb_…); under marketing a list import (mkj_…).

Query parameters

  • cursorstring

    Up to 4,000 characters.

Errors

  • 404Repository not found
  • 404Run not found
  • 404Job not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/runs/{number}/jobs/{jobId}/logs' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  status: "queued" | "in_progress" | "waiting" | "completed"
  steps: unknown[]
  lines: {
    n: number
    t: number
    s: number
    m: string
  }[]
  cursor: string
  done: boolean
}
GET/v1/orgs/:orgId/repos/:name/pipelines/runs/:number/jobs/:jobId/logs/raw

The whole log as text (up to 5 MB).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • number

    Issue or pull request number, or under pipelines a run number.

  • jobId

    Job id: an agent job (job_…), under pipelines a pipeline job (pjb_…), or under crm an import or export (cjb_…); under marketing a list import (mkj_…).

Errors

  • 404Repository not found
  • 404Run not found
  • 404Job not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/runs/{number}/jobs/{jobId}/logs/raw' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200 with no body

GET/v1/orgs/:orgId/repos/:name/pipelines/runs/:number/artifacts/:artifact

A download link for one of the run's artifacts (15 minutes); attempt picks an earlier attempt's.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • number

    Issue or pull request number, or under pipelines a run number.

  • artifact

    Artifact name, URL-encoded.

Query parameters

  • attemptinteger

    ≥ 1. Coerced from a string.

Errors

  • 404Repository not found
  • 404Run not found
  • 404Artifact not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/runs/{number}/artifacts/{artifact}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  url: string
  name: string
  size: number
}
DELETE/v1/orgs/:orgId/repos/:name/pipelines/runs/:number/artifacts/:artifact

Deletes an artifact of the run now. Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • number

    Issue or pull request number, or under pipelines a run number.

  • artifact

    Artifact name, URL-encoded.

Query parameters

  • attemptinteger

    ≥ 1. Coerced from a string.

Errors

  • 404Repository not found
  • 404Run not found
  • 404Artifact not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/runs/{number}/artifacts/{artifact}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/orgs/:orgId/repos/:name/pipelines/statuses

What the runs of commits add up to (up to 100: ?sha=…&sha=…).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Errors

  • 400At most 100 commits at a time
  • 404Repository not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/statuses' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  statuses: {
    [key: string]: {
      state: "success" | "pending" | "failure" | "waiting" | "cancelled"
      runs: {
        number: number
        workflowFile: string
        workflowName: string
        event: string
        status: string
        conclusion?: string
        attempt: number
        createdAt: number
      }[]
    }
  }
}
GET/v1/orgs/:orgId/repos/:name/pipelines/environments

Environments with their rules, and the names of their secrets and variables.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Errors

  • 404Repository not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/environments' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  environments: {
    name: string
    reviewers: {
      type: "user" | "team"
      id: string
    }[]
    preventSelfReview: boolean
    waitMinutes: number
    branchPolicy: "all" | "protected" | "selected"
    branchPatterns: string[]
    secrets: {
      name: string
      updatedAt: number
      updatedBy: null | string
    }[]
    variables: {
      name: string
      value: string
      updatedAt: number
    }[]
    updatedAt: number
  }[]
}
PUT/v1/orgs/:orgId/repos/:name/pipelines/environments/:environment

Creates or changes an environment's rules: reviewers (up to 6 people or groups; empty means no approval), preventSelfReview, waitMinutes, branchPolicy (all, protected or selected with branchPatterns). Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • environment

    Environment name (letters, numbers, spaces, ., -, _; compared without case).

Request body

  • reviewersobject[]

    Default []. Up to 6 items.

  • reviewers[].type"user" | "team"required
  • reviewers[].idstringrequired

    3–64 characters.

  • preventSelfReviewboolean

    Default false.

  • waitMinutesinteger

    Default 0. 0–43200.

  • branchPolicy"all" | "protected" | "selected"

    Default "all".

  • branchPatternsstring[]

    Default []. Up to 50 items. Each 1–200 characters, trimmed.

Errors

  • 400At most 100 environments
  • 400… … isn't in this organization
  • 404Repository not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/environments/{environment}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "reviewers": [
      {
        "type": "user",
        "id": "<id>"
      }
    ],
    "preventSelfReview": false,
    "waitMinutes": 0
  }'
Send it from this page with your session or a key.

Response 200

{
  environment: {
    reviewers: {
      type: "user" | "team"
      id: string
    }[]
    name: string
    createdAt: number
    updatedAt: number
    orgId: string
    repoId: string
    preventSelfReview: boolean
    waitMinutes: number
    branchPolicy: "all" | "protected" | "selected"
    branchPatterns: string[]
  }
}
DELETE/v1/orgs/:orgId/repos/:name/pipelines/environments/:environment

Removes an environment with its secrets and variables. Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • environment

    Environment name (letters, numbers, spaces, ., -, _; compared without case).

Errors

  • 404Repository not found
  • 404Environment not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/environments/{environment}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

PUT/v1/orgs/:orgId/repos/:name/pipelines/environments/:environment/secrets/:secret

Sets an environment secret (value, at most the platform's size). Only that environment's jobs get it, after its rules pass. Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • environment

    Environment name (letters, numbers, spaces, ., -, _; compared without case).

  • secret

    Secret name (letters, numbers and _; stored upper case).

Request body

  • valuestringrequired

    1–200,000 characters.

Errors

  • 400At most … secrets here
  • 404Repository not found
  • 404Environment not found
  • 413Secrets are at most … KB
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/environments/{environment}/secrets/{secret}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "value": "example"
  }'
Send it from this page with your session or a key.

Response 200

{
  name: string
}
DELETE/v1/orgs/:orgId/repos/:name/pipelines/environments/:environment/secrets/:secret

Removes an environment secret. Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • environment

    Environment name (letters, numbers, spaces, ., -, _; compared without case).

  • secret

    Secret name (letters, numbers and _; stored upper case).

Errors

  • 404Repository not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/environments/{environment}/secrets/{secret}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

PUT/v1/orgs/:orgId/repos/:name/pipelines/environments/:environment/variables/:variable

Sets an environment variable (value). Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • environment

    Environment name (letters, numbers, spaces, ., -, _; compared without case).

  • variable

    Variable name (letters, numbers and _; stored upper case).

Request body

  • valuestringrequired

    Up to 48,000 characters.

Errors

  • 404Repository not found
  • 404Environment not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/environments/{environment}/variables/{variable}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "value": "example"
  }'
Send it from this page with your session or a key.

Response 200

{
  name: string
}
DELETE/v1/orgs/:orgId/repos/:name/pipelines/environments/:environment/variables/:variable

Removes an environment variable. Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • environment

    Environment name (letters, numbers, spaces, ., -, _; compared without case).

  • variable

    Variable name (letters, numbers and _; stored upper case).

Errors

  • 404Repository not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/environments/{environment}/variables/{variable}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/orgs/:orgId/repos/:name/pipelines/secrets

Secret names (never values): the repository's, and the org's visible to it. Needs git:write.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Errors

  • 404Repository not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/secrets' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  secrets: {
    name: string
    updatedAt: number
    updatedBy: null | string
  }[]
  organization: {
    name: string
    updatedAt: number
  }[]
}
PUT/v1/orgs/:orgId/repos/:name/pipelines/secrets/:secret

Sets a repository secret (value): KMS-encrypted, never returned, handed only to running jobs. Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • secret

    Secret name (letters, numbers and _; stored upper case).

Request body

  • valuestringrequired

    1–200,000 characters.

Errors

  • 400At most … secrets here
  • 404Repository not found
  • 413Secrets are at most … KB
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/secrets/{secret}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "value": "example"
  }'
Send it from this page with your session or a key.

Response 200

{
  name: string
}
DELETE/v1/orgs/:orgId/repos/:name/pipelines/secrets/:secret

Removes a repository secret. Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • secret

    Secret name (letters, numbers and _; stored upper case).

Errors

  • 404Repository not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/secrets/{secret}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/orgs/:orgId/repos/:name/pipelines/variables

Variables (values are visible): the repository's and the org's visible to it.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Errors

  • 404Repository not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/variables' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  variables: {
    name: string
    value: string
    updatedAt: number
  }[]
  organization: {
    name: string
    value: string
    updatedAt: number
  }[]
}
PUT/v1/orgs/:orgId/repos/:name/pipelines/variables/:variable

Sets a repository variable (value, readable in vars). Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • variable

    Variable name (letters, numbers and _; stored upper case).

Request body

  • valuestringrequired

    Up to 48,000 characters.

Errors

  • 404Repository not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/variables/{variable}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "value": "example"
  }'
Send it from this page with your session or a key.

Response 200

{
  name: string
}
DELETE/v1/orgs/:orgId/repos/:name/pipelines/variables/:variable

Removes a repository variable. Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

  • variable

    Variable name (letters, numbers and _; stored upper case).

Errors

  • 404Repository not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/variables/{variable}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/orgs/:orgId/repos/:name/pipelines/caches

The repository's caches: key, ref, size and when each was last used.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Errors

  • 404Repository not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/caches' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  caches: {
    key: string
    ref: string
    size: number
    version: string
    createdAt: number
    lastUsedAt: number
  }[]
  bytes: number
}
DELETE/v1/orgs/:orgId/repos/:name/pipelines/caches

Removes caches: one key (on one ref, or every ref), or all of them.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • name

    Repository name.

Query parameters

  • keystring

    Up to 512 characters.

  • refstring

    Up to 255 characters.

Errors

  • 404Repository not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/repos/{name}/pipelines/caches' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  removed: number
}
GET/v1/orgs/:orgId/pipelines/secrets

Org secret names and which repositories see them (never values).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

curl 'https://api.cactive.com.au/v1/orgs/{orgId}/pipelines/secrets' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  secrets: {
    name: string
    visibility: "all" | "selected"
    repoIds: string[]
    updatedAt: number
    updatedBy: null | string
  }[]
}
PUT/v1/orgs/:orgId/pipelines/secrets/:secret

Sets an organization secret: value (required for a new one), and visibility (all repositories, or selected with repoIds). Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • secret

    Secret name (letters, numbers and _; stored upper case).

Request body

  • visibility"all" | "selected"

    Default "all".

  • repoIdsstring[]

    Default []. Up to 500 items. Each 3–64 characters.

  • valuestring

    1–200,000 characters.

Errors

  • 400Not repositories of this organization: …
  • 400A new secret needs a value
  • 400At most … organization secrets
  • 413Secrets are at most … KB
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/pipelines/secrets/{secret}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "visibility": "all",
    "repoIds": [],
    "value": "example"
  }'
Send it from this page with your session or a key.

Response 200

{
  name: string
}
DELETE/v1/orgs/:orgId/pipelines/secrets/:secret

Removes an organization secret. Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • secret

    Secret name (letters, numbers and _; stored upper case).

curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/pipelines/secrets/{secret}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/orgs/:orgId/pipelines/variables

Organization variables with their values and which repositories see them.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

curl 'https://api.cactive.com.au/v1/orgs/{orgId}/pipelines/variables' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  variables: {
    name: string
    value: string
    visibility: "all" | "selected"
    repoIds: string[]
    updatedAt: number
  }[]
}
PUT/v1/orgs/:orgId/pipelines/variables/:variable

Sets an organization variable: value, visibility and repoIds as for secrets. Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • variable

    Variable name (letters, numbers and _; stored upper case).

Request body

  • visibility"all" | "selected"

    Default "all".

  • repoIdsstring[]

    Default []. Up to 500 items. Each 3–64 characters.

  • valuestringrequired

    Up to 48,000 characters.

Errors

  • 400Not repositories of this organization: …
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/pipelines/variables/{variable}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "value": "example"
  }'
Send it from this page with your session or a key.

Response 200

{
  name: string
}
DELETE/v1/orgs/:orgId/pipelines/variables/:variable

Removes an organization variable. Needs git:admin.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • variable

    Variable name (letters, numbers and _; stored upper case).

curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/pipelines/variables/{variable}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/orgs/:orgId/pipelines/usage

Minutes this month (or month=2026-10) against the plan, by runner type.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

Query parameters

  • monthstring

    Matches ^\d{4}-\d{2}$.

curl 'https://api.cactive.com.au/v1/orgs/{orgId}/pipelines/usage' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  usage: {
    month: string
    minutes: number
    billedMinutes: number
    selfHostedMinutes: number
    jobs: number
    byRunner: {
      runner: string
      selfHosted: boolean
      minutes: number
      billedMinutes: number
      jobs: number
    }[]
  }
  limits: {
    minutes: number
    overage: boolean
    concurrency: number
    maxMinutes: number
    logDays: number
    artifactDays: number
    artifactGb: number
    cacheGb: number
  }
  running: number
  artifactBytes: number
}
GET/v1/orgs/:orgId/pipelines/runners

Hosted runner types the org can use, and its self-hosted runners (devices approved for pipelines).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

curl 'https://api.cactive.com.au/v1/orgs/{orgId}/pipelines/runners' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  hosted: {
    label: string
    description: string
    multiplier: number
    maxMinutes: number
    docker: boolean
    isDefault: boolean
  }[]
  selfHosted: {
    deviceId: string
    name: string
    platform: null | string
    labels: string[]
    customLabels: string[]
    networkMode?: "allowlist" | "full"
    online: boolean
    lastSeenAt: null | number
  }[]
}
PUT/v1/orgs/:orgId/pipelines/runners/:deviceId/labels

A self-hosted runner's own labels (runs-on: [self-hosted, <label>]).

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • deviceId

    Device id: an agent's (dev_…); under /v1/me/notifications a phone's install id; under /v1/me/sign-in-approvals a phone that approves sign-ins (apd_…); under /v1/me/vault the id a device made for its vault (22 base64url characters).

Request body

  • labelsstring[]required

    Up to 20 items. Each matches ^[a-z0-9][a-z0-9._-]{0,49}$, trimmed, lowercased.

Errors

  • 404Runner not found
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/pipelines/runners/{deviceId}/labels' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "labels": [
      "example"
    ]
  }'
Send it from this page with your session or a key.

Response 200

{
  labels: string[]
}