> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.toloka.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# client.pipelines.validateGraph()

> Validate a pipeline graph.

Send a graph to receive configuration findings and matching check results without saving it. Pending or running lints produce `running_node_check` warnings. A lint with no matching run produces the same warning during the first 60 seconds after graph activation, then `not_ran_node_check` afterward. Start lints with `POST /api/v2-beta/pipelines/{pipelineId}/lints`.

## Signature

Method signature on `client.pipelines`:

```ts theme={null}
validateGraph(args: {
  pipelineId: string;
  graph: PipelineGraphV1;
}): Promise<{ valid: boolean; issues: PipelineValidationIssue[]; checks: CheckJob[] }>;
```

## Parameters

**pipelineId** `string` *required*

Pipeline ID with prefix `pl.`.

**graph** `PipelineGraphV1` *required*

Complete pipeline graph in version 1 of the public graph format.

**Fields**

**version** `1` *required*

Graph format version; always 1.

**fields** `object[]` *required*

Fields used by the pipeline, with names and JSON Schemas.

See the [HTTP endpoint](https://docs.platform.toloka.ai/docs/api-reference/pipeline-graph/validate-pipeline-graph.md) for the complete schema.

**nodes** `(RootNode | CodeNode | GenerationNode | MatchNode | QuorumNode)[]` *required*

Nodes that make up the pipeline.

See the [HTTP endpoint](https://docs.platform.toloka.ai/docs/api-reference/pipeline-graph/validate-pipeline-graph.md) for the complete schema.

**connections** `object[]` *required*

Directed connections between node handles.

See the [HTTP endpoint](https://docs.platform.toloka.ai/docs/api-reference/pipeline-graph/validate-pipeline-graph.md) for the complete schema.

**layout** `object`

Optional node positions for the visual editor, keyed by node ID and block group; each position is an \[x, y] pair.

**Fields**

**\[key: string]** `object`

## Returns

`Promise<{ valid: boolean; issues: PipelineValidationIssue[]; checks: CheckJob[] }>`

Configuration errors, check status, and matching checks for a submitted pipeline graph.

**valid** `boolean` *required*

Whether the submitted graph has no validation errors.

**issues** `PipelineValidationIssue[]` *required*

Configuration and check findings for the submitted graph.

**Fields**

**severity** `"error" | "warning"` *required*

Finding severity: `error` prevents validation from passing; `warning` reports a non-blocking issue.

**code** `string` *required*

Machine-readable code identifying the validation issue.

**message** `string` *required*

Explanation of the validation issue.

**nodeId** `string`

Affected node ID; absent for issues that apply to the whole graph.

**checkId** `string`

Related check ID; absent when the issue does not refer to a check.

**checks** `CheckJob[]` *required*

Checks whose results match the submitted graph configuration.

**Fields**

**id** `CheckRunId` *required*

Check run ID with prefix `plcr.`.

**pipelineId** `PipelineId` *required*

Pipeline ID with prefix `pl.`.

**nodeId** `string` *required*

Identifier of the pipeline graph node to check.

**checkId** `string` *required*

Identifier of the check defined for this node, such as `dataset-lint` on the Start node.

**status** `"pending" | "running" | "succeeded" | "failed"` *required*

Check state: `pending` while queued, `running` while executing, `succeeded` when execution finishes, or `failed` after an execution error; inspect `result.report` for findings.

**createdAt** `string` *required*

Time the check was started, as an ISO 8601 timestamp.

**error** `string | null`

Execution error message, or absent or null when no error is recorded.

**result** `object` *required*

Output and structured findings returned by the check.

See the [HTTP endpoint](https://docs.platform.toloka.ai/docs/api-reference/pipeline-graph/validate-pipeline-graph.md) for the complete schema.

## Errors

HTTP errors throw [`PotatoApiError`](https://docs.platform.toloka.ai/docs/sdk/errors). The endpoint documents these error responses:

| Status | Description |
| - | - |
| 400 | Submitted graph is not a valid PipelineGraphV1 document |
| 404 | Pipeline not found |
| 429 | Rate limit exceeded |

HTTP endpoint: [`POST /pipelines/{pipelineId}/graph/validate`](https://docs.platform.toloka.ai/docs/api-reference/pipeline-graph/validate-pipeline-graph).

```ts validateGraph() theme={null}
import assert from "node:assert/strict";
import { createClient } from "@toloka-platform/sdk";

const client = createClient({
  baseUrl: "https://platform.toloka.ai",
  apiKey: process.env.TOLOKA_API_KEY!,
});

const snapshot = await client.pipelines.getGraph({ pipelineId: "pl.019a0000-0000-7000-8000-000000000001" });
const graph = structuredClone(snapshot.graph);
const root = graph.nodes.find((node) => node.type === "root");
assert(root, "The pipeline has no Start node.");
root.settings.itemLimit = 100;

const validation = await client.pipelines.validateGraph({
  pipelineId: "pl.019a0000-0000-7000-8000-000000000001",
  graph: graph
});
console.log(validation);
```

```json validateGraph() theme={null}
{
  "valid": false,
  "issues": [
    {
      "severity": "error",
      "code": "<string>",
      "message": "<string>"
    }
  ],
  "checks": [
    {
      "id": "plcr.019a0000-0000-7000-8000-000000000001",
      "pipelineId": "pl.019a0000-0000-7000-8000-000000000001",
      "nodeId": "<string>",
      "checkId": "<string>",
      "status": "pending",
      "createdAt": "2026-01-01T00:00:00Z",
      "result": {}
    }
  ]
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.