Skip to content

Images

Images are the heart of Yesterdays. Most are old photographs, but they also include drawings, postcards, architectural sketches, and more.

The images endpoint has two different response formats: a list response for browsing, and a richer detail response with full metadata, georeferences, subjects, and comments.

List images

GET /api/v2/images/

Returns a paginated list of images with basic metadata. This response is intentionally lightweight and doesn't include georeferences, subjects, or comments. Use the detail_url field to fetch the full details for any image.

Example request

curl "https://yesterdays.maprva.org/api/v2/images/"
import requests

response = requests.get("https://yesterdays.maprva.org/api/v2/images/")
data = response.json()
library(httr2)

resp <- request("https://yesterdays.maprva.org/api/v2/images/") |>
  req_perform()
data <- resp_body_json(resp)

Example response

{
    "count": 37244,
    "next": "https://yesterdays.maprva.org/api/v2/images/?page=2",
    "previous": null,
    "results": [
        {
            "id": 5934,
            "title": "N. 28th and Q Streets",
            "thumbnail": "https://cdn.maprva.org/7416452b52d0f9fdbe1c_thumb",
            "creator": "Shelton, Edith Keesee--1898-1989",
            "original_date": "9/1956",
            "date_display": "9/1956",
            "from_above": false,
            "duplicate_of": null,
            "collection": {
                "id": 39,
                "name": "Edith K. Shelton Photograph Collection",
                "slug": "edith-k-shelton-photograph-collection",
                "source_name": "The Valentine"
            },
            "georeference_status": "georeferenced",
            "detail_url": "https://yesterdays.maprva.org/api/v2/images/5934/"
        }
    ]
}

List fields

Field Type Description
id integer Unique identifier
title string Title of the image
thumbnail string URL to a thumbnail of the image
creator string Creator/photographer name
original_date string Date string as recorded by the source
date_display string Human-friendly date display
from_above boolean Whether this is a from-above (bird's-eye) image
duplicate_of integer or null ID of the image this is a duplicate of, or null if not a duplicate
collection object Collection info (id, name, slug, source_name)
georeference_status string One of "available", "georeferenced", "duplicate", or "will_not_georef"
detail_url string API link to the full detail for this image

Filtering

Parameter Type Description
source integer Filter by source ID
collection integer Filter by collection ID
subject integer Filter by subject ID
creator string Search creator name (case-insensitive, partial match)
year_min number Include images whose date range overlaps with or follows this year
year_max number Include images whose date range overlaps with or precedes this year
georeferenced boolean true for georeferenced images only, false for un-georeferenced
from_above boolean true for from-above images, false for standard images

Example: combining filters

Find all georeferenced images from the Valentine, taken between 1900 and 1920:

curl "https://yesterdays.maprva.org/api/v2/images/?source=2&georeferenced=true&year_min=1900&year_max=1920"
import requests

response = requests.get("https://yesterdays.maprva.org/api/v2/images/", params={
    "source": 2,
    "georeferenced": "true",
    "year_min": 1900,
    "year_max": 1920,
})
data = response.json()
library(httr2)

resp <- request("https://yesterdays.maprva.org/api/v2/images/") |>
  req_url_query(source = 2, georeferenced = "true", year_min = 1900, year_max = 1920) |>
  req_perform()
data <- resp_body_json(resp)

Ordering

Parameter Description
order Sort by collection order
title Sort alphabetically by title
original_date Sort by date
created_at Sort by when the image was added to Yesterdays
last_georeferenced_at Sort by when the image was most recently georeferenced

Prefix with - to sort descending. For example, ordering=original_date gives oldest first, while ordering=-original_date gives newest first.

# Most recently georeferenced images first
curl "https://yesterdays.maprva.org/api/v2/images/?ordering=-last_georeferenced_at"
import requests

# Most recently georeferenced images first
response = requests.get("https://yesterdays.maprva.org/api/v2/images/", params={
    "ordering": "-last_georeferenced_at",
})
data = response.json()
library(httr2)

# Most recently georeferenced images first
resp <- request("https://yesterdays.maprva.org/api/v2/images/") |>
  req_url_query(ordering = "-last_georeferenced_at") |>
  req_perform()
data <- resp_body_json(resp)

Default ordering is -order (newest additions first).

Get a single image

GET /api/v2/images/{id}/

Returns complete details for a single image, including its georeferences, subjects, comments, and license information.

Example request

curl "https://yesterdays.maprva.org/api/v2/images/5934/"
import requests

response = requests.get("https://yesterdays.maprva.org/api/v2/images/5934/")
data = response.json()
library(httr2)

resp <- request("https://yesterdays.maprva.org/api/v2/images/5934/") |>
  req_perform()
data <- resp_body_json(resp)

Example response

{
    "id": 5934,
    "title": "N. 28th and Q Streets",
    "permalink": "https://cdn.maprva.org/7416452b52d0f9fdbe1c",
    "thumbnail": "https://cdn.maprva.org/7416452b52d0f9fdbe1c_thumb",
    "original_url": "https://valentine.rediscoverysoftware.com/MADetailB.aspx?rID=PHC0039/-#V.91.42.2952&db=biblio&dir=VALARCH",
    "description": "35mm color slide of the intersection of N. 28th Street and Q Street in north Church Hill; image shows a horse with small wagon loaded with a bale of hay, stopped at a Yield sign; three children stand on sidewalk near horse; two-story house with siding in background; Richmond, Virginia.",
    "creator": "Shelton, Edith Keesee--1898-1989",
    "license": null,
    "original_date": "9/1956",
    "edtf_date": "1956-09",
    "date_display": "9/1956",
    "collection": {
        "id": 39,
        "name": "Edith K. Shelton Photograph Collection",
        "slug": "edith-k-shelton-photograph-collection",
        "source_name": "The Valentine"
    },
    "subjects": [
        {
            "id": 150,
            "title": "horse",
            "slug": "horse",
            "wikidata": {
                "wikidata_id": "Q726",
                "uri": "https://www.wikidata.org/entity/Q726",
                "title": "horse",
                "description": "domesticated four-footed mammal from the equine family"
            }
        }
    ],
    "from_above": false,
    "duplicate_of": null,
    "scale": null,
    "mirror": "none",
    "rotation": 0,
    "georeference_status": "georeferenced",
    "georeferences": [
        {
            "id": 5701,
            "latitude": 37.536789,
            "longitude": -77.409651,
            "direction": 136.0,
            "confidence": "medium",
            "confidence_notes": "",
            "georeferenced_by": "mhpob",
            "georeferenced_at": "2025-12-16T12:55:01Z",
            "validations": []
        }
    ],
    "from_above_georeferences": [],
    "comments": [
        {
            "id": 57,
            "text": "Other angle of #5933",
            "commented_by": "mhpob",
            "created_at": "2025-12-16T12:55:42Z"
        }
    ],
    "detail_url": "https://yesterdays.maprva.org/api/v2/images/5934/"
}

Detail fields

The detail response includes all the list fields, plus:

Field Type Description
permalink string Direct URL to the image file. If a rotation or mirror transform has been applied, this automatically points to the corrected version.
original_url string Link to the image in the original archive
description string Full description of the image
license object or null License info (display_name, permalink), or null if no license is available
edtf_date string Date in EDTF format, when available
subjects array Subjects tagged in this image, with Wikidata metadata
scale string Scale notation for maps and from-above imagery
mirror string Mirror transform applied: "none", "h" (horizontal), or "v" (vertical)
rotation integer Clockwise rotation applied to this image: 0, 90, 180, or 270 (degrees)
georeferences array Point georeferences (see below)
from_above_georeferences array From-above polygon georeferences (see below)
comments array Community comments on this image

Georeference objects

Each georeference in the georeferences array represents someone's placement of this image on the map:

Field Type Description
id integer Unique identifier
latitude number Latitude of the photographer's location
longitude number Longitude of the photographer's location
direction number Compass direction the camera was facing (degrees, 0 = north)
confidence string "low", "medium", or "high"
confidence_notes string Explanation for the chosen confidence level
georeferenced_by string OpenStreetMap username of the contributor
georeferenced_at string ISO 8601 timestamp
validations array Community validations (see below)

From-above georeference objects

The from_above_georeferences array contains polygon-based georeferences for bird's-eye and from-above images:

Field Type Description
id integer Unique identifier
polygon object GeoJSON Polygon geometry representing the area covered
confidence string "low", "medium", or "high"
confidence_notes string Explanation for the chosen confidence level
georeferenced_by string OpenStreetMap username of the contributor
georeferenced_at string ISO 8601 timestamp
validations array Community validations

Validation objects

Validations appear inside georeference objects. They represent community review of a georeference:

Field Type Description
validation string One of "correct", "uncertain", or "incorrect"
validated_by string OpenStreetMap username of the reviewer
notes string Optional notes from the reviewer
validated_at string ISO 8601 timestamp

Comment objects

Field Type Description
id integer Unique identifier
text string The comment text
commented_by string OpenStreetMap username of the commenter
created_at string ISO 8601 timestamp