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

# 重新投递变化事件

> 立即将一个变化事件再次发送到监测器的 webhook。



## OpenAPI

````yaml POST /v1/monitors/{id}/events/{eventId}/redeliver
openapi: 3.1.0
info:
  title: querying.ai
  description: >-
    One API for every AI answer engine. Every task is asynchronous: submit, then
    collect the result via webhook or polling.
  version: 1.0.0
servers:
  - url: https://api.querying.ai
    description: Production
security:
  - bearerAuth: []
paths:
  /v1/monitors/{id}/events/{eventId}/redeliver:
    post:
      tags:
        - Monitors
      summary: Redeliver a change event
      description: >-
        Send one event again now to the monitor's current webhookUrl, with a
        fresh retry ladder, and return its delivery state after that attempt.
        Delivered events can be sent again.
      operationId: redeliverMonitorEvent
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: eventId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The event after the attempt.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorEventResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: 'WEBHOOK_NOT_SET: the monitor has no webhookUrl.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    MonitorEventResponse:
      type: object
      required:
        - success
        - data
      properties:
        success:
          type: boolean
          const: true
        data:
          type: object
          properties:
            event:
              $ref: '#/components/schemas/MonitorEvent'
    ErrorResponse:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          const: false
        error:
          $ref: '#/components/schemas/ErrorDetail'
    MonitorEvent:
      type: object
      required:
        - id
        - type
        - createdAt
        - data
        - delivery
      properties:
        id:
          type: string
          description: Also the querying-webhook-id header of every delivery.
        type:
          type: string
          enum:
            - monitor.mention.started
            - monitor.mention.stopped
            - monitor.competitor.ahead
            - monitor.source.first_cited
        createdAt:
          type: string
          format: date-time
        data:
          $ref: '#/components/schemas/MonitorEventData'
        delivery:
          type: object
          properties:
            status:
              type: string
              enum:
                - pending
                - delivered
                - failed
            attempts:
              type: integer
            deliveredAt:
              type:
                - string
                - 'null'
              format: date-time
            lastError:
              type:
                - string
                - 'null'
    ErrorDetail:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: Stable, safe to branch on. See the Errors guide for the full list.
        message:
          type: string
          description: For humans. May change.
        details:
          description: >-
            Context for the error. An array of `{field, message}` on most
            `VALIDATION_ERROR`s; an object elsewhere (for example `{id}` on
            `RESOURCE_NOT_FOUND`, `retryAfterSec` on 429 and 503 codes). Omitted
            when there is nothing to add.
          oneOf:
            - type: array
              items:
                type: object
                properties:
                  field:
                    type: string
                  message:
                    type: string
            - type: object
              additionalProperties: true
        timestamp:
          type: string
          format: date-time
    MonitorEventData:
      type: object
      description: >-
        The prompt, engine and point the event is about, the answer that crossed
        (taskId, readable with GET /v1/monitors/{id}/answers/{taskId}), and the
        event's own fields.
      properties:
        engine:
          $ref: '#/components/schemas/MonitorEngine'
        prompt:
          type: string
        location:
          type:
            - object
            - 'null'
          properties:
            latitude:
              type: number
            longitude:
              type: number
        taskId:
          type: string
        answers:
          type: integer
          description: 'mention and competitor events: answers the state is read over (5).'
        mentions:
          type: integer
          description: >-
            mention and competitor events: of those answers, how many name the
            brand.
        competitor:
          type: string
          description: 'monitor.competitor.ahead: the competitor now ahead.'
        competitorMentions:
          type: integer
          description: 'monitor.competitor.ahead: answers naming the competitor.'
        domain:
          type: string
          description: 'monitor.source.first_cited: the newly cited site.'
        url:
          type: string
          description: 'monitor.source.first_cited: the cited page.'
        label:
          type:
            - string
            - 'null'
    MonitorEngine:
      type: string
      description: >-
        An engine a monitor can schedule: the prompt surfaces sold to customers
        plus the deprecated NAVER alias. GOOGLE_AIO and GOOGLE_AIMODE are
        accepted as input aliases and echoed as GOOGLE and AIMODE.
        CITATION_ANALYSIS is an analysis task, not a prompt surface, and cannot
        be scheduled on a monitor.
      enum:
        - CHATGPT
        - GEMINI
        - PERPLEXITY
        - GOOGLE
        - AIMODE
        - NAVER_AI_BRIEF
        - NAVER_AI_TAB
        - NAVER
  responses:
    Unauthorized:
      description: Missing or invalid bearer token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error:
              code: MISSING_API_KEY
              message: Missing or invalid API key
              timestamp: '2026-07-09T04:12:00.000Z'
    NotFound:
      description: >-
        No monitor with that id for this key, or no scored row with that task
        id. A monitor owned by another account is reported the same way rather
        than as a 403.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error:
              code: NOT_FOUND
              message: No monitor with that id
              timestamp: '2026-09-22T04:12:00.000Z'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Your API key, sent as `Authorization: Bearer <key>`.'

````

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