---
title: "Start a review generation job for given customer location Ids and review template Id"
method: POST
path: "/review-template/job"
tags: ["Review Generation"]
---

# Start a review generation job for given customer location Ids and review template Id

`POST /review-template/job`

Starts a review generation job that sends the review requests to the given customer locations using an existing review template. NOTE: delivery is immediate — the scheduledDateTimeUtc parameter is not supported, does not defer sending, and will be removed in a future version. When the user lacks the required feature or the review template id does not exist, the response is HTTP 200 with an empty jobs list and an explanatory message. If any review link cannot be resolved for any of the given locations, the entire request is rejected: no jobs are created and the failure reasons are reported in the errors field.

## Request body

- object
  - `customerLocationIds` integer[], required — Ids of the customer locations (created via the customer-management service) that should receive the review request
  - `reviewTemplateId` integer, required — Id of an existing review template
  - `scheduledDateTimeUtc` string — WARNING: this parameter is not supported — review requests are dispatched immediately upon job creation regardless of this value, and the parameter will be removed in a future version. If provided, it must be an ISO-8601 local date-time without timezone offset.

## Response `200`

OK. jobs is empty and message is set when the user lacks the required feature or the review template does not exist; jobs is empty and errors is populated when any review link cannot be resolved.

- object
  - `jobs` object[], nullable — Scheduled jobs, one per customer location. Empty when nothing was scheduled.
    - `batchId` integer, required
    - `reviewTemplate` object
      - `name` string, required
      - `bodyText` string, required
      - `senderEmailId` string, email, nullable
      - `senderName` string, nullable
      - `type` 'EMAIL' | 'SMS', required
      - `createdAt` string, required — UTC date-time without timezone offset, formatted as yyyy-MM-dd'T'HH:mm:ss.SSS
      - `updatedAt` string, required — UTC date-time without timezone offset, formatted as yyyy-MM-dd'T'HH:mm:ss.SSS
      - `id` integer, nullable
      - `version` integer, nullable — Internal optimistic-locking counter, not meaningful to API consumers
    - `customerLocationId` integer, required
    - `status` 'CREATED' | 'IN_PROGRESS' | 'DONE' | 'FAILED', required
    - `createdAt` string, required — UTC date-time without timezone offset, formatted as yyyy-MM-dd'T'HH:mm:ss.SSS
    - `scheduledDateTimeUtc` string, required — UTC date-time without timezone offset, formatted as yyyy-MM-dd'T'HH:mm:ss.SSS
    - `id` integer, nullable
    - `version` integer, nullable — Internal optimistic-locking counter, not meaningful to API consumers
  - `message` string, nullable — Explanation when nothing or only part of the request could be scheduled
  - `errors` string[], required — Validation problems that blocked scheduling, e.g. review links that cannot be resolved for a location

## Other responses

- `400` — Invalid ReviewTemplateJobRequest (failed request validation)
- `401` — Request is not authenticated

---

[API](https://skmtc.net/uberall/apis/uberall-api.md) · [All operations](https://skmtc.net/uberall/apis/uberall-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/uberall/uberall-api/revisions/3e6bbc61550f/schema)
