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

# Search

> One box over registrations, hexes, flight numbers, routes (two places), fleets (an operator and a type), airports and airlines. One ranked list: exact codes, then prefixes, then word starts, then near misses, traffic as the tie-breaker. Rate: 600 per 600 s (bucket `search`). Cache: 12 h edge.



## OpenAPI

````yaml /openapi.json get /v1/search
openapi: 3.1.0
info:
  title: FlightPortrait network API
  description: >-
    Open data from the FlightPortrait receiver network. No API key.


    **Stability.** Operations marked `x-stability: stable` only ever gain
    fields; names and types are frozen. Operations marked `x-stability: map`
    exist for the first-party map and can change with it.


    **Field dialects.** `/v1/aircraft` and `/v2/point` pass readsb's wire fields
    through unchanged (`hex`, `t`, `r`, `gs`, ...) so ecosystem tooling works
    as-is. Every other resource uses full words: `reg`, `type`, `org`, `dst`.
    Airport codes in history resources are IATA; `/v1/airports/{code}` accepts
    IATA or ICAO. Event times are unix seconds UTC; registry timestamps are ISO
    8601 UTC; board and schedule times are HH:MM in the origin airport's local
    time.


    **Data honesty.** History is observation, never an official registry. Gaps
    mean the network's sources did not hear it, nothing more. Responses carry
    `coverage: "observed"` as a reminder. The one exception is the airport
    departures board, whose rows may be inferred from published timetables —
    each board row carries its own `source` (observed / published / both); a
    published row is not a receiver observation. Likewise a flight's
    `route_source`: `observed` when both ends were seen, `observed+catalog` when
    the community supplied the end coverage never reached, `catalog` when it
    supplied both. Catalog answers are checked against observation and reviewed
    before they are served, and observation outranks them whenever it speaks.
    This API is read-only; answers go to the contribution door at
    contribute.flightportrait.com.


    **Errors.** Every non-200 body is `{"error": <code>, "detail": <human
    text>}` with `Cache-Control: no-store`. 404 `not_found` / `not_observed`,
    422 `invalid_request`, 429 `rate_limited` (with `Retry-After` and
    `RateLimit-*` headers), 503 `stale_snapshot` (live snapshot older than 60 s)
    or `artifact_unavailable` (a history artifact is not loaded).


    **Rate limits.** Per IP, per bucket, over a 600 second window; each
    operation notes its bucket and default limit. 429 means wait for
    `Retry-After` seconds.


    Data is ODbL 1.0. Credit "FlightPortrait network feeders" and link the
    credits page, which lists every source the data draws on and the credit each
    one asks for; republishing carries them too.

    Credits: https://flightportrait.com/network/credits.html

    Terms: https://flightportrait.com/network/terms
  version: 1.0.0
servers:
  - url: https://data.flightportrait.com
security: []
tags:
  - name: Live
    description: What the network hears now.
  - name: History
    description: Observed airframes, flights, airports.
  - name: Stations
    description: Feeder roster.
  - name: Reference
    description: Airlines, alliances, types.
  - name: Contributions
    description: What observation could not settle, and the community answers to it.
  - name: Meta
    description: Index and health.
paths:
  /v1/search:
    get:
      tags:
        - Reference
      summary: Search
      description: >-
        One box over registrations, hexes, flight numbers, routes (two places),
        fleets (an operator and a type), airports and airlines. One ranked list:
        exact codes, then prefixes, then word starts, then near misses, traffic
        as the tie-breaker. Rate: 600 per 600 s (bucket `search`). Cache: 12 h
        edge.
      operationId: search
      parameters:
        - name: q
          in: query
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 40
            description: What was typed.
            title: Q
          description: What was typed.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  q:
                    type: string
                    description: The query as searched, trimmed and uppercased.
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        kind:
                          type: string
                          description: aircraft, flight, airport or airline.
                        id:
                          type: string
                          description: >-
                            What to open: hex, callsign, airport code or airline
                            ICAO.
                        label:
                          type: string
                          description: The line to show.
                        detail:
                          type:
                            - string
                            - 'null'
                          description: >-
                            A second line: type and operator, route count, city
                            and country, IATA.
                        score:
                          type: number
                          description: >-
                            Rank: 100 an exact code, 60 a prefix, 40 a word
                            start, 20 a near miss, plus a little for traffic.
                            The list is sorted by it.
                      required:
                        - kind
                        - id
                        - label
                        - detail
                        - score
                required:
                  - q
                  - results
              example:
                q: 9V-SH
                results:
                  - kind: aircraft
                    id: 76cd01
                    label: 9V-SHA
                    detail: Airbus A350-900 · Singapore Airlines
                    score: 60
                  - kind: aircraft
                    id: 76cd02
                    label: 9V-SHB
                    detail: Airbus A350-900 · Singapore Airlines
                    score: 60
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: >-
            Rate limited. Wait Retry-After seconds. Headers: Retry-After,
            RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset.
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                    description: >-
                      Machine code: not_found, not_observed, invalid_request,
                      rate_limited, stale_snapshot, artifact_unavailable,
                      upstream_unavailable.
                  detail:
                    type: string
                    description: Human-readable explanation.
                type: object
                required:
                  - error
                  - detail
              example:
                error: rate_limited
                detail: slow down
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError

````