---
title: "Dry-run validation of a batch create request"
method: POST
path: "/services/batch/validate"
tags: ["services"]
---

# Dry-run validation of a batch create request

`POST /services/batch/validate`

Runs the same validation as POST /services/batch without persisting anything. Useful for checking a batch request before creation. Note: target-resolution results reflect live agent state at validation time and are not guaranteed to hold if infrastructure changes before the actual create call.
Requires the privilege [`SERVICES_READ`](https://www.gremlin.com/docs/user-management/access-control/#privileges)

## Query parameters

- `teamId` string, required

## Request body

- BatchValidateServicesRequest
  - `services` UserDefinedServiceRequest[], required
    - `name` string, required
    - `description` string
    - `targetingStrategy` TargetingStrategy
      - `type` string, required
    - `applicationSelector` ApplicationSelector
      - `applicationName` string, required
    - `statusCheckIds` string[]
    - `scheduleSettings` ScheduleSettings
      - `enabled` boolean
      - `scheduleType` 'OnlyOnce' | 'Random'
      - `triggerType` 'Passed' | 'RunOnce' | 'Always'
      - `triggers` Trigger[]
        - `dayOfWeek` 'M' | 'T' | 'W' | 'Th' | 'F' | 'S' | 'Su', required
        - `scheduleWindows` ScheduleWindow[], required
          - `start` string, required — Time in HH:mm format (24-hour)
          - `end` string, required — Time in HH:mm format (24-hour)
    - `tags` object
    - `multiSelectTags` object
    - `serviceOwner` ServiceOwner
      - `identifier` string
    - `startBaselineRequest` StartBaselineRequest — Represents a request to run all tests
      - `tests` string[]
    - `awsTargetsArn` string[]
    - `gcpTargetResourceIds` string[]
    - `azureTargetResourceIds` string[]
    - `intelligentHealthCheckTargetIds` string[]
    - `enabledGremlinAwsStatusCheck` boolean
    - `originatingScenarioId` string

## Response `default`

default response

- BatchValidateServicesResponse
  - `valid` boolean — True if every item and every batch-wide check passed, otherwise false.
  - `batchErrors` string[] — Errors that apply to the whole batch rather than one item (e.g. limit exceeded).
  - `serviceValidationErrors` ServiceValidationErrors[] — One entry per service request that failed validation.
    - `index` integer — Position of this item in the request's services list.
    - `name` string — The requested name for the service request at this position.
    - `errors` FieldError[] — Errors that apply to the request at this position.
      - `field` string — The request field the error applies to, or null for a whole-item error.
      - `message` string — Human-readable description of the validation failure.

## Other responses

- `401` — Authorization header missing or malformed. Please provide proper credentials in the authorization header.
- `403` — User requires privilege for target team: SERVICES_READ

## Changes

- **2026-09-29** `7bd565f001b3` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/gremlin/apis/gremlin-api/changes/services/batch/validate/post.md)

---

[API](https://skmtc.dev/gremlin/apis/gremlin-api.md) · [All operations](https://skmtc.dev/gremlin/apis/gremlin-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gremlin/apis/gremlin-api/revisions/7bd565f001b3?raw)
