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

# List shortlist

> List crops on the user's personal shortlist (curated favorites).

```
GET https://www.wiseyield.co/api/v1/crop-library/user-crops
```

The shortlist is a per-user collection of admin-catalog crops the user is tracking or considering. Distinct from `crops` (which represent actual plantings on a field).

### Authentication

Requires a key with the `library:read` scope.

### Query parameters

<ParamField query="page" type="integer" default="1">Page number (≥ 1).</ParamField>
<ParamField query="limit" type="integer" default="20">Results per page (1–100).</ParamField>

### Response

<ResponseField name="data" type="array">
  Array of user-crop objects (joined with parent admin crop name + category).

  <Expandable title="User crop">
    <ResponseField name="id" type="string">UUID.</ResponseField>
    <ResponseField name="userId" type="string">Owner user ID.</ResponseField>
    <ResponseField name="farmId" type="string | null">Optionally bound to a specific farm.</ResponseField>
    <ResponseField name="adminCropId" type="string">UUID of the linked admin crop.</ResponseField>
    <ResponseField name="source" type="string">How the crop was added: `manual_search` or `ai_recommendation`.</ResponseField>
    <ResponseField name="userCustomizations" type="object | null">User overrides (custom name, notes, growth duration).</ResponseField>
    <ResponseField name="adminCropName" type="string">Convenience join — name of the linked admin crop.</ResponseField>
    <ResponseField name="adminCropCategory" type="string">Convenience join — category of the linked admin crop.</ResponseField>
    <ResponseField name="createdAt" type="string">ISO 8601.</ResponseField>
    <ResponseField name="updatedAt" type="string">ISO 8601.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="pagination" type="object">Offset pagination envelope.</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl 'https://www.wiseyield.co/api/v1/crop-library/user-crops?limit=50' \
    -H "Authorization: Bearer $WISEYIELD_API_KEY"
  ```
</RequestExample>

## Errors

| Status                    | When                                            |
| ------------------------- | ----------------------------------------------- |
| `401`                     | Missing, malformed, expired, or revoked API key |
| `403 INSUFFICIENT_SCOPE`  | Key lacks `library:read` scope                  |
| `429 RATE_LIMIT_EXCEEDED` | Per-user rate limit reached                     |
| `5xx`                     | Server error                                    |
