> ## Documentation Index
> Fetch the complete documentation index at: https://developer.hellgate.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Resolve review

> Close a `REVIEW` decision by accepting or rejecting it after manual review.

Specter forwards your resolution to the fraud backends that participated in the original decision. 
Only `REVIEW` decisions can be resolved, and each decision can be resolved once — resolving an 
already-resolved decision returns `409 CONFLICT`.




## OpenAPI

````yaml /products/specter/openapi.yaml post /api/decisions/{id}/resolve
openapi: 3.1.0
info:
  contact:
    email: hello@starfish.team
    name: Starfish GmbH & Co. KG
    url: https://hellgate.io/cpa/specter
  description: Composable decision engine and fraud prevention service.
  license:
    name: Hellgate API Terms
    url: https://hellgate.io/terms-and-conditions
  title: Specter API
  version: '1.0'
servers:
  - description: Managed instance of Specter
    url: https://{instance}.{env}.on-hellgate.cloud
    variables:
      instance:
        default: my-instance
        description: Your unique instance slug, provided during onboarding.
      env:
        default: eu1
        description: Deployment environment (currently eu1).
security: []
tags:
  - description: Evaluate transactions and retrieve decision results.
    name: Decisions
  - description: Close decisions that were flagged for manual review.
    name: Resolutions
  - description: Report payment lifecycle events for a prior decision.
    name: Lifecycle Events
  - description: Manage rulesets and their activation lifecycle.
    name: Rulesets
  - description: Configure interceptors and intercept live payment requests.
    name: Interceptors
  - description: Subscribe to decision and event notifications.
    name: Webhooks
  - description: Manage blocked field values.
    name: Blacklist
paths:
  /api/decisions/{id}/resolve:
    post:
      tags:
        - Resolutions
      summary: Resolve review
      description: >
        Close a `REVIEW` decision by accepting or rejecting it after manual
        review.


        Specter forwards your resolution to the fraud backends that participated
        in the original decision. 

        Only `REVIEW` decisions can be resolved, and each decision can be
        resolved once — resolving an 

        already-resolved decision returns `409 CONFLICT`.
      operationId: decisions_resolve
      parameters:
        - description: Decision ID
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            examples:
              accept:
                summary: Accept
                value:
                  action: accept
              reject:
                summary: Reject
                value:
                  action: reject
            schema:
              $ref: '#/components/schemas/ResolutionRequest'
        description: Resolution request
        required: true
      responses:
        '200':
          content:
            application/json:
              examples:
                accepted:
                  summary: Accepted
                  value:
                    id: 7c2b1a90-8d7e-4f6c-9b5a-3e2d1c0b9a8f
                    backend_notifications:
                      - backend: vdm
                        status: delivered
                    original_decision: REVIEW
                    resolution: ACCEPTED
                    resolved_at: '2026-06-02T12:05:00Z'
                rejected:
                  summary: Rejected
                  value:
                    id: 7c2b1a90-8d7e-4f6c-9b5a-3e2d1c0b9a8f
                    backend_notifications:
                      - backend: vdm
                        status: delivered
                    original_decision: REVIEW
                    resolution: REJECTED
                    resolved_at: '2026-06-02T12:05:00Z'
              schema:
                $ref: '#/components/schemas/ResolutionResponse'
          description: Resolution result
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
          description: Not found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Conflict'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrors'
          description: Validation errors
      callbacks: {}
      security:
        - bearerAuth: []
components:
  schemas:
    ResolutionRequest:
      description: Request body for resolving a REVIEW decision.
      properties:
        action:
          description: The merchant's resolution of the REVIEW case.
          enum:
            - accept
            - reject
          type: string
      required:
        - action
      title: ResolutionRequest
      type: object
    ResolutionResponse:
      description: Result of resolving a REVIEW decision.
      properties:
        id:
          format: uuid
          type: string
        backend_notifications:
          items:
            properties:
              backend:
                example: vdm
                type: string
              status:
                enum:
                  - delivered
                  - skipped
                  - failed
                type: string
            type: object
          type: array
        original_decision:
          description: Always REVIEW — only REVIEW decisions can be resolved.
          enum:
            - REVIEW
          type: string
        resolution:
          enum:
            - ACCEPTED
            - REJECTED
          type: string
        resolved_at:
          format: date-time
          type: string
      title: ResolutionResponse
      type: object
    Unauthorized:
      description: No valid authentication was provided.
      example:
        classifier: UNAUTHORIZED
        code: 401
        message: No valid means of authentication was provided
      properties:
        classifier:
          enum:
            - UNAUTHORIZED
          type: string
        code:
          enum:
            - 401
          type: integer
        message:
          type: string
      required:
        - classifier
        - code
        - message
      title: Unauthorized
      type: object
    Forbidden:
      description: The token lacks the scope required for this operation.
      example:
        classifier: FORBIDDEN
        code: 403
        message: Not allowed to access this resource or feature
      properties:
        classifier:
          enum:
            - FORBIDDEN
          type: string
        code:
          enum:
            - 403
          type: integer
        message:
          type: string
      required:
        - classifier
        - code
        - message
      title: Forbidden
      type: object
    NotFound:
      description: The requested resource does not exist.
      example:
        classifier: NOT_FOUND
        code: 404
        message: The requested resource does not exist
      properties:
        classifier:
          enum:
            - NOT_FOUND
          type: string
        code:
          enum:
            - 404
          type: integer
        message:
          type: string
      required:
        - classifier
        - code
        - message
      title: NotFound
      type: object
    Conflict:
      description: The request conflicts with the current state of the resource.
      example:
        classifier: CONFLICT
        code: 409
        message: Decision was already resolved
      properties:
        classifier:
          enum:
            - CONFLICT
          type: string
        code:
          enum:
            - 409
          type: integer
        message:
          type: string
      required:
        - classifier
        - code
        - message
      title: Conflict
      type: object
    ValidationErrors:
      description: Response shape for request validation failures
      example:
        classifier: VALIDATION_ERROR
        code: 422
        validation_errors:
          - message: must be a positive integer
            path: limit
      properties:
        classifier:
          example: VALIDATION_ERROR
          type: string
        code:
          example: 422
          type: integer
        validation_errors:
          items:
            properties:
              message:
                example: must be a positive integer
                type: string
              path:
                example: limit
                type: string
            type: object
          type: array
      required:
        - classifier
        - code
        - validation_errors
      title: ValidationErrors
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      description: >-
        HS256-signed JWT bearer token, obtained via the OAuth2
        client-credentials grant (see Authentication).
      scheme: bearer
      type: http

````