---
title: "Search"
method: POST
path: "/api/v1/search/artifacts"
tags: ["Artifact"]
---

# Search

`POST /api/v1/search/artifacts`

## Request

- Base URL: `https://example.conductor.one`
- URL: `https://example.conductor.one/api/v1/search/artifacts`
- Auth: HTTP bearer and OAuth 2
  - Client credentials
  - Token URL: `/auth/v1/token`

Search returns currently authorized Artifacts matching catalog text and tags.
 Discovery is eventual; newly granted access may appear later than a direct Get.

## Request body

- C1ApiArtifactV1ArtifactServiceSearchRequest: ArtifactServiceSearchRequest searches only audience-visible catalog metadata. Consumers must deduplicate grant-derived candidates before pagination, strongly recheck canonical metadata and current grants before disclosure, and reject stale query-relevant observations. Order is created_at then id, both descending. Cursor validation must bind authenticated tenant/user, filters, ordering and last consumed boundary; these semantic checks are not generated validators. Candidate scanning must be bounded; rejected candidates still advance the consumed boundary, without exposing candidate or rejection counts.
  - `pageSize` integer: Maximum number of results per page; zero selects the service default, 20.
  - `pageToken` string: Sealed continuation token from a previous response with the same filters.
  - `query` string: Free-text query matched against current catalog display name and description. Empty means no text filter; source text and live data are never searched.
  - `tags` string[], nullable: Require all specified topic tags; empty means no tag filter.

## Response `200`

ArtifactServiceSearchResponse contains only currently authorized metadata.
 Readers see published Artifacts; Owners may also see their unpublished entries.
 No raw candidate totals, denied/scanned counts or global facets are exposed.

- C1ApiArtifactV1ArtifactServiceSearchResponse: ArtifactServiceSearchResponse contains only currently authorized metadata. Readers see published Artifacts; Owners may also see their unpublished entries. No raw candidate totals, denied/scanned counts or global facets are exposed.
  - `list` C1ApiArtifactV1Artifact[], nullable: Authorized Artifacts in descending creation-time and ID order.
    - `createdAt` string, date-time, nullable
    - `description` string: Optional audience-visible description; never guarded draft text.
    - `displayName` string: Current Owner-managed catalog name, independent of pinned-version source text. Consumers reject Unicode-whitespace-only names without trimming valid names.
    - `id` string: Unique opaque identifier for this Artifact.
    - `publishedVersionNumericId` string, int64: Exact current publication number; zero means unpublished. Never infer the current publication from the largest version number. JS clients use strings.
    - `tags` string[], nullable: Optional unique lowercase ASCII topic tokens, not permissions or classifications.
    - `updatedAt` string, date-time, nullable
    - `viewerUrl` string: Server-generated viewer link when published; empty when unpublished. This is not a download capability and every open checks current grants.
  - `nextPageToken` string: Sealed continuation token, empty when scanning is complete. A short or empty page can still continue; this token does not promise another visible match.

## Changes

- **2026-10-06** `918a4e749f56`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/conductorone/apis/c1-api/changes/api/v1/search/artifacts/post.md)

---

[API](https://skmtc.dev/conductorone/apis/c1-api.md) - [All operations](https://skmtc.dev/conductorone/apis/c1-api/llms.txt) - [OpenAPI document](https://skmtc.dev/conductorone/apis/c1-api/revisions/fe943bedf41b?raw)
