Lattice Reviews API
Create, update, and submit performance reviews (v2)
Create, update, and submit performance reviews (v2)
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/lattice-reviews-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Lattice Reviews API
contact:
name: Lattice Developer Support
email: customercare@lattice.com
url: https://developers.lattice.com
license:
name: Proprietary
url: https://lattice.com/legal/terms-of-service
termsOfService: https://lattice.com/legal/terms-of-service
version: '1.0'
description: 'Operations tagged Reviews across 2 of this provider''s published API definitions: lattice-hris-openapi.yml, lattice-talent-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.latticehq.com/v2
description: Lattice HRIS API v2 production server
- url: https://api.latticehq.com/v1
description: Lattice Talent API v1 production server
security:
- BearerAuth: []
tags:
- name: Reviews
description: Create, update, and submit performance reviews (v2)
paths:
/reviews/draft:
post:
summary: Create a draft review
operationId: createDraftReview
tags:
- Reviews
description: Saves initial responses for a review as a draft. The review must exist and the caller must have permission to complete it.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDraftReviewRequest'
responses:
'201':
description: Draft review created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/DraftReviewResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/ServerError'
servers:
- url: https://api.latticehq.com/v2
description: Lattice HRIS API v2 production server
/reviews/{id}/submit:
post:
summary: Submit a review
operationId: submitReview
tags:
- Reviews
description: Submits a drafted review. The review must be in drafted state and all required questions must have valid responses.
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: The review entity ID
responses:
'200':
description: Review submitted successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SubmitReviewResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/ServerError'
servers:
- url: https://api.latticehq.com/v2
description: Lattice HRIS API v2 production server
/reviews/{id}/draft:
put:
summary: Update a draft review
operationId: updateDraftReview
tags:
- Reviews
description: Updates existing draft responses for a review. The review must be in drafted state.
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: The review entity ID
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDraftReviewRequest'
responses:
'200':
description: Draft review updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/DraftReviewResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/ServerError'
servers:
- url: https://api.latticehq.com/v2
description: Lattice HRIS API v2 production server
/reviewCycle/{id}/reviews:
get:
summary: List reviews in a review cycle
operationId: listReviewCycleReviews
tags:
- Reviews
description: Returns a paginated list of all reviews in a review cycle.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: The review cycle identifier
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/startingAfter'
responses:
'200':
description: Paginated list of reviews
content:
application/json:
schema:
$ref: '#/components/schemas/ReviewList'
'400':
$ref: '#/components/responses/BadRequest_2'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'500':
$ref: '#/components/responses/ServerError_2'
servers:
- url: https://api.latticehq.com/v1
description: Lattice Talent API v1 production server
/reviewee/{id}/reviews:
get:
summary: List reviews for a reviewee
operationId: listRevieweeReviews
tags:
- Reviews
description: Returns a paginated list of all reviews for a specific reviewee.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: The reviewee identifier
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/startingAfter'
responses:
'200':
description: Paginated list of reviews
content:
application/json:
schema:
$ref: '#/components/schemas/ReviewList'
'400':
$ref: '#/components/responses/BadRequest_2'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'500':
$ref: '#/components/responses/ServerError_2'
servers:
- url: https://api.latticehq.com/v1
description: Lattice Talent API v1 production server
components:
responses:
ServerError:
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
NotFound:
description: Not found - the requested resource does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
BadRequest:
description: Bad request - validation failed
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
Unauthorized:
description: Unauthorized - missing or invalid bearer token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
Forbidden:
description: Forbidden - caller lacks required permissions
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
ServerError_2:
description: Server error while processing request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
BadRequest_2:
description: Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
UnprocessableEntity:
description: Unprocessable - request is syntactically valid but cannot be processed
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
schemas:
ReviewResponseItem:
type: object
description: A single answer to a review question
properties:
questionRevisionId:
type: string
format: uuid
description: The entity ID of the question revision being answered
comment:
type:
- string
- 'null'
description: Free-form text response for free-text questions
rating:
type:
- string
- 'null'
description: Rating value for rated questions
choices:
type:
- array
- 'null'
items:
type: string
description: Selected choices for multiple-select questions
required:
- questionRevisionId
DraftReviewResponseDto:
type: object
description: Review data returned after creating or updating a draft
properties:
id:
type: string
format: uuid
description: Review ID
revieweeId:
type: string
format: uuid
description: Employee being reviewed
cycleId:
type: string
format: uuid
description: Associated review cycle ID
direction:
type: string
enum:
- downward
- self
- peer
- upward
description: Direction of the review
state:
type: string
enum:
- unstarted
- drafted
- submitted
- rejected
- shared
description: Current state of the review
responses:
type: array
items:
$ref: '#/components/schemas/SavedReviewResponse'
description: Saved review responses
updatedAt:
type: string
format: date-time
description: ISO 8601 UTC timestamp of last update
submittedAt:
type:
- string
- 'null'
format: date-time
description: ISO 8601 UTC timestamp of submission
required:
- id
- revieweeId
- cycleId
- direction
- state
- responses
- updatedAt
UpdateDraftReviewRequest:
type: object
properties:
responses:
type: array
items:
$ref: '#/components/schemas/ReviewResponseItem'
minItems: 1
description: Updated collection of review answers
required:
- responses
SubmitReviewResponse:
type: object
properties:
data:
$ref: '#/components/schemas/SubmitReviewData'
required:
- data
DraftReviewResponse:
type: object
properties:
data:
$ref: '#/components/schemas/DraftReviewResponseDto'
required:
- data
ErrorResponseDto:
type: object
properties:
status:
type: integer
description: HTTP status code
title:
type: string
description: Short error summary
detail:
type: string
description: Specific explanation of the error
errors:
type: array
items:
type: string
description: Optional array of field-level validation errors
required:
- status
- title
- detail
SavedReviewResponse:
type: object
properties:
questionRevisionId:
type: string
format: uuid
comment:
type:
- string
- 'null'
rating:
type:
- string
- 'null'
choices:
type:
- array
- 'null'
items:
type: string
required:
- questionRevisionId
CreateDraftReviewRequest:
type: object
properties:
reviewId:
type: string
format: uuid
description: The entity ID of the review (review request)
responses:
type: array
items:
$ref: '#/components/schemas/ReviewResponseItem'
minItems: 1
description: Collection of review answers
required:
- reviewId
- responses
SubmitReviewData:
type: object
properties:
id:
type: string
format: uuid
description: Review UUID
revieweeId:
type: string
format: uuid
description: Employee UUID
cycleId:
type: string
format: uuid
description: Cycle UUID
direction:
type: string
enum:
- downward
- self
- peer
- upward
state:
type: string
enum:
- submitted
description: Always "submitted" after successful submission
updatedAt:
type: string
format: date-time
description: ISO 8601 UTC timestamp
submittedAt:
type: string
format: date-time
description: ISO 8601 UTC timestamp
required:
- id
- revieweeId
- cycleId
- direction
- state
- updatedAt
- submittedAt
ErrorResponse:
type: object
properties:
error:
type: string
description: Human-readable error message
required:
- error
PaginatedList:
type: object
properties:
object:
type: string
enum:
- list
hasMore:
type: boolean
description: Whether or not there are more elements available after this set
endingCursor:
type:
- string
- 'null'
description: The cursor to use to get the next set of items in the list
required:
- object
- hasMore
ReviewStateEnum:
type: string
enum:
- unstarted
- drafted
- submitted
- rejected
- shared
ReviewList:
allOf:
- $ref: '#/components/schemas/PaginatedList'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Review'
required:
- data
Review:
type: object
properties:
id:
type: string
object:
type: string
url:
type: string
revieweeId:
type: string
format: uuid
cycleId:
type: string
format: uuid
direction:
$ref: '#/components/schemas/ReviewDirectionEnum'
state:
$ref: '#/components/schemas/ReviewStateEnum'
updatedAt:
type: string
format: date-time
submittedAt:
type:
- string
- 'null'
format: date-time
required:
- id
- revieweeId
- cycleId
- direction
- state
- updatedAt
ReviewDirectionEnum:
type: string
enum:
- downward
- self
- peer
- upward
parameters:
limit:
name: limit
in: query
required: false
schema:
type: integer
format: int32
description: Maximum number of items to return per page
startingAfter:
name: startingAfter
in: query
required: false
schema:
type: string
description: Cursor for fetching the next page of results
securitySchemes:
BearerAuth:
type: http
scheme: bearer
description: 'Service account API key passed as a Bearer token in the Authorization header. Example: Authorization: Bearer <your-api-key>
'
x-refined-from:
- lattice-hris-openapi.yml
- lattice-talent-openapi.yml