# 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. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-opensfhistory-org-api-456177b3/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## 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/parse-opensfhistory-org-api-456177b3/get_image_details \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -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/parse-opensfhistory-org-api-456177b3/get_images_at_location \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -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/parse-opensfhistory-org-api-456177b3/get_mapped_images \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","max_lat":"<number>","max_lng":"<number>","min_lat":"<number>","min_lng":"<number>","page":"<integer>"}'
```
