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

# Get alert API

> Full detail for one alert including the webhook secret your consumer needs to verify signatures. Free.

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Why does this endpoint return the webhook secret?">
    Because your consumer needs it to verify the HMAC signature on every delivery, and there is no other way to recover it after creation. Treat the response as sensitive and never log it.
  </Accordion>

  <Accordion title="I get a 404 for an alert I know exists.">
    Alerts are owned strictly per API key. An alert created with one key is invisible to another key on the same account, and returns 404 rather than 403 so that ids cannot be probed. Use the key that created it.
  </Accordion>
</AccordionGroup>


## OpenAPI

````yaml GET /v1/alerts/{id}
openapi: 3.1.0
info:
  title: TechnologyChecker API
  description: >-
    Discover technology stacks, track market trends, and enrich data with
    company intelligence.
  version: 1.0.0
  contact:
    name: TechnologyChecker Support
    email: support@technologychecker.io
    url: https://technologychecker.io
servers:
  - url: https://api.technologychecker.io
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Domain technologies
    description: Look up technologies detected on any domain
  - name: Technology data
    description: Search, look up, and get details on tracked technologies
  - name: Market intelligence
    description: Technology stats, trends, and market share
  - name: Company data
    description: Firmographic and company intelligence
  - name: Live detection
    description: Real-time technology detection with browser rendering
  - name: Signals
    description: >-
      Intent signals derived from technology state transitions: who adopted, who
      churned, who switched, and who has a gap in their stack.
  - name: Alerts
    description: >-
      Saved signal queries delivered to your webhook. Every signal you can
      query, you can subscribe to.
  - name: Audiences
    description: >-
      Saved groups of domains — uploaded lists or computed recipes — that you
      can profile, slice and monitor.
  - name: Lead lists
    description: >-
      Build and export targeted domain lists combining technology detection with
      company data.
paths:
  /v1/alerts/{id}:
    get:
      tags:
        - Alerts
      summary: Get alert API
      description: >-
        Full detail for one alert, **including `webhook_secret`** — your
        consumer needs it to verify signatures. Another key's alert id returns
        404. Free.
      operationId: getAlert
      parameters:
        - name: id
          in: path
          required: true
          description: The alert id.
          schema:
            type: string
            example: alrt_9f2c4a1e
      responses:
        '200':
          description: Alert detail including the webhook secret
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    type: object
                    properties:
                      alert:
                        allOf:
                          - $ref: '#/components/schemas/Alert'
                          - type: object
                            properties:
                              webhook_secret:
                                type: string
                                example: whsec_3f9a2b7c1d4e5f60
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    Alert:
      type: object
      properties:
        id:
          type: string
          example: alrt_9f2c4a1e
        name:
          type: string
          example: Who leaves Shopify (US, 51-200)
        signal_types:
          type: array
          items:
            type: string
            enum:
              - churn
              - adoption
              - switch
          example:
            - switch
        scope:
          type: object
          description: The saved scope. Immutable after creation.
          properties:
            kind:
              type: string
              enum:
                - technology
                - category
                - domains
                - segment
              example: technology
            technology_id:
              type: integer
              nullable: true
              example: 2184
            technology_name:
              type: string
              nullable: true
              example: Shopify
            category_id:
              type: integer
              nullable: true
            domains:
              type: array
              nullable: true
              items:
                type: string
            segment_id:
              type: string
              nullable: true
        direction:
          type: string
          nullable: true
          enum:
            - from
            - to
            - null
        missing_category_id:
          type: integer
          nullable: true
          description: Set turns an adoption alert into a whitespace-entrant alert.
        filters:
          $ref: '#/components/schemas/AlertFilters'
        webhook_url:
          type: string
          format: uri
          example: https://example.com/hooks/tc
        status:
          type: string
          enum:
            - active
            - paused
            - disabled
          example: active
        delivery_frequency:
          type: string
          enum:
            - hourly
            - daily
          default: daily
          example: daily
        crawl_cadence:
          type: string
          nullable: true
          enum:
            - daily
            - weekly
            - monthly
            - null
          example: monthly
        last_fired_at:
          type: string
          nullable: true
          example: '2026-06-10 17:39:39'
        consecutive_failures:
          type: integer
          example: 0
        created_at:
          type: string
          example: '2026-06-10T16:39:39.000Z'
        updated_at:
          type: string
          example: '2026-06-10T16:39:39.000Z'
    AlertFilters:
      type: object
      description: >-
        Row-level filters applied to every sweep. Firmographic keys use the same
        vocabulary as the Signals API.
      properties:
        min_confidence:
          type: number
          format: float
          default: 0.5
          description: Detection-rate floor.
          example: 0.5
        churn_reliability:
          type: array
          items:
            type: string
            enum:
              - high
              - medium
              - low
          description: >-
            Churn alerts only. Defaults to `["high","medium"]` — low-reliability
            technologies flap and produce false-churn spam. Unclassified
            technologies count as medium.
          example:
            - high
            - medium
        min_confidence_label:
          type: string
          enum:
            - high
            - medium
            - low
          description: >-
            Per-event confidence floor, off by default. Unlike
            `churn_reliability` this gates the combined score and applies to
            adoption too, so it is how a watchlist suppresses single-scan noise.
            Note that a churn with fewer than 2 detections is floored to `low`,
            so any value above `low` drops single-scan churns.
          example: medium
        country:
          type: string
          example: united states
        city:
          type: string
        state:
          type: string
        industry:
          type: string
        industry_code:
          type: integer
        employees:
          type: string
          example: 51-200
        company_type:
          type: string
        founded_min:
          type: integer
        founded_max:
          type: integer
        company:
          type: boolean
          description: Attach company cards without filtering.
        has_email:
          type: boolean
        has_phone:
          type: boolean
        social:
          type: string
        language:
          type: string
        web_country:
          type: string
    ApiError:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            code:
              type: string
              example: UNAUTHORIZED
            message:
              type: string
              example: Missing or invalid API key
  responses:
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    RateLimited:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key in format `tapi_live_[32-char]` (live) or `tapi_test_[32-char]`
        (test)

````