跳到正文

35mm.org 数据 API

以 JSON 提供胶片、显影液和显影时间——每条时间都附所依据的技术资料或图表。只读,起步无需密钥。

快速入门 OpenAPI

快速入门

查询某款胶片在某种显影液中的公开时间。一切都在 https://35mm.org/api/public/v1 下;响应为 JSON,键使用 snake_case,日期为 UTC 的 ISO 8601 格式。

curl "https://35mm.org/api/public/v1/development-times?film=ilford-hp5-plus&developer=ilford-id-11"

每条时间都带有出处:其类型、标题和存储的地址。没有记录的字段为 null——不做任何填充。只提供已发布的数据:草稿、推荐以及任何涉及个人的内容绝不提供。

密钥

匿名请求无需任何东西。如需更高的限额,请申请 API 密钥,并将其作为 bearer 令牌发送:

curl -H "Authorization: Bearer 35mm_…" "https://35mm.org/api/public/v1/films"

错误或已被撤销的密钥会返回 401——绝不会悄悄地当作匿名处理。密钥用于服务器和工具:不要把它放在网页中,任何人都能读到。

密钥按请求由人工发放。

速率限制

  • 无密钥:每个地址每分钟 60 次请求。
  • 有密钥:有自己的额度,除非另有约定,每分钟 600 次。
  • 超过限额时响应为 429,并带有 Retry-After 标头(需要等待的秒数)。每个响应都带有 X-RateLimit-Limit 和 X-RateLimit-Remaining。

地址在缓存中计数,绝不存储。密钥的使用量按天计数——只是一个数字,别无其他。

署名

每个响应都有一个 attribution 对象。无论你在哪里显示我们的数据,请链接回 35mm.org——胶片、显影液或时间的 url 指向其页面——并同时显示每条时间的出处:没有出处的显影时间只是一个数字。

数据目前尚未声明许可。请链接回来,保留每条时间的出处,如有疑问请询问。

端点

全部都是 GET。下面的示例是一个小型测试目录的真实响应,不是生产数据。

GET/films

胶片,按 A 到 Z 排序,每款附其厂商、画幅和已公布时间的数量。

curl "https://35mm.org/api/public/v1/films?manufacturer=ilford"
参数
参数含义
q搜索名称或厂商,忽略标点:hp5、ilford hp5。
manufacturer厂商的 slug,例如 ilford。
format画幅的 slug,例如 135 或 120。
process工艺:bw、c41、e6、ecn2 …
type胶片类型:bw_negative、color_negative、color_reversal …
still_made1 表示仍在生产的胶片,0 表示其余。
has_times1 表示有公开时间的胶片,0 表示没有的。
page, per_page见下方分页。
响应示例
{
    "data": [
        {
            "id": 101,
            "slug": "ilford-hp5-plus",
            "name": "HP5 Plus",
            "full_name": "Ilford HP5 Plus",
            "manufacturer": {
                "slug": "ilford",
                "name": "Ilford"
            },
            "iso": 400,
            "type": "bw_negative",
            "process": "bw",
            "is_chromogenic_bw": false,
            "status": "in_production",
            "still_made": true,
            "formats": [
                {
                    "slug": "135",
                    "name": "35mm (135)"
                }
            ],
            "respool_of": null,
            "published_times_count": 2,
            "url": "https://35mm.org/film/ilford-hp5-plus",
            "api_url": "https://35mm.org/api/public/v1/films/ilford-hp5-plus",
            "updated_at": "2026-10-01T12:00:00Z"
        }
    ],
    "links": {
        "first": "https://35mm.org/api/public/v1/films?manufacturer=ilford&page=1",
        "last": "https://35mm.org/api/public/v1/films?manufacturer=ilford&page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 50,
        "from": 1,
        "to": 1,
        "total": 1
    },
    "attribution": {
        "text": "Data from 35mm.org — each time with its source. Please link back to 35mm.org.",
        "url": "https://35mm.org"
    }
}

GET/films/{slug}

一款胶片及其规格和所有已公布的显影时间。

curl "https://35mm.org/api/public/v1/films/ilford-hp5-plus"
响应示例
{
    "data": {
        "id": 101,
        "slug": "ilford-hp5-plus",
        "name": "HP5 Plus",
        "full_name": "Ilford HP5 Plus",
        "manufacturer": {
            "slug": "ilford",
            "name": "Ilford"
        },
        "iso": 400,
        "type": "bw_negative",
        "process": "bw",
        "is_chromogenic_bw": false,
        "status": "in_production",
        "still_made": true,
        "formats": [
            {
                "slug": "135",
                "name": "35mm (135)"
            }
        ],
        "respool_of": null,
        "published_times_count": 2,
        "url": "https://35mm.org/film/ilford-hp5-plus",
        "api_url": "https://35mm.org/api/public/v1/films/ilford-hp5-plus",
        "updated_at": "2026-10-01T12:00:00Z",
        "base": null,
        "emulsion_type": null,
        "spectral_sensitivity": null,
        "has_remjet": false,
        "first_released_year": 1989,
        "discontinued_year": null,
        "grain_rms": 14.0,
        "resolving_power_lpmm": null,
        "dmax": null,
        "latitude_stops_under": null,
        "latitude_stops_over": null,
        "datasheet_url": null,
        "image_url": null,
        "development_times": [
            {
                "id": 501,
                "film": {
                    "slug": "ilford-hp5-plus",
                    "name": "HP5 Plus",
                    "url": "https://35mm.org/film/ilford-hp5-plus"
                },
                "developer": {
                    "slug": "ilford-id-11",
                    "name": "ID-11",
                    "url": "https://35mm.org/developer/ilford-id-11"
                },
                "dilution": {
                    "label": "Stock",
                    "is_stock": true
                },
                "format": "any",
                "ei": 400,
                "temperature_c": 20.0,
                "time_seconds": 450,
                "time": "7:30",
                "agitation": "10 s at the start, then 10 s every minute",
                "process_type": "tank",
                "confidence": "verified",
                "notes": "Tank, 10 s initial agitation.",
                "source": {
                    "type": "manufacturer_datasheet",
                    "title": "ILFORD HP5 PLUS technical information, 2023",
                    "url": "https://example.com/ilford-hp5-plus-datasheet.pdf"
                },
                "inherited_from": null,
                "url": "https://35mm.org/film/ilford-hp5-plus/developed-in/ilford-id-11",
                "updated_at": "2026-10-01T12:00:00Z"
            },
            {
                "id": 502,
                "film": {
                    "slug": "ilford-hp5-plus",
                    "name": "HP5 Plus",
                    "url": "https://35mm.org/film/ilford-hp5-plus"
                },
                "developer": {
                    "slug": "ilford-id-11",
                    "name": "ID-11",
                    "url": "https://35mm.org/developer/ilford-id-11"
                },
                "dilution": {
                    "label": "1+1",
                    "is_stock": false
                },
                "format": "any",
                "ei": 800,
                "temperature_c": 20.0,
                "time_seconds": 600,
                "time": "10:00",
                "agitation": null,
                "process_type": "tank",
                "confidence": "community",
                "notes": null,
                "source": {
                    "type": "community",
                    "title": null,
                    "url": null
                },
                "inherited_from": null,
                "url": "https://35mm.org/film/ilford-hp5-plus/developed-in/ilford-id-11",
                "updated_at": "2026-10-01T12:00:00Z"
            }
        ]
    },
    "attribution": {
        "text": "Data from 35mm.org — each time with its source. Please link back to 35mm.org.",
        "url": "https://35mm.org"
    }
}

GET/developers

显影液和其他药液。

curl "https://35mm.org/api/public/v1/developers?manufacturer=ilford"
参数
参数含义
q搜索名称或厂商。
manufacturer厂商的 slug。
type药液类型:bw_developer、c41_kit、fixer …
still_made1 表示仍在生产的,0 表示其余。
page, per_page见下方分页。
响应示例
{
    "data": [
        {
            "id": 201,
            "slug": "ilford-id-11",
            "name": "ID-11",
            "full_name": "Ilford ID-11",
            "manufacturer": {
                "slug": "ilford",
                "name": "Ilford"
            },
            "type": "bw_developer",
            "form": "powder",
            "status": "in_production",
            "still_made": true,
            "reuse": "depends",
            "is_one_shot": false,
            "is_replenishable": null,
            "reuse_source": {
                "title": "ILFORD PERCEPTOL, ID-11 AND MICROPHEN FILM DEVELOPERS",
                "url": "https://www.ilfordphoto.com/wp/wp-content/uploads/2024/09/ILFORD-POWDER-CHEM-190824.pdf"
            },
            "published_times_count": 2,
            "url": "https://35mm.org/developer/ilford-id-11",
            "api_url": "https://35mm.org/api/public/v1/developers/ilford-id-11",
            "updated_at": "2026-10-01T12:00:00Z"
        }
    ],
    "links": {
        "first": "https://35mm.org/api/public/v1/developers?manufacturer=ilford&page=1",
        "last": "https://35mm.org/api/public/v1/developers?manufacturer=ilford&page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 50,
        "from": 1,
        "to": 1,
        "total": 1
    },
    "attribution": {
        "text": "Data from 35mm.org — each time with its source. Please link back to 35mm.org.",
        "url": "https://35mm.org"
    }
}

GET/developers/{slug}

一种显影液及其稀释比例,以及它有公开时间的胶片。

curl "https://35mm.org/api/public/v1/developers/ilford-id-11"
响应示例
{
    "data": {
        "id": 201,
        "slug": "ilford-id-11",
        "name": "ID-11",
        "full_name": "Ilford ID-11",
        "manufacturer": {
            "slug": "ilford",
            "name": "Ilford"
        },
        "type": "bw_developer",
        "form": "powder",
        "status": "in_production",
        "still_made": true,
        "reuse": "depends",
        "is_one_shot": false,
        "is_replenishable": null,
        "reuse_source": {
            "title": "ILFORD PERCEPTOL, ID-11 AND MICROPHEN FILM DEVELOPERS",
            "url": "https://www.ilfordphoto.com/wp/wp-content/uploads/2024/09/ILFORD-POWDER-CHEM-190824.pdf"
        },
        "published_times_count": 2,
        "url": "https://35mm.org/developer/ilford-id-11",
        "api_url": "https://35mm.org/api/public/v1/developers/ilford-id-11",
        "updated_at": "2026-10-01T12:00:00Z",
        "shelf_life_unopened_months": 24,
        "shelf_life_opened_months": 3,
        "capacity_rolls_per_litre": 10.0,
        "datasheet_url": null,
        "dilutions": [
            {
                "label": "Stock",
                "is_stock": true,
                "parts_developer": 1.0,
                "parts_water": 0.0
            },
            {
                "label": "1+1",
                "is_stock": false,
                "parts_developer": 1.0,
                "parts_water": 1.0
            }
        ],
        "films": [
            {
                "slug": "ilford-hp5-plus",
                "name": "HP5 Plus",
                "published_times_count": 2,
                "times_url": "https://35mm.org/api/public/v1/development-times?film=ilford-hp5-plus&developer=ilford-id-11"
            }
        ]
    },
    "attribution": {
        "text": "Data from 35mm.org — each time with its source. Please link back to 35mm.org.",
        "url": "https://35mm.org"
    }
}

GET/development-times

搜索公开时间。没有自己时间的重新分装,会返回其母款胶片的时间,并标记 inherited_from。

curl "https://35mm.org/api/public/v1/development-times?film=ilford-hp5-plus&developer=ilford-id-11&ei=400"
参数
参数含义
film胶片的 slug。
developer显影液的 slug。
dilution稀释比例的公布标签:Stock、1+1 …
ei胶片拍摄时所用的曝光指数。
temperature温度,单位 °C。
format时间所对应的画幅:135、120、sheet 或 any。
page, per_page见下方分页。
响应示例
{
    "data": [
        {
            "id": 501,
            "film": {
                "slug": "ilford-hp5-plus",
                "name": "HP5 Plus",
                "url": "https://35mm.org/film/ilford-hp5-plus"
            },
            "developer": {
                "slug": "ilford-id-11",
                "name": "ID-11",
                "url": "https://35mm.org/developer/ilford-id-11"
            },
            "dilution": {
                "label": "Stock",
                "is_stock": true
            },
            "format": "any",
            "ei": 400,
            "temperature_c": 20.0,
            "time_seconds": 450,
            "time": "7:30",
            "agitation": "10 s at the start, then 10 s every minute",
            "process_type": "tank",
            "confidence": "verified",
            "notes": "Tank, 10 s initial agitation.",
            "source": {
                "type": "manufacturer_datasheet",
                "title": "ILFORD HP5 PLUS technical information, 2023",
                "url": "https://example.com/ilford-hp5-plus-datasheet.pdf"
            },
            "inherited_from": null,
            "url": "https://35mm.org/film/ilford-hp5-plus/developed-in/ilford-id-11",
            "updated_at": "2026-10-01T12:00:00Z"
        }
    ],
    "links": {
        "first": "https://35mm.org/api/public/v1/development-times?film=ilford-hp5-plus&developer=ilford-id-11&ei=400&page=1",
        "last": "https://35mm.org/api/public/v1/development-times?film=ilford-hp5-plus&developer=ilford-id-11&ei=400&page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 50,
        "from": 1,
        "to": 1,
        "total": 1
    },
    "attribution": {
        "text": "Data from 35mm.org — each time with its source. Please link back to 35mm.org.",
        "url": "https://35mm.org"
    }
}

一条显影时间

显影时间的字段
字段含义
time_seconds, time时间,以整秒表示,以及 m:ss 格式。
ei, temperature_c该时间所对应的曝光指数和温度(°C)。
source始终存在:type(manufacturer_datasheet、own_test、third_party、community)、title 和 url,按存储值——没有记录时为 null。
confidenceverified、community、unverified 或 disputed:该时间对照出处核实的程度。
inherited_from重新分装沿用其时间时,为母款胶片的 slug,否则为 null。

分页

列表用 page 和 per_page 分页(默认 50,最大 100)。links 包含 first、last、prev 和 next 地址——没有时为 null——meta 包含 current_page、last_page、per_page、from、to 和 total。沿着 links.next 一直走到它为 null 为止。

缓存

响应带有 ETag、Last-Modified 和 Cache-Control: public, max-age=300。把 ETag 放进 If-None-Match 发回,未变化的响应会返回 304 且无正文——它仍然计为一次请求。也请在你那边缓存:目录不会每分钟都变化。

任何网站上的浏览器都可以读取这些路由(CORS:来自任意源的 GET)。

错误

错误采用同一种结构,被拒绝的参数附有 details:

{
    "error": {
        "code": "invalid_parameter",
        "message": "One or more parameters are not valid.",
        "details": { "per_page": ["The per page field must not be greater than 100."] }
    }
}
错误
HTTPcode含义
401invalid_api_key密钥错误或已被撤销。
404not_found没有该 slug 的胶片或显影液。
405method_not_allowed该 API 为只读:请使用 GET。
422invalid_parameter某个参数不是有效值。
429rate_limited请求过多:请等待 Retry-After 秒,或申请密钥。

OpenAPI

整个 API 由一个 OpenAPI 3.1 文件描述:/api/public/v1/openapi.json。可将其导入 Postman、Insomnia 或代码生成器。

嵌入时间卡片

博客和论坛可以把一条显影时间显示为一张小卡片:胶片、显影液、稀释比例、感光度、温度、时间及其出处,并链接回 35mm.org。它是一个纯页面——没有 Cookie,没有脚本,不从其他网站加载任何内容——专为嵌入框架而设计。

<iframe src="https://35mm.org/embed/time?film=ilford-hp5-plus&developer=ilford-id-11&dilution=Stock&ei=400&temp=20" width="100%" height="214" style="border:0;max-width:440px" loading="lazy" title="HP5 Plus in ID-11 — 35mm.org"></iframe>
参数
参数含义
film, developer胶片和显影液的 slug。
dilution, ei, temp缩小到一条时间。省略时显示标称感光度下的时间。
id或通过 API 中的 id 指定一条时间。
themelight 或 dark。省略时,卡片跟随读者的配色方案。
langen、pl 或 uk。

如果没有匹配的公开时间,卡片会如实说明并链接到胶片页面——绝不会显示相近的匹配。任何胶片×显影液页面上的“嵌入”按钮都会为你生成代码,并附预览。

我们按天、按网站(所在页面的主机名,不更长)和按组合统计卡片的显示次数。没有 Cookie,没有地址。