---
title: "Search assets across libraries (ranked, highlighted)."
method: GET
path: "/organizations/{organizationId}/search/assets"
tags: ["Search"]
---

# Search assets across libraries (ranked, highlighted).

`GET /organizations/{organizationId}/search/assets`

## Request

- Base URL: `https://api.raster.app`
- URL: `https://api.raster.app/organizations/{organizationId}/search/assets`
- Auth: HTTP bearer

Full-text, relevance-ranked search over filenames, descriptions, and tags across every library the credential can reach, or the subset named in `libraries`. This is the right call for a natural-language request such as "the photo of the blue packaging" — use listAssets when you already know the exact tag to filter on.

## Path parameters

- `organizationId` string, required

## Query parameters

- `q` string, required
- `libraries` string
- `page` integer
- `pageSize` integer
- `approval` 'in_review' | 'approved' | 'needs_changes' | 'none'

## Headers

- `Api-Version` string, required

## Response `200`

OK

- object
  - `data` SearchResult, required: Wire shape returned by the `searchAssets` query — `hits` plus the corpus-wide `found` total and the resolved 1-based `page`.
    - `hits` SearchHit[], required
      - `id` string, required
      - `width` integer, nullable, required
      - `height` integer, nullable, required
      - `name` string, nullable, required
      - `libraryId` string, nullable, required
      - `blurhash` string, nullable, required
      - `url` string, uri, nullable, required
      - `thumbUrlBlurred` string, uri, nullable, required
      - `sizes` string, nullable, required
      - `appUrl` string, uri, nullable, required
      - `variants` AssetVariant[], nullable, required
        - `id` string, required
        - `parentId` string, nullable, required
        - `width` integer, nullable, required
        - `height` integer, nullable, required
        - `name` string, nullable, required
        - `url` string, uri, nullable, required
        - `sizes` string, nullable, required
        - `appUrl` string, uri, nullable, required
      - `parentId` string, nullable, required
      - `description` string, nullable, required
      - `tags` string[], nullable, required
      - `contentType` string, nullable, required
      - `size` number, nullable, required
      - `duration` number, nullable, required
      - `metadata` AssetMetadata, required: Details read from the asset's own bytes — how it was captured, and its technical format.
        - `capture` AssetCapture, required: How an asset was captured — when, on what device, and where.
          - `recordedAt` string, nullable, required: When the asset says it was recorded, as written by the device. On a re-encoded file this is the time of that encode rather than the original recording, so treat it as a hint rather than a reliable capture date.
          - `make` string, nullable, required: Device maker, e.g. `Apple`.
          - `model` string, nullable, required: Device model, e.g. `iPhone 17 Pro`.
          - `software` string, nullable, required: Capture software or OS version reported by the device.
          - `latitude` number, nullable, required: Signed decimal degrees. Present only alongside `longitude`.
          - `longitude` number, nullable, required: Signed decimal degrees.
          - `altitude` number, nullable, required: Metres above sea level, when the container recorded one.
        - `video` VideoStream, required: A video's technical stream details — codec, frame rate, bitrate, and audio.
          - `codec` string, required: Video codec, e.g. `h264`, `hevc`, `vp9`, `av1`.
          - `frameRate` number, nullable, required: Frames per second, e.g. `30` or `23.98`.
          - `bitrate` number, nullable, required: Overall bitrate in bits per second, across all streams.
          - `hasAudio` boolean, required: Whether the video carries an audio track.
          - `audioCodec` string, nullable, required: Audio codec, e.g. `aac`, `opus`. `null` when there is no audio track.
          - `audioLayout` string, nullable, required: Audio channel layout, e.g. `mono`, `stereo`, `5.1`.
          - `audioSampleRate` integer, nullable, required: Audio sample rate in hertz, e.g. `48000`.
      - `created` number, nullable, required
      - `updated` number, nullable, required
      - `contentVersion` integer, nullable, required
      - `uploadedBy` Uploader, required: Attribution metadata for the user or system that uploaded an asset.
        - `name` string, nullable, required: Display name of the uploader. May be `null`.
        - `avatarUrl` string, uri, nullable, required: URL of the uploader's current avatar, read live from their account. May be `null`.
      - `approval` Approval, required: An asset's approval (delivery) state — who set it, when, and why.
        - `state` string, required
        - `setBy` string, nullable, required: Email address of the person who set the approval. `null` when their account has no email address.
        - `setAt` number, nullable, required
        - `note` string
      - `highlights` SearchHitHighlights: Highlight snippets returned alongside each `SearchHit`.
        - `name` string
        - `tags` string[]
      - `score` number: Relevance score for the hit. Optional.
    - `found` integer, required
    - `page` integer, required

## Other responses

- `400`: Invalid input (BAD_USER_INPUT), quota, or API-version error.
- `401`: Missing or invalid API key or access token.
- `403`: The credential may not perform this operation, or the organization's plan does not allow it. A key without access to a library gets 404, not 403.
- `404`: Resource not found, or the credential is not authorized for it.
- `429`: Rate limit exceeded. Wait for the number of seconds in `Retry-After` before retrying.
- `500`: Unexpected server fault (INTERNAL_SERVER_ERROR). Safe to retry an idempotent operation.

---

[API](https://skmtc.dev/raster/apis/raster-rest-api.md) · [All operations](https://skmtc.dev/raster/apis/raster-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/raster/apis/raster-rest-api/revisions/5e1b9d912d01?raw)
