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

# Update error

> Updates a curated error's name, description, type, and severity. The subflow scope is auto-managed via flavour assignment and cannot be set here.

Required API key permission: `observe:errors:write`.



## OpenAPI

````yaml /api-reference/openapi/observe.yaml put /observe/errors/{errorID}
openapi: 3.1.1
info:
  version: 1.0.0
  title: Corbado API
  description: >
    # Introduction

    This documentation gives an overview of all Corbado API calls to implement
    authentication observe.
  contact:
    name: Corbado team
    email: support@corbado.com
    url: https://www.corbado.com
servers:
  - url: https://api.cloud.corbado.io/v1
security:
  - bearerAuth: []
tags:
  - name: ObserveFlow
    description: Flow search and related APIs
    x-group: Journeys and users
  - name: ObserveSubFlow
    description: Subflow search and related APIs
    x-group: Journeys and users
  - name: ObserveUser
    description: User search and related APIs
    x-group: Journeys and users
  - name: ObserveIdentifier
    description: Identifier search over submitted identifiers
    x-group: Journeys and users
  - name: ObserveClientEnv
    description: Client environment search APIs
    x-group: Journeys and users
  - name: ObserveTimeSeries
    description: Time series query APIs
    x-group: Metrics and funnels
  - name: ObserveFunnel
    description: Historical funnel metrics, dictionaries and coverage.
    x-group: Metrics and funnels
  - name: ObserveEvent
    description: Event ingestion and event feed APIs
    x-group: Events
  - name: ObserveError
    description: Named authentication errors and recommendations.
    x-group: Error management
  - name: ObserveErrorFlavour
    description: Error variants and their impact on authentication outcomes.
    x-group: Error management
  - name: ObserveFinding
    description: Curated findings that explain errors, their impact and who has to act.
    x-group: Error management
  - name: ObserveAlert
    description: Authentication alert rules, instances and history.
    x-group: Alert management
  - name: ObserveAnnotation
    description: >-
      Annotations, the project's memory (what is true about the data and how to
      read it)
    x-group: Annotations
  - name: ObserveTableExport
    description: Table export file listing and download APIs
    x-group: Data exports
  - name: ObserveTimeSeriesExport
    description: Time-series export generation and downloads.
    x-group: Data exports
  - name: ObserveDataExport
    description: Data export APIs
    x-group: User data
  - name: ObserveDataDeletionJob
    description: Data deletion job APIs
    x-group: User data
  - name: ObserveFlowTypeDefinition
    description: Flow type definitions used in authentication journeys.
    x-group: Catalogs and labels
  - name: ObserveCatalog
    description: Catalog APIs
    x-group: Catalogs and labels
  - name: OpenAPI
    description: Downloadable API specification
  - name: ProjectOperationExecution
    description: Project-scoped operation history and pipeline health
  - name: ObserveClassification
    description: Flow and subflow classification APIs
  - name: ObserveIntegrationStats
    description: Integration stats APIs
  - name: ObserveTimeSeriesPrecalculation
    description: Time series precalculation APIs
  - name: ObserveIDList
    x-group: Saved ID lists
    description: Stored ID-list selection APIs
  - name: ObserveDataContext
    description: Schema-loose data context APIs for agent and debugging tooling
  - name: ObserveData
    description: Observe data administration APIs
  - name: ObserveTrackingStats
    description: Tracking ingestion stats APIs
  - name: ObserveProbe
    description: Raw probe capture items (internal autocapture diagnostics)
  - name: ObserveTelemetry
    description: Raw SDK/integration diagnostic telemetry
  - name: ObserveExperiment
    x-group: Experiments
    description: Experiment catalog and run APIs
  - name: ObserveDataPolicy
    description: >-
      Project data policy catalogue (retention selected by the SDK's
      meta.dataPolicy code)
  - name: ObserveMetadata
    x-group: Metadata
    description: Authenticator metadata APIs (FIDO MDS + passkey AAGUID)
  - name: ObservePasskey
    x-group: Passkey analysis
    description: Observed passkey search and cohort analysis.
paths:
  /observe/errors/{errorID}:
    put:
      tags:
        - ObserveError
      summary: Update error
      description: >-
        Updates a curated error's name, description, type, and severity. The
        subflow scope is auto-managed via flavour assignment and cannot be set
        here.


        Required API key permission: `observe:errors:write`.
      operationId: ObserveErrorUpdate
      parameters:
        - name: errorID
          in: path
          required: true
          description: Error ID (format `err-<number>`).
          schema:
            type: string
          x-oapi-codegen-extra-tags:
            validate: required,id=err
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/observeErrorUpdateReq'
      responses:
        '200':
          description: Error updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/observeError'
        default:
          $ref: '#/components/responses/error'
      security:
        - bearerAuth:
            - observe:errors:write
components:
  schemas:
    observeErrorUpdateReq:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: Human-readable error name.
          x-oapi-codegen-extra-tags:
            validate: required,min=1,max=255
        description:
          type: string
          description: Optional longer description of the error.
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=1024
        type:
          type: string
          enum:
            - general
            - project-specific
          description: Error type; defaults to project-specific.
          x-oapi-codegen-extra-tags:
            validate: omitempty,oneof=general project-specific
        severity:
          type: string
          enum:
            - error
            - warn
            - info
          description: Triage severity; defaults to error.
          x-oapi-codegen-extra-tags:
            validate: omitempty,oneof=error warn info
    observeError:
      type: object
      required:
        - id
        - name
        - type
        - severity
        - createdMs
        - updatedMs
      properties:
        id:
          type: string
          description: Error ID (format `err-<number>`).
        name:
          type: string
          description: Human-readable error name.
        description:
          type: string
          description: Optional longer description of the error.
        subFlowType:
          type: string
          description: >-
            Auto-managed subflow scope — stamped from the first assigned
            flavours, enforced on every later assignment (an error never mixes
            subflow types), cleared when the last member is unassigned. Never
            user input. Absent while the error has no members.
        type:
          type: string
          enum:
            - general
            - project-specific
          description: >-
            Whether the error is a general (cross-deployment) or
            project-specific one.
        severity:
          type: string
          enum:
            - error
            - warn
            - info
          description: User-declared triage severity of an occurrence of this error.
        createdMs:
          type: integer
          format: int64
          description: Creation time in milliseconds since epoch.
        updatedMs:
          type: integer
          format: int64
          description: Last update time in milliseconds since epoch.
        recommendation:
          $ref: '#/components/schemas/observeErrorRecommendation'
        lastImpact:
          $ref: '#/components/schemas/observeErrorImpactSnapshot'
        findingID:
          type: string
          description: >-
            The finding that owns (explains) this error (format `fnd-<number>`).
            Absent when the error is part of

            no finding. Set via the finding's errors endpoint.
    observeErrorRecommendation:
      type: object
      description: >
        Curated guidance attached to an error (at most one per error): what the
        error is and how to reproduce it, the recommended handling (ignore /
        observe / fix), and — for fix — the fix in detail. Human-created like
        the error itself; classification never writes it. Free-text fields are
        markdown.
      required:
        - id
        - action
        - summary
        - source
        - createdMs
        - updatedMs
      properties:
        id:
          type: string
          description: Recommendation ID (format `erc-<number>`).
        action:
          type: string
          enum:
            - ignore
            - observe
            - fix
          description: Recommended handling of the error.
        summary:
          type: string
          description: One-line summary of the recommendation.
        explanation:
          type: string
          description: What happens and why (root cause), as markdown.
        reproduction:
          type: string
          description: Preconditions and steps to reproduce, as markdown.
        fixDetails:
          type: string
          description: >-
            The recommended fix in detail, as markdown. Present when action is
            fix.
        source:
          type: string
          enum:
            - manual
            - ai-draft
          description: Provenance of the recommendation content.
        annotationID:
          type: string
          description: >-
            ID of the annotation marking that the recommended action was carried
            out (format `ann-<number>`). Its

            presence IS the resolved state: the annotation's date is when, its
            description what was done. Absent

            while still open. The link survives the annotation's deletion;
            `annotation` is then absent.
        annotation:
          $ref: '#/components/schemas/observeAnnotation'
        assets:
          type: array
          maxItems: 100
          description: >
            Media assets (screenshots, videos) attached to this recommendation,
            oldest first. Only confirmed (ready) uploads appear. View URLs are
            minted per asset via the downloadUrl endpoint.
          items:
            $ref: '#/components/schemas/observeAsset'
        createdMs:
          type: integer
          format: int64
          description: Creation time in milliseconds since epoch.
        updatedMs:
          type: integer
          format: int64
          description: Last update time in milliseconds since epoch.
    observeErrorImpactSnapshot:
      type: object
      description: >
        Result of the most recent impact analysis run for this error: the
        completion-rate and completed-duration comparison against the baseline,
        plus when it ran and over which range. Stored when the impact endpoint
        is called with the error's ID; absent while no analysis ran (or the
        error lost its last member flavour since). Numbers describe the member
        set at analysis time — `analyzedAtMs` says how current they are.
      required:
        - analyzedAtMs
        - fromDate
        - toDate
        - baselineMode
        - affectedFlowCount
      properties:
        population:
          $ref: '#/components/schemas/observeImpactPopulation'
        comparison:
          $ref: '#/components/schemas/observeImpactPopulation'
        ignoredDimensions:
          type: array
          maxItems: 20
          items:
            type: string
          description: >-
            Dimensions of population or comparison that cannot be filtered and
            were left out.
        flowTypes:
          type: array
          maxItems: 50
          items:
            type: string
          description: >-
            Flow types the affected flows were restricted to. Absent when all
            flow types were analyzed.
        analyzedAtMs:
          type: integer
          format: int64
          description: When the analysis ran, in milliseconds since epoch.
        fromDate:
          type: string
          description: >-
            Analyzed range start, naive UTC datetime (inclusive) — as the
            analysis request carried it.
        toDate:
          type: string
          description: Analyzed range end, naive UTC datetime (exclusive).
        baselineMode:
          type: string
          description: >-
            How the baseline was built — `population` (plain comparable-engaged
            population) or a matching-report mode (`matched`, `env-only`,
            `provided-list`).
        matchingDimensions:
          type: array
          items:
            type: string
          description: >-
            Dimensions the matched baseline held constant (pathPrefix, osName,
            browserName, touchpoint, applicationID). Absent without matching.
        droppedMatchingDimensions:
          type: array
          items:
            type: string
          description: >-
            Requested matching dimensions left out because the comparison group
            differs in them or switches them off.
        matchRate:
          type: number
          format: double
          description: >-
            Share of affected flows that found comparison flows at any collapse
            level. Absent without matching.
        exactMatchRate:
          type: number
          format: double
          description: >-
            Share of affected flows matched on every matching dimension — how
            like-for-like the comparison is. Absent without matching.
        affectedFlowCount:
          type: integer
          format: int64
          description: Distinct affected flows the analysis rested on.
        baselineFlowCount:
          type: integer
          format: int64
          description: Distinct baseline flows; absent when no comparable flows existed.
        affectedCompletionRate:
          type: number
          format: double
          description: >-
            Completion rate of the affected flows. Absent when none had an
            attempts outcome.
        baselineCompletionRate:
          type: number
          format: double
          description: >-
            Completion rate of the baseline, standardized to the affected
            group's device mix. Absent when the baseline had no attempts-outcome
            flows.
        completionLift:
          type: number
          format: double
          description: >-
            affectedCompletionRate minus baselineCompletionRate — the
            completion-rate impact (negative means flows hit by this error
            complete less). Absent when either side has no rate.
        affectedCompletedDurationP50Ms:
          type: integer
          format: int64
          description: >-
            Median duration of COMPLETED affected flows in milliseconds. Absent
            when none completed.
        baselineCompletedDurationP50Ms:
          type: integer
          format: int64
          description: >-
            Median duration of completed baseline flows in milliseconds. Absent
            when none completed.
        perFlowType:
          type: array
          maxItems: 1000
          items:
            $ref: '#/components/schemas/observeErrorImpactSnapshotFlowType'
          description: >-
            Per-flow-type completion comparison of that analysis, biggest
            affected slice first — enough to mark a blended lift that hides
            differently-hurt flow types. Absent on snapshots stored before the
            breakdown existed.
        subflowCode:
          type: string
          description: >-
            Long-path code of the erroring subflow the subflow-completion fields
            below describe. Absent when the analysis produced no subflow
            comparison.
        subflowCompletionDefinitional:
          type: boolean
          description: >-
            True when the subflow comparison was definitional (the flavours only
            occur on failed attempts) — render no subflow impact from this
            snapshot.
        affectedSubflowCompletionRate:
          type: number
          format: double
          description: >-
            Share of the affected side's measured attempts at the erroring
            subflow that completed.
        baselineSubflowCompletionRate:
          type: number
          format: double
          description: >-
            Share of the baseline side's measured attempts at the erroring
            subflow that completed.
        subflowCompletionLift:
          type: number
          format: double
          description: >-
            affectedSubflowCompletionRate minus baselineSubflowCompletionRate —
            the subflow-completion impact. Absent when either side measured
            nothing.
        affectedUserCount:
          type: integer
          format: int64
          description: >-
            Distinct users behind the affected flows, over the whole affected
            group (older snapshots counted the sampled flows only). Absent on
            older snapshots and when no affected flow carried a user.
        estimatedLostCompletions:
          type: integer
          format: int64
          description: >-
            Affected attempts that would have completed at the baseline rate
            (affected attempts × −completionLift, 0 when the lift is not
            negative), scaled to the whole affected population when the analysis
            was sampled. Absent on older snapshots and when there is no lift.
        sampled:
          type: boolean
          description: >-
            True when the affected group hit the analysis flow limit; rates then
            describe the most recent affectedFlowCount flows.
        affectedPopulationFlowCount:
          type: integer
          format: int64
          description: >-
            All affected flows in the analyzed range, also when only a sample
            was analyzed. Absent on older snapshots.
    errorRspV2:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - message
          properties:
            message:
              description: Error message
              type: string
              example: Validation failed
            details:
              description: Validation error details per field
              type: array
              items:
                type: object
                required:
                  - field
                  - message
                properties:
                  field:
                    description: Field name that failed validation
                    type: string
                    example: projectID
                  message:
                    description: Validation error message
                    type: string
                    example: required
    observeAnnotation:
      type: object
      required:
        - id
        - kind
        - platform
        - headline
        - approximate
        - display
        - source
        - createdMs
        - updatedMs
      properties:
        id:
          type: string
          description: Annotation ID (format `ann-<number>`).
        kind:
          $ref: '#/components/schemas/observeAnnotationKind'
        platform:
          type: boolean
          description: >-
            Platform annotation that applies to every project; managed by
            Corbado.
        headline:
          type: string
          description: One line saying what the annotation records.
        description:
          type: string
          description: Optional Markdown body with details.
        dateFrom:
          type: string
          description: >-
            Date as stated, in project time (UTC for platform annotations), in
            the format of its precision.
        dateTo:
          type: string
          description: >-
            Last unit a period covers (inclusive), in the same format. Absent on
            an ongoing period.
        datePrecision:
          $ref: '#/components/schemas/observeAnnotationDatePrecision'
        dateFromMs:
          type: integer
          format: int64
          description: Start of `dateFrom` in milliseconds since epoch.
        dateToMs:
          type: integer
          format: int64
          description: End of the span (exclusive) in milliseconds since epoch.
        approximate:
          type: boolean
          description: The date is not exact.
        status:
          $ref: '#/components/schemas/observeAnnotationStatus'
        effect:
          $ref: '#/components/schemas/observeAnnotationEffect'
        reading:
          type: string
          description: Reading rule this date brings (events and periods).
        scope:
          $ref: '#/components/schemas/observeAnnotationScope'
        series:
          type: array
          maxItems: 50
          items:
            type: string
        display:
          type: boolean
          description: Shown on charts.
        source:
          $ref: '#/components/schemas/observeAnnotationSource'
        evidence:
          type: array
          maxItems: 4
          items:
            $ref: '#/components/schemas/observeAnnotationEvidence'
        refs:
          type: array
          maxItems: 50
          items:
            $ref: '#/components/schemas/observeAnnotationRef'
        externalKey:
          type: string
        createdMs:
          type: integer
          format: int64
          description: Creation time in milliseconds since epoch.
        updatedMs:
          type: integer
          format: int64
          description: Last update time in milliseconds since epoch.
    observeAsset:
      type: object
      description: >
        One user-uploaded media file (screenshot or video). The bytes live in a
        private object store; viewing goes through short-lived presigned URLs
        (see the downloadUrl endpoint), so this object carries metadata only.
      required:
        - id
        - fileName
        - contentType
        - sizeBytes
        - status
        - createdMs
      properties:
        id:
          type: string
          description: Asset ID (format `ast-<number>`).
        fileName:
          type: string
          description: Original file name, for display.
        contentType:
          type: string
          description: >-
            MIME type (image/png, image/jpeg, image/webp, image/gif, video/mp4,
            video/webm, video/quicktime).
        sizeBytes:
          type: integer
          format: int64
          description: Declared (and, once ready, verified) file size in bytes.
        status:
          type: string
          enum:
            - pending
            - ready
          description: Upload lifecycle — pending until the uploaded object was confirmed.
        createdMs:
          type: integer
          format: int64
          description: Creation time in milliseconds since epoch.
    observeImpactPopulation:
      type: object
      description: >-
        A group of flows defined by environment values: flows matching every
        value in `dimensions` and not

        matching all values in `exclude`. Keys are `os`, `browser`,
        `applicationId` (format `app-<number>`) or a

        custom tag key such as `country`; other keys (e.g. `vendor`) cannot be
        filtered and are reported as

        ignored. An empty `dimensions` object means all flows.
      required:
        - dimensions
      properties:
        dimensions:
          type: object
          additionalProperties:
            type: string
          description: 'Values every flow of the group has, e.g. `{"os": "Android"}`.'
          x-oapi-codegen-extra-tags:
            validate: required,max=10,dive,keys,min=1,max=64,endkeys,min=1,max=128
        exclude:
          type: object
          additionalProperties:
            type: string
          description: >-
            Flows having all of these values are left out, e.g. `{"country":
            "KR"}`.
          x-oapi-codegen-extra-tags:
            validate: omitempty,max=10,dive,keys,min=1,max=64,endkeys,min=1,max=128
    observeErrorImpactSnapshotFlowType:
      type: object
      description: One flow type's slice of a stored impact snapshot.
      required:
        - flowType
        - affectedFlowCount
        - attemptCount
      properties:
        flowType:
          type: string
          description: Flow type name; empty for flows carrying no type.
        affectedFlowCount:
          type: integer
          format: int64
          description: Affected flows of this type in that analysis.
        attemptCount:
          type: integer
          format: int64
          description: >-
            Affected flows of this type with an attempts outcome — what the
            type's lift rests on.
        completionLift:
          type: number
          format: double
          description: >-
            The type's completion lift (affected minus type-standardized
            baseline). Absent when either side had no rate.
    observeAnnotationKind:
      type: string
      enum:
        - event
        - period
        - setup
        - interpretation
        - constraint
        - follow-up
      description: >-
        What the annotation records: `event` something changed, `period`
        something held over a span, `setup` a fact

        about how the project works, `interpretation` how to read the data,
        `constraint` which data may be used,

        `follow-up` an unknown or open work.
    observeAnnotationDatePrecision:
      type: string
      enum:
        - month
        - date
        - hour
        - datetime
      description: Unit the annotation's dates were stated in.
    observeAnnotationStatus:
      type: string
      enum:
        - open
        - done
      description: Where a follow-up stands.
    observeAnnotationEffect:
      type: string
      enum:
        - context
        - boundary
        - degraded
        - broken
        - missing
      description: >-
        How an event or period changes the reading of the data: `context`
        background only, `boundary` compare only

        within one side, `degraded` data partly wrong, `broken` data wrong,
        `missing` no data.
    observeAnnotationScope:
      type: object
      description: >-
        Narrows what the annotation applies to, by time-series dimension. Absent
        means the whole project.
      additionalProperties: false
      properties:
        applicationID:
          type: string
          description: Application ID (format `app-<number>`).
          x-oapi-codegen-extra-tags:
            validate: omitempty,id=app
        os:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        osVersion:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        browser:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag1:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag2:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag3:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag4:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag5:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag6:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag7:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag8:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag9:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag10:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag11:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag12:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag13:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag14:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag15:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag16:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag17:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag18:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag19:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        customTag20:
          type: string
          x-oapi-codegen-extra-tags:
            validate: omitempty,min=1,max=255
        experimentRunID:
          type: string
          description: Experiment run ID (format `exr-<number>`).
          x-oapi-codegen-extra-tags:
            validate: omitempty,id=exr
        experimentVariantID:
          type: string
          description: Experiment variant ID (format `exv-<number>`).
          x-oapi-codegen-extra-tags:
            validate: omitempty,id=exv
    observeAnnotationSource:
      type: string
      enum:
        - manual
        - agent
        - system
      description: Who wrote the annotation or made a change.
    observeAnnotationEvidence:
      type: string
      enum:
        - code
        - trace
        - data
        - customer
      description: Kind of evidence an annotation rests on.
    observeAnnotationRef:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          enum:
            - finding
            - annotation
            - project
            - commit
            - release
            - url
          description: What the reference points to.
          x-oapi-codegen-extra-tags:
            validate: required,oneof=finding annotation project commit release url
        value:
          type: string
          description: >-
            Finding, annotation or project ID, commit SHA, release name or
            absolute URL.
          x-oapi-codegen-extra-tags:
            validate: required,min=1,max=2000
  responses:
    error:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/errorRspV2'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Use an Observe API key from the management console. The key selects the
        project and must grant the permission listed on the operation. Keep this
        key on your server.

````

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