# app.zeens.getPhotoFeed

> Published by [zeens.app](https://lexicon.garden/identity/did:plc:pwpuqwge6g7xrjmfbw73uycw)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:pwpuqwge6g7xrjmfbw73uycw/app.zeens.getPhotoFeed)
- [Documentation](https://lexicon.garden/lexicon/did:plc:pwpuqwge6g7xrjmfbw73uycw/app.zeens.getPhotoFeed/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:pwpuqwge6g7xrjmfbw73uycw/app.zeens.getPhotoFeed/examples)

## Definitions

### `app.zeens.getPhotoFeed`

**Type**: `query`

Retrieve a feed of Zeens photos with optional filters by camera, category, and engagement.

#### Parameters

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `aiFilter` | `string` | No | Filter by AI declaration: no-ai, ai-assisted, contains-ai. |
| `cameraMake` | `string` | No | Filter by camera manufacturer (e.g. Sony, Canon, Fujifilm). |
| `cameraModel` | `string` | No | Filter by camera model (e.g. A7R V, X-T5). |
| `category` | `string` | No | Filter by photography category (e.g. landscape, portrait, street). |
| `cursor` | `string` | No | Pagination cursor from previous response. |
| `filmCamera` | `string` | No | Filter by the hand-typed film body in postMeta.film.camera, matched exactly (case-insensitively). Distinct from cameraModel, which matches EXIF — on a film scan the EXIF describes the scanner, so a film body only ever appears here. |
| `filmLens` | `string` | No | Filter by the hand-typed film lens in postMeta.film.lens, matched exactly (case-insensitively). Distinct from `lens`, which matches EXIF with a substring. |
| `lens` | `string` | No | Filter by lens model substring match. |
| `limit` | `integer` | No | Maximum number of results to return. |
| `sort` | `string` | No | Sort order. Default is reverse-chronological. 'popular' ranks by like count within the optional window. 'relevant' ranks keyword matches by where the term hit (text > alt > location > categories > exif) and applies only when 'keyword' is set. |

#### Output

**Encoding**: `application/json`

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Retrieve a feed of Zeens photos with optional filters by camera, category, and engagement.",
      "output": {
        "encoding": "application/json"
      },
      "parameters": {
        "properties": {
          "aiFilter": {
            "description": "Filter by AI declaration: no-ai, ai-assisted, contains-ai.",
            "knownValues": [
              "no-ai",
              "ai-assisted",
              "contains-ai"
            ],
            "type": "string"
          },
          "cameraMake": {
            "description": "Filter by camera manufacturer (e.g. Sony, Canon, Fujifilm).",
            "type": "string"
          },
          "cameraModel": {
            "description": "Filter by camera model (e.g. A7R V, X-T5).",
            "type": "string"
          },
          "category": {
            "description": "Filter by photography category (e.g. landscape, portrait, street).",
            "type": "string"
          },
          "cursor": {
            "description": "Pagination cursor from previous response.",
            "type": "string"
          },
          "filmCamera": {
            "description": "Filter by the hand-typed film body in postMeta.film.camera, matched exactly (case-insensitively). Distinct from cameraModel, which matches EXIF — on a film scan the EXIF describes the scanner, so a film body only ever appears here.",
            "type": "string"
          },
          "filmLens": {
            "description": "Filter by the hand-typed film lens in postMeta.film.lens, matched exactly (case-insensitively). Distinct from `lens`, which matches EXIF with a substring.",
            "type": "string"
          },
          "lens": {
            "description": "Filter by lens model substring match.",
            "type": "string"
          },
          "limit": {
            "default": 50,
            "description": "Maximum number of results to return.",
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          },
          "sort": {
            "description": "Sort order. Default is reverse-chronological. 'popular' ranks by like count within the optional window. 'relevant' ranks keyword matches by where the term hit (text > alt > location > categories > exif) and applies only when 'keyword' is set.",
            "knownValues": [
              "popular",
              "relevant"
            ],
            "type": "string"
          }
        },
        "type": "params"
      },
      "target_collection": "app.zeens.postMeta",
      "type": "query"
    }
  },
  "id": "app.zeens.getPhotoFeed",
  "lexicon": 1
}
```
