# Iiif — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Parse, normalize, and validate IIIF Presentation API manifests while discovering community events, news updates, and cookbook recipes from the IIIF ecosystem. Access comprehensive tools to ensure IIIF implementations are properly structured and stay informed about the latest developments in the community.

**Category:** Developer Tools | **Website:** [iiif.io/](https://iiif.io/) | **Docs:** [parse.bot/marketplace/695c40d3-7afd-4b2f-a7ca-4baf78c33ad3/iiif-io-api](https://parse.bot/marketplace/695c40d3-7afd-4b2f-a7ca-4baf78c33ad3/iiif-io-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-iiif-io-api-695c40d3/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_manifest

Fetch and parse a IIIF Presentation API manifest from any public URL. Returns the complete manifest JSON including context, type, label, items (canvases with annotation pages and image bodies), behavior, and all other properties defined by the manifest author. The response structure varies by manifest but always includes id, type, and label at minimum.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | The URL of the IIIF manifest to fetch. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-iiif-io-api-695c40d3/get_manifest \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"<string>"}'
```

### list_cookbook_recipes

List all IIIF Cookbook recipes for common implementation patterns. Returns recipe name and URL from the official IIIF cookbook index page. Recipes demonstrate patterns like simple manifests, rights statements, multi-page books, and other IIIF features.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-iiif-io-api-695c40d3/list_cookbook_recipes \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### list_events

List upcoming IIIF community events and calendar data from the official JSON feeds. Returns community group calls, training sessions, and conferences with dates, descriptions, locations, and links. Also includes a calendar object with this week's meetings and metadata about all recurring meeting groups.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-iiif-io-api-695c40d3/list_events \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### list_news

List published IIIF news articles scraped from the iiif.io/news page. Returns all articles with title, full URL, publication date in ISO format, and a brief excerpt. Articles are ordered by publication date descending (newest first).

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-iiif-io-api-695c40d3/list_news \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### normalize_manifest_metadata

Extract and normalize manifest metadata into a flat structure. Parses the manifest label into a title, summary/description into a description string, extracts the rights URI, detects the IIIF version (3.0 if items array present, 2.0 otherwise), and collects custom metadata fields as key-value pairs with multilingual values.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | The URL of the IIIF manifest to normalize. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-iiif-io-api-695c40d3/normalize_manifest_metadata \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"<string>"}'
```

### validate_manifest

Validate a IIIF manifest against the official IIIF Presentation API Validator service. Returns a validation status (okay=1 for valid, okay=0 for invalid), any warning messages, and detailed error information. Uses the presentation-validator.iiif.io service.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | The URL of the IIIF manifest to validate. |
| `version` | string | No | The Presentation API version to validate against (e.g. 2.1, 3.0). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-iiif-io-api-695c40d3/validate_manifest \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"<string>","version":"<string>"}'
```
