---
title: "Common-path compatibility alias for the bounded task-first finder."
method: GET
path: "/api/finder"
tags: ["Agent Docs"]
---

# Common-path compatibility alias for the bounded task-first finder.

`GET /api/finder`

## Request

- Base URL: `https://huggingbay.xyz`
- URL: `https://huggingbay.xyz/api/finder`
- Auth: none declared

Alias of /api/agents/find-model (recorded; identical handler). Prefer the recorded path: this one already answers with Deprecation and Sunset headers. Internal alias for /api/agents/find-model. Provide task (or q) and optional constraints; the response remains bounded metadata and verification context, not a runtime or download authorization.

**Inputs.** Path, query and header fields are listed below. No request body is required.

**Outputs.** See each status below for its media type, schema and headers. A missing record or unavailable capability is not a successful empty result.

**Errors.** API JSON failures use the documented response schema. Read code, message and next; retry only when the response allows it. Auth, invalid input and missing records need a caller change.

**Rate limits.** Public read budgets apply by client IP and route group. This operation can have a smaller route-specific budget. Read Retry-After on 429 or retryable 503 responses.

## Query parameters

- `task` string
- `q` string
- `commercial` '1'
- `hardware` string
- `gpu` string
- `ctx` integer
- `deviceFamily` 'nvidia' | 'amd' | 'intel' | 'apple' | 'cpu' | 'no-gpu'
- `customMemoryGb` number
- `limit` integer

## Response `200`

Bounded task-first finder response

- FindModelResponse
  - `schemaVersion` 'hugging-bay.find-model.v1', required
  - `generatedAt` string, required
  - `input` object, required
  - `resultContract` object, required
  - `candidates` object[], required
  - `bestPick` object, nullable
    - `artifactId` string, nullable, required
    - `commandsAvailable` boolean
    - `runReady` boolean: recorded local run evidence, requiring download readiness and commands; never inferred from Bay Run.
    - `executionAvailable` boolean: An executable Bay Run handoff is published; not a measured run or quality guarantee.
    - `downloadable` boolean: Catalog bytes downloadable now, from the download-plan serve authority. False when unbound.
    - `downloadStatus` 'READY' | 'BLOCKED'
    - `executionStatus` 'executable-now' | 'download-available-run-pending' | 'unavailable'
    - `nextStep` object
      - `action` 'run-bay-run' | 'download-and-verify' | 'check-download-plan' | 'inspect-evidence', required
      - `call` object, nullable, required: Existing REST or MCP call, including Bay Run auth instructions when applicable. Null if artifact identity is unavailable.
  - `bestPickServeEligible` boolean: True when recorded.downloadable or recorded.executionAvailable is true; download and Bay Run execution remain distinct.
  - `bestPickReason` string, nullable: One honest line: whether the pick is serve-eligible, or why no pick is asserted.
  - `bestPickQualification` object
  - `exclusions` object[]
  - `fitUnknown` object[]
  - `degraded` boolean
  - `partial` boolean
  - `selectionPin` FinderSelectionPin (unresolved $ref)
  - `selectionProvisional` boolean: True when better-ranked candidates were still being checked; this pick is not cached or pinned. Retry in a few seconds for the settled pick.
  - `guidance` string[], required

## Other responses

- `400`: Missing task

## Changes

- **2026-10-20** `63c474bf0fe4`: 2 info
  - added the optional property `selectionPin` to the response with the `200` status
  - added the optional property `selectionProvisional` to the response with the `200` status

[Operation history](https://skmtc.dev/huggingbay/apis/hugging-bay-public-api/changes/api/finder/get.md)

---

[API](https://skmtc.dev/huggingbay/apis/hugging-bay-public-api.md) · [All operations](https://skmtc.dev/huggingbay/apis/hugging-bay-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/huggingbay/apis/hugging-bay-public-api/revisions/63c474bf0fe4?raw)
