---
title: "Create Job Public V2"
method: POST
path: "/v2/jobs"
tags: ["Jobs (public v2)"]
---

# Create Job Public V2

`POST /v2/jobs`

## Request body

- CreateJobRequestPublicV2 — Payload to create a new job.
  - `description` string, nullable — Free-text description of the job.
  - `destination` JobDestinationPublicV2 — Where a job writes its results.
    - `format` 'jsonl' | 'csv' | 'parquet' — Output file format.
    - `path` string, required — Destination path the output is written to.
    - `type` 'file' | 's3', required — Destination kind: a local 'file' or an 's3' bucket.
  - `display_name` string, nullable — Human-friendly job name shown in the UI.
  - `extract_template_name` string, required — Name of the extract template to run.
  - `inputs` JobInputsPublicV2 — Configuration for the input data a job processes.
    - `data` object[], nullable — Inline list of input records. Used when type is 'inline'.
    - `file_path` string, nullable — Path to the input file; must start with 's3' or 'file_'. Used for 's3'/'file' types.
    - `node_data` object, nullable — Inline input records keyed by source node id, e.g. {'source_a': [{...}]}. Used when type is 'inline' on a dynamic-workflow job, which has one source node per input file. Mutually exclusive with 'data'.
    - `type` 's3' | 'inline' | 'file', required — How inputs are supplied: an 's3' bucket, 'inline' records, or an uploaded 'file'.
  - `name` string, required — Job name.
  - `schedule` JobSchedulePublicV2 — Cron-based schedule controlling when a job runs automatically.
    - `cron` string, required — Cron expression defining when the job runs.
    - `enabled` boolean, required — Whether the schedule is currently active.

## Response `201`

Successful Response

- JobPublicV2 — A configured job: an agent plus its schedule, inputs, and destination.
  - `created_at` string, date-time, nullable — When the job was created.
  - `description` string, nullable — Free-text description of the job.
  - `destination` JobDestinationPublicV2 — Where a job writes its results.
    - `format` 'jsonl' | 'csv' | 'parquet' — Output file format.
    - `path` string, required — Destination path the output is written to.
    - `type` 'file' | 's3', required — Destination kind: a local 'file' or an 's3' bucket.
  - `display_name` string, nullable — Human-friendly job name shown in the UI.
  - `extract_template_name` string, nullable — Name of the extract template this job runs.
  - `id` string, required — Unique job identifier (job_<n>).
  - `inputs` JobInputsPublicV2 — Configuration for the input data a job processes.
    - `data` object[], nullable — Inline list of input records. Used when type is 'inline'.
    - `file_path` string, nullable — Path to the input file; must start with 's3' or 'file_'. Used for 's3'/'file' types.
    - `node_data` object, nullable — Inline input records keyed by source node id, e.g. {'source_a': [{...}]}. Used when type is 'inline' on a dynamic-workflow job, which has one source node per input file. Mutually exclusive with 'data'.
    - `type` 's3' | 'inline' | 'file', required — How inputs are supplied: an 's3' bucket, 'inline' records, or an uploaded 'file'.
  - `last_run_at` string, date-time, nullable — Timestamp of the most recent run.
  - `last_run_status` 'PENDING' | 'RUNNING' | 'SUCCESS' | 'FAILED' | 'CANCELLED' | 'TIMEOUT' | 'WARNING', nullable — Status of the most recent run.
  - `name` string, required — Job name.
  - `schedule` JobSchedulePublicV2 — Cron-based schedule controlling when a job runs automatically.
    - `cron` string, required — Cron expression defining when the job runs.
    - `enabled` boolean, required — Whether the schedule is currently active.
  - `updated_at` string, date-time, nullable — When the job was last updated.

## Other responses

- `422` — Validation Error

## Changes

- **2026-08-17** `22c2a2291146` — 2 info
  - added the new optional request property `inputs/anyOf[subschema #1: JobInputsPublicV2]/node_data`
  - added the optional property `inputs/anyOf[subschema #1: JobInputsPublicV2]/node_data` to the response with the `201` status
- **2026-07-20** `623b3bec8d87` — 1 breaking, 2 warning, 1 info
  - added the new required request property `extract_template_name`
  - removed the request property `agent_name`
  - removed the optional property `agent_name` from the response with the `201` status
  - added the optional property `extract_template_name` to the response with the `201` status
- **2026-07-20** `d4e4f170f4f4` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/nimbleway/apis/api-gateway/changes/v2/jobs/post.md)

---

[API](https://skmtc.dev/nimbleway/apis/api-gateway.md) · [All operations](https://skmtc.dev/nimbleway/apis/api-gateway/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/nimbleway/api-gateway/revisions/d1947ec7af21/schema)
