Schnellstart
Fragen Sie die veröffentlichten Zeiten eines Films in einem Entwickler ab. Alles liegt unter https://www.35mm.org/api/public/v1; die Antworten sind JSON mit Schlüsseln in snake_case und ISO-8601-Datumsangaben in UTC.
curl "https://www.35mm.org/api/public/v1/development-times?film=ilford-hp5-plus&developer=ilford-id-11"
Jede Zeit kommt mit ihrer Quelle: welche Art sie ist, ihr Titel und ihre Adresse wie gespeichert. Wo keine verzeichnet ist, sind die Felder null – nichts wird aufgefüllt. Es werden nur veröffentlichte Daten ausgeliefert: nie Entwürfe, Vorschläge oder irgendetwas über Personen.
Schlüssel
Anonyme Anfragen brauchen nichts. Für ein höheres Limit fordern Sie einen API-Schlüssel an und senden ihn als Bearer-Token:
curl -H "Authorization: Bearer 35mm_…" "https://www.35mm.org/api/public/v1/films"
Ein falscher oder widerrufener Schlüssel wird mit 401 beantwortet – er wird nie stillschweigend als anonym behandelt. Schlüssel sind für Server und Werkzeuge: Legen Sie keinen auf einer Webseite ab, wo ihn jeder lesen kann.
Schlüssel werden auf Anfrage von Hand vergeben.
Ratenbegrenzung
- Ohne Schlüssel: 60 Anfragen pro Minute für jede Adresse.
- Mit Schlüssel: ein eigenes Kontingent, 600 pro Minute, sofern nichts anderes vereinbart ist.
- Über dem Limit lautet die Antwort 429 mit einem Retry-After-Header (Wartezeit in Sekunden). Jede Antwort enthält X-RateLimit-Limit und X-RateLimit-Remaining.
Adressen werden in einem Cache gezählt und nie gespeichert. Die Nutzung eines Schlüssels wird pro Tag gezählt – eine Zahl, mehr nicht.
Namensnennung
Jede Antwort enthält ein attribution-Objekt. Bitte verlinken Sie überall dort, wo Sie unsere Daten zeigen, zurück auf 35mm.org – die url eines Films, Entwicklers oder einer Zeit verweist auf ihre Seite – und zeigen Sie die Quelle jeder Zeit mit an: Eine Entwicklungszeit ohne ihre Quelle ist nur eine Zahl.
Die Daten haben noch keine angegebene Lizenz. Verlinken Sie zurück, behalten Sie die Quelle jeder Zeit bei und fragen Sie, wenn Sie unsicher sind.
Endpunkte
Alle sind GET. Die Beispiele unten sind echte Antworten für einen kleinen Testkatalog, keine Produktivdaten.
GET/films
Filme von A bis Z, jeweils mit Hersteller, Formaten und Anzahl der veröffentlichten Zeiten.
curl "https://www.35mm.org/api/public/v1/films?manufacturer=ilford"
| Parameter | Bedeutung |
|---|---|
| q | Den Namen oder Hersteller suchen, Satzzeichen ignorierend: hp5, ilford hp5. |
| manufacturer | Der Slug eines Herstellers, etwa ilford. |
| format | Der Slug eines Formats, etwa 135 oder 120. |
| process | Der Prozess: bw, c41, e6, ecn2 … |
| type | Die Art des Films: bw_negative, color_negative, color_reversal … |
| still_made | 1 für Filme, die noch in Produktion sind, 0 für die übrigen. |
| has_times | 1 für Filme mit veröffentlichter Zeit, 0 für die ohne. |
| page, per_page | Siehe Seitenaufteilung unten. |
Beispielantwort
{
"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}
Ein Film mit seiner Spezifikation und jeder veröffentlichten Entwicklungszeit.
curl "https://www.35mm.org/api/public/v1/films/ilford-hp5-plus"
Beispielantwort
{
"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
Entwickler und andere Chemie.
curl "https://www.35mm.org/api/public/v1/developers?manufacturer=ilford"
| Parameter | Bedeutung |
|---|---|
| q | Den Namen oder Hersteller suchen. |
| manufacturer | Der Slug eines Herstellers. |
| type | Die Art der Chemie: bw_developer, c41_kit, fixer … |
| still_made | 1 für die noch in Produktion befindlichen, 0 für die übrigen. |
| page, per_page | Siehe Seitenaufteilung unten. |
Beispielantwort
{
"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}
Ein Entwickler mit seinen Verdünnungen und den Filmen, für die er veröffentlichte Zeiten hat.
curl "https://www.35mm.org/api/public/v1/developers/ilford-id-11"
Beispielantwort
{
"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
Veröffentlichte Zeiten suchen. Eine Umspulung ohne eigene Zeiten antwortet mit denen ihres Ausgangsfilms, gekennzeichnet mit inherited_from.
curl "https://www.35mm.org/api/public/v1/development-times?film=ilford-hp5-plus&developer=ilford-id-11&ei=400"
| Parameter | Bedeutung |
|---|---|
| film | Der Slug eines Films. |
| developer | Der Slug eines Entwicklers. |
| dilution | Die Bezeichnung einer Verdünnung wie veröffentlicht: Stock, 1+1 … |
| ei | Der Belichtungsindex, mit dem der Film belichtet wurde. |
| temperature | Die Temperatur in °C. |
| format | Das Format, für das die Zeit gilt: 135, 120, sheet oder any. |
| page, per_page | Siehe Seitenaufteilung unten. |
Beispielantwort
{
"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"
}
}
Eine Entwicklungszeit
| Feld | Bedeutung |
|---|---|
| time_seconds, time | Die Zeit in ganzen Sekunden und als m:ss. |
| ei, temperature_c | Der Belichtungsindex und die Temperatur in °C, für die die Zeit gilt. |
| source | Immer vorhanden: type (manufacturer_datasheet, own_test, third_party, community), title und url wie gespeichert – null, wo keine verzeichnet ist. |
| confidence | verified, community, unverified oder disputed: wie weit die Zeit anhand ihrer Quelle geprüft wurde. |
| inherited_from | Der Slug des Ausgangsfilms, wenn eine Umspulung seine Zeiten übernimmt, sonst null. |
Seitenaufteilung
Listen sind seitenweise mit page und per_page abrufbar (50 standardmäßig, höchstens 100). links enthält die Adressen first, last, prev und next – null, wo es keine gibt – und meta enthält current_page, last_page, per_page, from, to und total. Folgen Sie links.next, bis es null ist.
Caching
Antworten tragen ETag und Last-Modified sowie Cache-Control: public, max-age=300. Senden Sie den ETag in If-None-Match zurück, und eine unveränderte Antwort liefert 304 ohne Inhalt – sie zählt trotzdem als Anfrage. Bitte cachen Sie auch auf Ihrer Seite: Der Katalog ändert sich nicht im Minutentakt.
Browser auf jeder Website dürfen diese Routen lesen (CORS: GET von jedem Ursprung).
Fehler
Fehler haben eine einheitliche Form, mit details bei einem abgelehnten Parameter:
{
"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."] }
}
}
| HTTP | code | Bedeutung |
|---|---|---|
| 401 | invalid_api_key | Der Schlüssel ist falsch oder wurde widerrufen. |
| 404 | not_found | Kein Film oder Entwickler mit diesem Slug. |
| 405 | method_not_allowed | Die API ist nur lesend: Verwenden Sie GET. |
| 422 | invalid_parameter | Ein Parameter hat keinen gültigen Wert. |
| 429 | rate_limited | Zu viele Anfragen: Warten Sie die Sekunden aus Retry-After ab oder fordern Sie einen Schlüssel an. |
OpenAPI
Die gesamte API ist in einer OpenAPI-3.1-Datei beschrieben: /api/public/v1/openapi.json. Importieren Sie sie in Postman, Insomnia oder einen Codegenerator.
Eine Zeitkarte einbetten
Blogs und Foren können eine Entwicklungszeit als kleine Karte zeigen: Film, Entwickler, Verdünnung, Empfindlichkeit, Temperatur, die Zeit und ihre Quelle, mit einem Link zurück auf 35mm.org. Es ist eine schlichte Seite – keine Cookies, keine Skripte, nichts von anderen Websites geladen – und dafür gemacht, in einen Frame eingebettet zu werden.
<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>
| Parameter | Bedeutung |
|---|---|
| film, developer | Die Slugs des Films und des Entwicklers. |
| dilution, ei, temp | Auf eine Zeit eingrenzen. Wird er weggelassen, wird die Zeit bei Nennempfindlichkeit gezeigt. |
| id | Oder eine Zeit über ihre ID, aus der API. |
| theme | light oder dark. Wird er weggelassen, folgt die Karte dem Farbschema des Lesers. |
| lang | en, pl oder uk. |
Passt keine veröffentlichte Zeit, sagt die Karte das und verlinkt auf den Film – sie zeigt nie eine ungefähre Übereinstimmung. Die Schaltfläche „Einbetten“ auf jeder Seite Film × Entwickler erzeugt den Code für Sie, mit Vorschau.
Wir zählen, wie oft eine Karte angezeigt wird, pro Tag, pro Website (der Host der Seite, auf der sie steht, nichts Längeres) und pro Kombination. Keine Cookies, keine Adressen.