---
title: "OFREP bulk flag evaluation contract"
method: POST
path: "/ofrep/v1/evaluate/flags"
tags: ["OFREP Core"]
---

# OFREP bulk flag evaluation contract

`POST /ofrep/v1/evaluate/flags`

OFREP bulk evaluation request.
The endpoint is called by the client providers to evaluate all flags at once.

## Headers

- `If-None-Match` string

## Request body

- BulkEvaluationRequest — Evaluate multiple flags in one request
  - `context` Context — Context information for flag evaluation
    - `targetingKey` string — A string logically identifying the subject of evaluation (end-user, service, etc).

## Response `200`

OFREP successful evaluation response

- BulkEvaluationSuccess — Success response for the bulk evaluation request
  - `flags` union[], required
    - union
      - union
        - object — A boolean typed flag value
          - `key` string — Feature flag key
          - `reason` string — An OpenFeature reason for the evaluation
          - `variant` string — Variant of the evaluated flag value
          - `metadata` object — Arbitrary metadata for the flag, useful for telemetry and documentary purposes.
          - `value` boolean, required — Flag evaluation result
        - object — A string typed flag value
          - `key` string — Feature flag key
          - `reason` string — An OpenFeature reason for the evaluation
          - `variant` string — Variant of the evaluated flag value
          - `metadata` object — Arbitrary metadata for the flag, useful for telemetry and documentary purposes.
          - `value` string, required — Flag evaluation result
        - object — An integer typed flag value
          - `key` string — Feature flag key
          - `reason` string — An OpenFeature reason for the evaluation
          - `variant` string — Variant of the evaluated flag value
          - `metadata` object — Arbitrary metadata for the flag, useful for telemetry and documentary purposes.
          - `value` integer, required — Flag evaluation result
        - object — A float typed flag value
          - `key` string — Feature flag key
          - `reason` string — An OpenFeature reason for the evaluation
          - `variant` string — Variant of the evaluated flag value
          - `metadata` object — Arbitrary metadata for the flag, useful for telemetry and documentary purposes.
          - `value` number, required — Flag evaluation result
        - object — An object typed flag value
          - `key` string — Feature flag key
          - `reason` string — An OpenFeature reason for the evaluation
          - `variant` string — Variant of the evaluated flag value
          - `metadata` object — Arbitrary metadata for the flag, useful for telemetry and documentary purposes.
          - `value` object, required — Flag evaluation result
        - object — A flag evaluation that defers to the code default value
          - `key` string — Feature flag key
          - `reason` string — An OpenFeature reason for the evaluation
          - `variant` string — Variant of the evaluated flag value
          - `metadata` object — Arbitrary metadata for the flag, useful for telemetry and documentary purposes.
      - EvaluationFailure — Flag evaluation failure response
        - `key` string, required — Feature flag key
        - `errorCode` 'PARSE_ERROR' | 'TARGETING_KEY_MISSING' | 'INVALID_CONTEXT' | 'GENERAL', required — OpenFeature compatible error code. See https://openfeature.dev/specification/types#error-code
        - `errorDetails` string — An error description for logging or other needs
        - `metadata` object — Arbitrary metadata for the flag, useful for telemetry and documentary purposes.
  - `metadata` Metadata

## Other responses

- `304` — Bulk evaluation is not modified
- `400` — Bad evaluation request
- `401` — Unauthorized - You need credentials to access the API
- `403` — Forbidden - You are not authorized to access the API
- `429` — Rate limit reached on the Flag Management System
- `500` — Internal server error

## Changes

- **2025-08-21** `ace2bf25318d` — 1 breaking
  - added `#/components/schemas/codeDefaultFlag` to the `flags/items/oneOf[#/components/schemas/evaluationSuccess]/allOf[subschema #2]/` response property `oneOf` list for the response status `200`
- **2025-02-07** `113e9501a7dc` — 3 info
  - api operation id `evaluateFlagsBulk` was added
  - api tag `OFREP Core` added
  - api tag `OFREP core` removed
- **2025-01-31** `d86062c9054c` — 1 breaking, 3 info
  - the `flags/items/oneOf[#/components/schemas/evaluationSuccess]/allOf[subschema #1]/metadata` response's property type changed from `object` to no type for status `200`
  - added the optional property `flags/items/oneOf[#/components/schemas/evaluationFailure]/metadata` to the response with the `200` status
  - added the optional property `metadata` to the response with the `200` status
  - added `#/components/schemas/metadata, #/components/schemas/flagMetadataDescription, #/components/schemas/flagMetadataExamples` to the `flags/items/oneOf[#/components/schemas/evaluationSuccess]/allOf[subschema #1]/metadata` response property `allOf` list for the response status `200`
- **2024-09-06** `dd17dd9bbdeb` — 1 warning
  - the optional response header `Retry-Later` removed for the status `429`
- **2024-07-26** `2fd784b6dd1e` — 1 info
  - added the new optional request property `context/targetingKey`

[Full history](https://skmtc.dev/open-feature/apis/openfeature-remote-evaluation-protocol-ofrep/changes/ofrep/v1/evaluate/flags/post.md)

---

[API](https://skmtc.dev/open-feature/apis/openfeature-remote-evaluation-protocol-ofrep.md) · [All operations](https://skmtc.dev/open-feature/apis/openfeature-remote-evaluation-protocol-ofrep/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/open-feature/openfeature-remote-evaluation-protocol-ofrep/revisions/ace2bf25318d/schema)
