# Opensfhistory — 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.

> Browse and explore historical San Francisco photographs with their exact geographic locations, dates, and photographer details from the OpenSFHistory collection. Search for images by location, view detailed metadata about specific photos, or discover all images captured at a particular place on the map.

**Category:** Maps & Geospatial | **Website:** [www.opensfhistory.org/maps/](https://www.opensfhistory.org/maps/) | **Docs:** [parse.bot/marketplace/456177b3-f8e4-4d06-ad79-2f9d5d728b5e/opensfhistory-org-api](https://parse.bot/marketplace/456177b3-f8e4-4d06-ad79-2f9d5d728b5e/opensfhistory-org-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/opensfhistory/`
**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 image details

Get detailed metadata for a specific image including title, date, description, photographer name, and collection information.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `image_id` | string | Yes | The image identifier (e.g. 'wnp32.3610.jpg'). Obtained from get_mapped_images or get_images_at_location results. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/opensfhistory/get-image-details \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"image_id":"<string>"}'
```

### Get images at location

Get all images at a specific map coordinate with their titles. Uses exact coordinate matching from the marker dataset.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `latitude` | string | Yes | Latitude of the map location (e.g. '37.327641'). Must match a marker coordinate from get_mapped_images. |
| `longitude` | string | Yes | Longitude of the map location (e.g. '-121.903091'). Must match a marker coordinate from get_mapped_images. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/opensfhistory/get-images-at-location \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"latitude":"<string>","longitude":"<string>"}'
```

### Get mapped images

Get paginated list of all mapped historical images with their geographic coordinates. Optionally filter by a geographic bounding box. Returns image IDs, coordinates, and URLs for each image.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Number of results per page. Must be between 1 and 200. |
| `max_lat` | number | No | Maximum latitude for bounding box filter (e.g. 37.80). |
| `max_lng` | number | No | Maximum longitude for bounding box filter (e.g. -122.40). |
| `min_lat` | number | No | Minimum latitude for bounding box filter (e.g. 37.75). |
| `min_lng` | number | No | Minimum longitude for bounding box filter (e.g. -122.45). |
| `page` | integer | No | Page number for pagination. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/opensfhistory/get-mapped-images \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","max_lat":"<number>","max_lng":"<number>","min_lat":"<number>","min_lng":"<number>","page":"<integer>"}'
```

## 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.