---
title: "Push Permit Run Endpoint"
method: POST
path: "/permit-runs/push"
tags: ["operator-runs"]
---

# Push Permit Run Endpoint

`POST /permit-runs/push`

Manually dispatch a permit run to Pilot (managers).

Two shapes: the per-row "Run permit" re-sends an existing run's request
(optionally with manager-edited notes); the top-of-tab "Run Permit" starts
an ad-hoc run for a bare ServiceTitan job id. Both carry Pilot's
retry_terminal flag and are polled via /permit-runs/push/{request_id}.
Manager-gated (unlike warranty/rebate pushes): running a permit is part of
ops' fix-and-retry loop, per product decision.

## Request body

- PushPermitRunRequest — Body for a manual permit run from the dashboard. Exactly one target: ``run_id`` re-runs an existing row (sheet params reused); ``job_id`` starts an ad-hoc run for one ServiceTitan job (no sheet row).
  - `run_id` string, nullable
  - `job_id` string, nullable
  - `trade_tab` string, nullable
  - `notes` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `404` — Not found
- `422` — Validation Error

---

[API](https://skmtc.dev/noso/apis/crucible-backend-api.md) · [All operations](https://skmtc.dev/noso/apis/crucible-backend-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/noso/crucible-backend-api/revisions/112efbdea3eb/schema)
