跳到主要內容

35mm.org 資料 API

以 JSON 提供底片、顯影液與顯影時間——每筆時間都附所依據的技術資料或圖表。唯讀,起步無需金鑰。

快速入門 OpenAPI

快速入門

查詢某款底片在某種顯影液中的公開時間。一切都在 https://www.35mm.org/api/public/v1 下;回應為 JSON,鍵使用 snake_case,日期為 UTC 的 ISO 8601 格式。

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

每筆時間都帶有出處:其類型、標題與儲存的位址。沒有記錄的欄位為 null——不做任何填充。只提供已發布的資料:草稿、推薦以及任何涉及個人的內容絕不提供。

金鑰

匿名要求無需任何東西。如需更高的額度,請申請 API 金鑰,並將其作為 bearer 權杖傳送:

curl -H "Authorization: Bearer 35mm_…" "https://www.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://www.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://www.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://www.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://www.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://www.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://www.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,沒有位址。