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

# Get Keyword

> One keyword: its figures over the period with their range, the top 10 of the
latest check, the prompts that make AI search it and the tasks about your pages.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/brands/{brand_id}/keywords/{keyword_id}
openapi: 3.1.0
info:
  description: >-
    Read-only access to one organization's brands, as the member who created the
    API key. Each key may make 120 requests a minute. Separate organisation
    service tokens can start Snapshots. Every error is an RFC 9457 problem
    (`application/problem+json`) whose `code` names it.
  summary: Read your brands' AI visibility in Heralded.
  title: Heralded API
  version: '1'
servers:
  - url: https://api.heralded.ai
security: []
paths:
  /v1/brands/{brand_id}/keywords/{keyword_id}:
    get:
      tags:
        - v1
      summary: Get Keyword
      description: >-
        One keyword: its figures over the period with their range, the top 10 of
        the

        latest check, the prompts that make AI search it and the tasks about
        your pages.
      operationId: getKeyword
      parameters:
        - in: path
          name: brand_id
          required: true
          schema:
            format: uuid
            title: Brand Id
            type: string
        - in: path
          name: keyword_id
          required: true
          schema:
            format: uuid
            title: Keyword Id
            type: string
        - description: Include only scans up to this completed scan id.
          in: query
          name: as_of
          required: false
          schema:
            anyOf:
              - format: uuid
                type: string
              - type: 'null'
            description: Include only scans up to this completed scan id.
            title: As Of
        - in: query
          name: period
          required: false
          schema:
            default: 1w
            enum:
              - 1w
              - 4w
              - 12w
              - all
            title: Period
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1KeywordDetail'
          description: Successful Response
        '400':
          content:
            application/problem+json:
              example:
                code: invalid_cursor
                detail: The cursor is invalid or belongs to a different query.
                instance: example-request-id
                status: 400
                title: Bad Request
                type: about:blank
              schema:
                $ref: '#/components/schemas/Problem'
          description: The cursor is invalid or belongs to a different query.
        '401':
          content:
            application/problem+json:
              example:
                code: invalid_token
                detail: >-
                  The Authorization header carries no API key Heralded knows: it
                  is missing, mistyped, revoked or expired.
                instance: example-request-id
                status: 401
                title: Unauthorized
                type: about:blank
              schema:
                $ref: '#/components/schemas/Problem'
          description: No API key, or one that is unknown, revoked or expired.
          headers:
            WWW-Authenticate:
              schema:
                example: Bearer
                type: string
        '404':
          content:
            application/problem+json:
              example:
                code: not_found
                detail: Nothing here that this API key can read.
                instance: example-request-id
                status: 404
                title: Not Found
                type: about:blank
              schema:
                $ref: '#/components/schemas/Problem'
          description: No such brand or answer, or the key's owner cannot read it.
        '409':
          content:
            application/problem+json:
              example:
                code: workspace_archived
                detail: The API key's organization is archived.
                instance: example-request-id
                status: 409
                title: Conflict
                type: about:blank
              schema:
                $ref: '#/components/schemas/Problem'
          description: The API key's organization is archived.
        '422':
          content:
            application/problem+json:
              example:
                code: invalid_request
                detail: The request's parameters are invalid; `errors` names each one.
                errors:
                  - loc:
                      - query
                      - limit
                    msg: Input should be less than or equal to 100
                    type: less_than_equal
                instance: example-request-id
                status: 422
                title: Unprocessable Content
                type: about:blank
              schema:
                $ref: '#/components/schemas/ValidationProblem'
          description: A path or query parameter is invalid.
        '429':
          content:
            application/problem+json:
              example:
                code: rate_limited
                detail: >-
                  This caller is past its requests for the minute. Retry after
                  the seconds in Retry-After.
                instance: example-request-id
                rate_limit:
                  limit: 120
                  remaining: 0
                  reset: 60
                  window: 60
                status: 429
                title: Too Many Requests
                type: about:blank
              schema:
                $ref: '#/components/schemas/RateLimitProblem'
          description: The API key made more than 120 requests in the minute.
          headers:
            Retry-After:
              description: Seconds until the key may call again.
              schema:
                example: 60
                type: integer
      security:
        - apiKey: []
components:
  schemas:
    V1KeywordDetail:
      properties:
        ai_searches_it:
          description: >-
            The AI engines whose background searches for the topic's prompts
            contain the keyword.
          items:
            type: string
          title: Ai Searches It
          type: array
        best_rank:
          anyOf:
            - type: integer
            - type: 'null'
          description: >-
            Your best position in the latest check's top 10; null when none of
            your pages is there and before a check read Google.
          title: Best Rank
        clicks_showing_you:
          anyOf:
            - type: integer
            - type: 'null'
          description: >-
            The share of clicks, in points, that land on a page showing you over
            the period: `figures.mentioned`. Null where the keyword is not
            measured.
          title: Clicks Showing You
        figures:
          anyOf:
            - $ref: '#/components/schemas/V1SideFigures'
            - type: 'null'
          description: >-
            The keyword's Search side over the period, with its range and trend:
            the unread results can only add to it. Null before a report froze a
            check.
        google_label:
          title: Google Label
          type: string
        id:
          description: The keyword's stable id.
          format: uuid
          title: Id
          type: string
        meta:
          $ref: '#/components/schemas/Meta'
          description: Normalized query and newest included scan.
        period:
          $ref: '#/components/schemas/V1Period'
        prompts:
          description: >-
            The topic's prompts in the segment, those the engines searched this
            keyword for first.
          items:
            $ref: '#/components/schemas/KeywordPrompt'
          title: Prompts
          type: array
        results:
          description: The ten results of the latest check Google answered, in order.
          items:
            $ref: '#/components/schemas/KeywordResultRow'
          title: Results
          type: array
        score:
          anyOf:
            - $ref: '#/components/schemas/ScoreMark'
            - type: 'null'
        searches_mo:
          anyOf:
            - type: integer
            - type: 'null'
          description: >-
            Monthly Google searches in the segment's market now; null where the
            vendor had none.
          title: Searches Mo
        segment:
          $ref: '#/components/schemas/KeywordSegment'
        status:
          enum:
            - active
            - paused
            - archived
          title: Status
          type: string
        tasks:
          description: Open tasks about your pages in the results.
          items:
            $ref: '#/components/schemas/V1Action'
          title: Tasks
          type: array
        text:
          title: Text
          type: string
        top10_naming_you:
          anyOf:
            - type: integer
            - type: 'null'
          description: >-
            How many of the latest check's ten results name you, yours included;
            null before a check read Google.
          title: Top10 Naming You
        topic:
          $ref: '#/components/schemas/KeywordTopic'
        trend:
          anyOf:
            - $ref: '#/components/schemas/PromptTrend'
            - type: 'null'
      required:
        - meta
        - id
        - text
        - status
        - topic
        - segment
        - google_label
        - searches_mo
        - best_rank
        - top10_naming_you
        - clicks_showing_you
        - score
        - trend
        - ai_searches_it
        - period
        - figures
        - results
        - prompts
        - tasks
      title: V1KeywordDetail
      type: object
    Problem:
      description: |-
        An RFC 9457 problem. `type` is always `about:blank`, so `title` is the
        status's name, and `code` is what a client branches on.
      properties:
        code:
          title: Code
          type: string
        detail:
          title: Detail
          type: string
        instance:
          default: ''
          title: Instance
          type: string
        status:
          title: Status
          type: integer
        title:
          title: Title
          type: string
        type:
          const: about:blank
          default: about:blank
          title: Type
          type: string
      required:
        - type
        - title
        - status
        - detail
        - code
        - instance
      title: Problem
      type: object
    ValidationProblem:
      properties:
        code:
          title: Code
          type: string
        detail:
          title: Detail
          type: string
        errors:
          items:
            $ref: '#/components/schemas/ValidationIssue'
          title: Errors
          type: array
        instance:
          default: ''
          title: Instance
          type: string
        status:
          title: Status
          type: integer
        title:
          title: Title
          type: string
        type:
          const: about:blank
          default: about:blank
          title: Type
          type: string
      required:
        - type
        - title
        - status
        - detail
        - code
        - instance
        - errors
      title: ValidationProblem
      type: object
    RateLimitProblem:
      properties:
        code:
          title: Code
          type: string
        detail:
          title: Detail
          type: string
        instance:
          default: ''
          title: Instance
          type: string
        rate_limit:
          $ref: '#/components/schemas/RateLimitValues'
        status:
          title: Status
          type: integer
        title:
          title: Title
          type: string
        type:
          const: about:blank
          default: about:blank
          title: Type
          type: string
      required:
        - type
        - title
        - status
        - detail
        - code
        - instance
        - rate_limit
      title: RateLimitProblem
      type: object
    V1SideFigures:
      properties:
        heralded_score:
          $ref: '#/components/schemas/V1Figure'
        mentioned:
          $ref: '#/components/schemas/V1Figure'
        recommended:
          $ref: '#/components/schemas/V1Figure'
      required:
        - heralded_score
        - mentioned
        - recommended
      title: V1SideFigures
      type: object
    Meta:
      properties:
        data_as_of:
          anyOf:
            - $ref: '#/components/schemas/DataAsOf'
            - type: 'null'
        query:
          additionalProperties:
            $ref: '#/components/schemas/JsonValue'
          title: Query
          type: object
      required:
        - query
        - data_as_of
      title: Meta
      type: object
    V1Period:
      properties:
        excluded_reports:
          title: Excluded Reports
          type: integer
        first_answer_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: First Answer At
        last_answer_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Last Answer At
        preset:
          enum:
            - 1w
            - 4w
            - 12w
            - all
          title: Preset
          type: string
        reports:
          title: Reports
          type: integer
      required:
        - preset
        - reports
        - first_answer_at
        - last_answer_at
        - excluded_reports
      title: V1Period
      type: object
    KeywordPrompt:
      properties:
        engines:
          items:
            type: string
          title: Engines
          type: array
        prompt_id:
          format: uuid
          title: Prompt Id
          type: string
        text:
          title: Text
          type: string
      required:
        - prompt_id
        - text
        - engines
      title: KeywordPrompt
      type: object
    KeywordResultRow:
      description: One of the ten results of the latest check.
      properties:
        click_share:
          title: Click Share
          type: number
        domain:
          title: Domain
          type: string
        names_you:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Names You
        owner:
          enum:
            - own
            - competitor
            - third_party
          title: Owner
          type: string
        position:
          title: Position
          type: integer
        read_state:
          enum:
            - read
            - unread
            - unreadable
          title: Read State
          type: string
        recommends_you:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Recommends You
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
        url:
          title: Url
          type: string
      required:
        - position
        - url
        - title
        - domain
        - owner
        - click_share
        - names_you
        - recommends_you
        - read_state
      title: KeywordResultRow
      type: object
    ScoreMark:
      description: >-
        A score or figure from the figures read, with the band it is coloured

        by (#4259).


        `key` is the engine or the figure measured. `band` is the Heralded
        Score's

        band for the value, so a mark and a score read on one scale, and

        "Not measured" where no value is served, which includes a group under
        the

        minimum of answers. On a score, `answers` counts every answer the period

        read under the filters, including those a figure's own denominator
        leaves

        out.
      properties:
        answer_read_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Answer Read Id
        answers:
          title: Answers
          type: integer
        band:
          title: Band
          type: string
        key:
          title: Key
          type: string
        label:
          title: Label
          type: string
        state:
          enum:
            - measured
            - too_few_answers
            - calibrating
            - first_report
            - not_comparable
            - not_measured
          title: State
          type: string
        tooltip:
          anyOf:
            - type: string
            - type: 'null'
          title: Tooltip
        value:
          anyOf:
            - type: integer
            - type: 'null'
          title: Value
      required:
        - key
        - label
        - value
        - state
        - band
        - answers
        - tooltip
        - answer_read_id
      title: ScoreMark
      type: object
    KeywordSegment:
      properties:
        id:
          format: uuid
          title: Id
          type: string
        name:
          title: Name
          type: string
      required:
        - id
        - name
      title: KeywordSegment
      type: object
    V1Action:
      properties:
        completed_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Completed At
        created_at:
          format: date-time
          title: Created At
          type: string
        delivered_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: >-
            When the result went live, was sent or was published; null on
            dismissed work.
          title: Delivered At
        detail:
          anyOf:
            - type: string
            - type: 'null'
          title: Detail
        evidence:
          anyOf:
            - $ref: '#/components/schemas/TaskEvidence'
            - type: 'null'
          description: Linked prompts and rendered answer counts from the latest report.
        group:
          enum:
            - new
            - your_input
            - dispatched
            - scheduled
            - waiting
            - settled
            - withdrawn
          title: Group
          type: string
        holder:
          anyOf:
            - enum:
                - you
                - heralded
                - waiting
              type: string
            - type: 'null'
          description: >-
            Who holds the work: you, Heralded or a third party; null when nobody
            holds it.
          title: Holder
        id:
          format: uuid
          title: Id
          type: string
        kind:
          title: Kind
          type: string
        member:
          anyOf:
            - enum:
                - writer
                - publicist
                - engineer
                - analyst
              type: string
            - type: 'null'
          description: The responsible team member; null for setup and prompt tracking.
          title: Member
        not_seen_since_run:
          anyOf:
            - type: integer
            - type: 'null'
          description: First read that stopped seeing this suggestion; null when seen.
          title: Not Seen Since Run
        note:
          anyOf:
            - $ref: '#/components/schemas/TaskNote'
            - type: 'null'
          description: Task explanation with a live job step.
        outcome:
          anyOf:
            - enum:
                - verified_up
                - no_move
                - not_measured
                - dismissed
              type: string
            - type: 'null'
          title: Outcome
        paid_off_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: >-
            When verification credited a positive measured gain; null on
            dismissed work.
          title: Paid Off At
        placed_position:
          anyOf:
            - type: integer
            - type: 'null'
          description: Position in the brand's proposed order; null when Heralded ranks it.
          title: Placed Position
        preview:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Up to 400 characters of draft opening, email recipient and subject,
            or planned change while waiting on you.
          title: Preview
        stage:
          description: 'The work''s stage: observe, decide, do or verify.'
          enum:
            - observe
            - decide
            - do
            - verify
          title: Stage
          type: string
        started_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: The task's first start by Heralded; null on dismissed work.
          title: Started At
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
      required:
        - placed_position
        - not_seen_since_run
        - evidence
        - note
        - id
        - title
        - detail
        - kind
        - member
        - started_at
        - delivered_at
        - paid_off_at
        - preview
        - group
        - holder
        - stage
        - outcome
        - created_at
        - completed_at
      title: V1Action
      type: object
    KeywordTopic:
      properties:
        id:
          format: uuid
          title: Id
          type: string
        name:
          title: Name
          type: string
      required:
        - id
        - name
      title: KeywordTopic
      type: object
    PromptTrend:
      description: A score's change, as the Trend column and the pane state it.
      properties:
        delta:
          anyOf:
            - type: integer
            - type: 'null'
          title: Delta
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
        state:
          enum:
            - up
            - down
            - steady
            - not_comparable
            - calibrating
            - new
            - none
          title: State
          type: string
      required:
        - state
        - delta
        - label
      title: PromptTrend
      type: object
    ValidationIssue:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          title: Loc
          type: array
        msg:
          title: Msg
          type: string
        type:
          title: Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationIssue
      type: object
    RateLimitValues:
      properties:
        limit:
          title: Limit
          type: integer
        remaining:
          title: Remaining
          type: integer
        reset:
          title: Reset
          type: integer
        window:
          title: Window
          type: integer
      required:
        - limit
        - window
        - remaining
        - reset
      title: RateLimitValues
      type: object
    V1Figure:
      properties:
        answers:
          title: Answers
          type: integer
        change:
          anyOf:
            - $ref: '#/components/schemas/V1Change'
            - type: 'null'
        denominator:
          anyOf:
            - type: integer
            - type: 'null'
          title: Denominator
        high:
          anyOf:
            - type: integer
            - type: 'null'
          title: High
        low:
          anyOf:
            - type: integer
            - type: 'null'
          title: Low
        numerator:
          anyOf:
            - type: number
            - type: 'null'
          title: Numerator
        state:
          enum:
            - measured
            - too_few_answers
            - calibrating
            - first_report
            - not_comparable
            - not_measured
          title: State
          type: string
        trend:
          items:
            $ref: '#/components/schemas/V1TrendPoint'
          title: Trend
          type: array
        value:
          anyOf:
            - type: integer
            - type: 'null'
          title: Value
      required:
        - value
        - low
        - high
        - numerator
        - denominator
        - answers
        - state
        - change
        - trend
      title: V1Figure
      type: object
    DataAsOf:
      properties:
        completed_at:
          format: date-time
          title: Completed At
          type: string
        id:
          format: uuid
          title: Id
          type: string
      required:
        - id
        - completed_at
      title: DataAsOf
      type: object
    JsonValue: {}
    TaskEvidence:
      properties:
        answers_link:
          anyOf:
            - $ref: '#/components/schemas/AnswersLink'
            - type: 'null'
        prompts:
          items:
            $ref: '#/components/schemas/TaskPromptEvidence'
          title: Prompts
          type: array
      required:
        - prompts
        - answers_link
      title: TaskEvidence
      type: object
    TaskNote:
      properties:
        how_well_know:
          title: How Well Know
          type: string
        short_form:
          title: Short Form
          type: string
        what_i_need_from_you:
          title: What I Need From You
          type: string
        what_ill_do:
          title: What Ill Do
          type: string
        whats_happening:
          title: Whats Happening
          type: string
        why_it_matters:
          title: Why It Matters
          type: string
      required:
        - whats_happening
        - why_it_matters
        - what_ill_do
        - what_i_need_from_you
        - how_well_know
        - short_form
      title: TaskNote
      type: object
    V1Change:
      properties:
        baseline:
          $ref: '#/components/schemas/V1Baseline'
        cells_unpaired:
          title: Cells Unpaired
          type: integer
        delta:
          anyOf:
            - type: number
            - type: 'null'
          title: Delta
        direction:
          enum:
            - up
            - down
            - steady
          title: Direction
          type: string
        high:
          anyOf:
            - type: number
            - type: 'null'
          title: High
        low:
          anyOf:
            - type: number
            - type: 'null'
          title: Low
        real:
          title: Real
          type: boolean
      required:
        - delta
        - low
        - high
        - real
        - direction
        - baseline
        - cells_unpaired
      title: V1Change
      type: object
    V1TrendPoint:
      properties:
        answers:
          title: Answers
          type: integer
        at:
          format: date-time
          title: At
          type: string
        break_label:
          anyOf:
            - type: string
            - type: 'null'
          title: Break Label
        high:
          anyOf:
            - type: integer
            - type: 'null'
          title: High
        low:
          anyOf:
            - type: integer
            - type: 'null'
          title: Low
        state:
          enum:
            - measured
            - too_few_answers
            - calibrating
            - first_report
            - not_comparable
            - not_measured
          title: State
          type: string
        value:
          anyOf:
            - type: integer
            - type: 'null'
          title: Value
      required:
        - at
        - value
        - low
        - high
        - answers
        - state
        - break_label
      title: V1TrendPoint
      type: object
    AnswersLink:
      properties:
        href:
          title: Href
          type: string
      required:
        - href
      title: AnswersLink
      type: object
    TaskPromptEvidence:
      properties:
        answer_count:
          title: Answer Count
          type: integer
        answers_link:
          $ref: '#/components/schemas/AnswersLink'
        named_count:
          title: Named Count
          type: integer
        prompt_uid:
          format: uuid
          title: Prompt Uid
          type: string
        text:
          anyOf:
            - type: string
            - type: 'null'
          title: Text
      required:
        - prompt_uid
        - text
        - named_count
        - answer_count
        - answers_link
      title: TaskPromptEvidence
      type: object
    V1Baseline:
      properties:
        first_answer_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: First Answer At
        last_answer_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Last Answer At
        reports:
          title: Reports
          type: integer
      required:
        - reports
        - first_answer_at
        - last_answer_at
      title: V1Baseline
      type: object
  securitySchemes:
    apiKey:
      description: 'An API key, sent as `Authorization: Bearer hrld_...`.'
      scheme: bearer
      type: http

````

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