# 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 for Locus Pro. Each call burns credits from your workspace balance.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/credits/iiif/`
**Auth:** `Authorization: Bearer <LOCUS_CREDITS_SECRET_KEY>` (an `lcr_` secret key or a scoped `lcac_` agent credential)
**Required header:** `Idempotency-Key: <fresh UUID per call>`. A retry with the same key replays the stored result without a new charge.
**Response:** the provider response after any endpoint-specific normalization. `X-Locus-Credits-Charged` carries the charge and `X-Locus-Credits-Balance` the remaining balance. Insufficient credits return `402` before the provider is called.
**Pricing:** estimated costs below are USD. Locus debits the credit equivalent at your workspace rate.

Full call contract: https://docs.paywithlocus.com/api-reference/introduction

> Using a Pay With Locus wallet key (`claw_` prefix)? Wallet routes are documented separately: https://docs.paywithlocus.com/wrapped-apis/for-agents

## 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/credits/iiif/get-manifest \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -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/credits/iiif/list-cookbook-recipes \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -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/credits/iiif/list-events \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -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/credits/iiif/list-news \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -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/credits/iiif/normalize-manifest-metadata \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -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/credits/iiif/validate-manifest \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"url":"<string>","version":"<string>"}'
```

## Next steps

- [All wrapped API providers](https://paywithlocus.com/wapi/index.md): pick another provider.
- [Find and call tools](https://paywithlocus.com/agent/tools.md): price ceilings, async results, and errors.
- [Credits and billing](https://paywithlocus.com/agent/billing.md): what a call costs and how to add credits.
- [Agent docs index](https://paywithlocus.com/agent/index.md): every Locus agent page.