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

# Update Facts

> Change the wording and/or active state of facts by id. Each item sets `text`, `is_active`, or both. Changing the wording keeps the old wording for verdicts already judged against it. Setting `is_active` to false keeps the fact listed but excludes it from future fact-checking. Returns per-item results { updated, skipped, rejected }; the batch never fails as a whole. Skip reasons: not_found. Rejection reasons: duplicate_id (the same fact appears twice in the request), plan_limit (activating it would exceed the plan's `fact_limit`).



## OpenAPI

````yaml https://api.peec.ai/customer/v1/openapi/json post /facts/update
openapi: 3.0.3
info:
  title: Peec AI Customer API
  description: Development documentation
  version: 1.0.0
  contact:
    name: Peec AI Team
    email: support@peec.ai
servers:
  - url: https://api.peec.ai/customer/v1
security: []
paths:
  /facts/update:
    post:
      tags:
        - Brand Perception
      summary: Update Facts
      description: >-
        Change the wording and/or active state of facts by id. Each item sets
        `text`, `is_active`, or both. Changing the wording keeps the old wording
        for verdicts already judged against it. Setting `is_active` to false
        keeps the fact listed but excludes it from future fact-checking. Returns
        per-item results { updated, skipped, rejected }; the batch never fails
        as a whole. Skip reasons: not_found. Rejection reasons: duplicate_id
        (the same fact appears twice in the request), plan_limit (activating it
        would exceed the plan's `fact_limit`).
      operationId: postFactsUpdate
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                project_id:
                  description: Required if using a company api key
                  example: or_f45b94ba-5e35-4982-93ed-285e72ee14eb
                  type: string
                facts:
                  minItems: 1
                  maxItems: 50
                  type: array
                  items:
                    type: object
                    properties:
                      fact_id:
                        type: string
                        format: uuid
                        pattern: >-
                          ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        description: The fact ID returned by List Facts.
                      text:
                        description: >-
                          Replacement wording. Earlier verdicts keep the wording
                          they were judged against.
                        type: string
                        minLength: 1
                      is_active:
                        description: >-
                          Whether Peec should use the fact in future
                          fact-checking.
                        type: boolean
                    required:
                      - fact_id
              required:
                - facts
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                project_id:
                  description: Required if using a company api key
                  example: or_f45b94ba-5e35-4982-93ed-285e72ee14eb
                  type: string
                facts:
                  minItems: 1
                  maxItems: 50
                  type: array
                  items:
                    type: object
                    properties:
                      fact_id:
                        type: string
                        format: uuid
                        pattern: >-
                          ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        description: The fact ID returned by List Facts.
                      text:
                        description: >-
                          Replacement wording. Earlier verdicts keep the wording
                          they were judged against.
                        type: string
                        minLength: 1
                      is_active:
                        description: >-
                          Whether Peec should use the fact in future
                          fact-checking.
                        type: boolean
                    required:
                      - fact_id
              required:
                - facts
          multipart/form-data:
            schema:
              type: object
              properties:
                project_id:
                  description: Required if using a company api key
                  example: or_f45b94ba-5e35-4982-93ed-285e72ee14eb
                  type: string
                facts:
                  minItems: 1
                  maxItems: 50
                  type: array
                  items:
                    type: object
                    properties:
                      fact_id:
                        type: string
                        format: uuid
                        pattern: >-
                          ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        description: The fact ID returned by List Facts.
                      text:
                        description: >-
                          Replacement wording. Earlier verdicts keep the wording
                          they were judged against.
                        type: string
                        minLength: 1
                      is_active:
                        description: >-
                          Whether Peec should use the fact in future
                          fact-checking.
                        type: boolean
                    required:
                      - fact_id
              required:
                - facts
      responses:
        '200':
          description: Per-item update results
          content:
            application/json:
              schema:
                type: object
                properties:
                  updated:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          pattern: >-
                            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                          example: 0198f000-0000-7000-8000-000000000001
                        text:
                          type: string
                          example: Plans start at €99 per month.
                          description: The statement Peec checks AI claims against.
                        origin:
                          type: string
                          enum:
                            - website
                            - manual
                          example: manual
                          description: >-
                            How the fact was added: `manual` by a person,
                            `website` extracted from the project's website.
                        is_active:
                          type: boolean
                          description: >-
                            Whether Peec uses the fact in future fact-checking.
                            An inactive fact stays listed.
                        edited_at:
                          nullable: true
                          example: '2026-09-18T10:00:00.000Z'
                          description: >-
                            When the wording was last changed, or null if never
                            edited.
                          type: string
                          format: date-time
                          pattern: >-
                            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                        created_at:
                          type: string
                          format: date-time
                          pattern: >-
                            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                          example: '2026-09-01T10:00:00.000Z'
                      required:
                        - id
                        - text
                        - origin
                        - is_active
                        - edited_at
                        - created_at
                  skipped:
                    type: array
                    items:
                      type: object
                      properties:
                        fact_id:
                          type: string
                          format: uuid
                          pattern: >-
                            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        reason:
                          type: string
                          enum:
                            - not_found
                      required:
                        - fact_id
                        - reason
                  rejected:
                    type: array
                    items:
                      type: object
                      properties:
                        fact_id:
                          type: string
                          format: uuid
                          pattern: >-
                            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        reason:
                          type: string
                          enum:
                            - duplicate_id
                            - no_changes
                            - plan_limit
                        message:
                          type: string
                      required:
                        - fact_id
                        - reason
                        - message
                required:
                  - updated
                  - skipped
                  - rejected
                description: Per-item update results
      security:
        - APIKeyHeader: []
        - APIKeyQuery: []
        - BearerAuth: []
components:
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
    APIKeyQuery:
      type: apiKey
      in: query
      name: api_key
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.