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

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

`POST /customer-engagement/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; scheduling for a future time is not supported. The formerly documented scheduledDateTimeUtc parameter has been removed and is ignored when sent. 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

## 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
- `500` — Unexpected server error (generic error envelope; errorCode references the internal error report)

---

[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/ce37bec66d61/schema)
