The Angebote API v1/v2 and Vorgaenge API v1/v2 have reached end of life and will be shut down on End of November 2026. Please migrate to the only actively supported version v3 before that date.
This guide focuses on endpoint-level migration. Review your client implementation for:
/v1/or/v2/URLs- generated clients based on old OpenAPI specifications
- code that expects v2
302responses and follows theLocationheader - code that stores only an
ermittlungsId, because v3 result-list endpoints also require thevorgangsnummer - code that reads
gemerkteAngebotefrom the Vorgaenge API, because this moved to the Angebote API v3
OpenAPI specifications
Use the current v3 OpenAPI specifications to regenerate clients or validate your implementation:
Existing Authorization flows can be reused.
Angebote API migration
Main changes
In v1 and parts of v2 the Angebote API could calculate offers directly from ErfassteDaten. v3 calculates offer result lists only for an existing Vorgang. This means that clients must first create or update the Vorgang and then call the Angebote API v3 with the vorgangsnummer.
Alternative use Vorschlaege API for calculations without an existing Vorgang.
v3 also changes the calculation flow:
- The calculation endpoint is now
POST /v3/vorgaenge/{vorgangsnummer}/ergebnisliste. - Calculation options such as
alternativen,produktAnbieter,exkludierteProduktAnbieterandprovisionsAusgabeare sent in the JSON request body, not as query parameters. - A successful calculation returns
200with a result list or204if no result list is available. v2 clients must no longer expect a302response with aLocationheader. - Follow-up reads use both
vorgangsnummerandergebnislisteId.
Example v3 calculation request:
POST /v3/vorgaenge/ABC123/ergebnisliste
Authorization: Bearer <access-token>
Content-Type: application/json
X-TraceId: <trace-id>
{
"ermitteln": true,
"aktualisieren": false,
"alternativen": true,
"produktAnbieter": ["PRODUKTANBIETER_ID"],
"exkludierteProduktAnbieter": [],
"provisionsAusgabe": true
}
Angebote API v1 to v3
| v1 endpoint | v3 endpoint or replacement | Migration notes |
|---|---|---|
POST /v1/finanzierungsvorschlaege | No equivalent Angebote API v3 endpoint. Use Vorschlaege API for calculations without an existing Vorgang, or create/update a Vorgang first and then call Angebote API v3. | v3 does not accept ErfassteDaten directly. |
GET /v1/finanzierungsvorschlaege/{vorgangsNummer} | POST /v3/vorgaenge/{vorgangsnummer}/ergebnisliste | Change GET to POST. Move query options into the JSON request body. Adjust response handling to v3 result-list responses. |
Angebote API v2 to v3
| v2 endpoint | v3 endpoint or replacement | Migration notes |
|---|---|---|
POST /v2/ergebnisliste/ermittlung with ErfassteDaten body and no vorgangsNummer | No equivalent Angebote API v3 endpoint. Use Vorschlaege API for calculations without an existing Vorgang, or create/update a Vorgang first and then call Angebote API v3. | v3 requires {vorgangsnummer} in the path. |
POST /v2/ergebnisliste/ermittlung?vorgangsNummer=... | POST /v3/vorgaenge/{vorgangsnummer}/ergebnisliste | Move vorgangsNummer from query parameter to path. Move options from query parameters into the request body. Replace 302/Location handling with 200/204 handling. |
GET /v2/ergebnisliste/ermittlung/{ermittlungsId} | GET /v3/vorgaenge/{vorgangsnummer}/ergebnisliste/{ergebnislisteId} | v3 requires the Vorgang number and the v3 ergebnislisteId. The old ermittlungsId is not sufficient as the only lookup key. |
GET /v2/ergebnisliste/ermittlung/{ermittlungsId}/ergebnisse | GET /v3/vorgaenge/{vorgangsnummer}/ergebnisliste/{ergebnislisteId} | The result list is represented by the v3 result-list resource. |
GET /v2/ergebnisliste/ermittlung/{ermittlungsId}/ergebnisse/{ergebnisNummer} | GET /v3/vorgaenge/{vorgangsnummer}/ergebnisliste/{ergebnislisteId}/{ergebnisnummer} | v3 adds vorgangsnummer and ergebnislisteId to the URL. |
GET /v2/ergebnisliste/ermittlung/{ermittlungsId}/ergebnisse/{ergebnisNummer}/meldungen | GET /v3/vorgaenge/{vorgangsnummer}/ergebnisliste/{ergebnislisteId}/{ergebnisnummer}/meldungen | v3 adds vorgangsnummer and ergebnislisteId to the URL. |
GET /v2/ergebnisliste/ermittlung/{ermittlungsId}/ergebnisse/{ergebnisNummer}/unterlagen | GET /v3/vorgaenge/{vorgangsnummer}/ergebnisliste/{ergebnislisteId}/{ergebnisnummer}/unterlagen | v3 adds vorgangsnummer and ergebnislisteId to the URL. |
GET /v2/ergebnisliste/ermittlung/{ermittlungsId}/ergebnisse/{ergebnisNummer}/provision | GET /v3/vorgaenge/{vorgangsnummer}/ergebnisliste/{ergebnislisteId}/{ergebnisnummer}/provision | v3 adds vorgangsnummer and ergebnislisteId to the URL. |
GET /v2/ergebnisliste/ermittlung/{ermittlungsId}/ergebnisse/{ergebnisNummer}/zahlungsplaene | GET /v3/vorgaenge/{vorgangsnummer}/ergebnisliste/{ergebnislisteId}/{ergebnisnummer}/zahlungsplaene | v3 adds vorgangsnummer and ergebnislisteId to the URL. |
GET /v2/ergebnisliste/ermittlung/{ermittlungsId}/ergebnisse/{ergebnisNummer}/zahlungsplaene/{zahlungsplanIndex} | GET /v3/vorgaenge/{vorgangsnummer}/ergebnisliste/{ergebnislisteId}/{ergebnisnummer}/zahlungsplaene/{zahlungsplanIndex} | v3 adds vorgangsnummer and ergebnislisteId to the URL. |
GET /v2/ergebnisliste/ermittlung/{ermittlungsId}/ermittlungsAnfrage | No equivalent Angebote API v3 endpoint. Use Kundenangaben API to read or manage the data of a Vorgang. | This is a replacement pattern, not an Angebote API v3 endpoint. |
GET /v2/ergebnisliste/ermittlung/{ermittlungsId}/ermittlungsAnfrage/erfassteDaten | No equivalent Angebote API v3 endpoint. Use Kundenangaben API . | v3 does not expose the original ErfassteDaten through the Angebote API. |
Vorgaenge API migration
Vorgaenge API v1 to v3
Most v1 endpoints have a direct v3 endpoint with the version segment changed from /v1/ to /v3/.
| v1 endpoint | v3 endpoint | Migration notes |
|---|---|---|
GET /v1/vorgaenge | GET /v3/vorgaenge | Regenerate the client from the v3 OpenAPI specification and validate response mapping. |
GET /v1/vorgaenge/{vorgangsNummer} | GET /v3/vorgaenge/{vorgangsNummer} | Regenerate the client from the v3 OpenAPI specification and validate response mapping. |
GET /v1/vorgaenge/{vorgangsNummer}/antraege | GET /v3/vorgaenge/{vorgangsNummer}/antraege | URL version segment changes only. |
GET /v1/vorgaenge/{vorgangsNummer}/antraege/{antragsNummer} | GET /v3/vorgaenge/{vorgangsNummer}/antraege/{antragsNummer} | URL version segment changes only. |
GET /v1/vorgaenge/{vorgangsNummer}/antraege/{antragsNummer}/{teilantragsNummer} | GET /v3/vorgaenge/{vorgangsNummer}/antraege/{antragsNummer}/{teilantragsNummer} | URL version segment changes only. |
POST /v1/vorgaenge/{vorgangsNummer}/antraege/{antragsNummer}/{teilantragsNummer}/status | POST /v3/vorgaenge/{vorgangsNummer}/antraege/{antragsNummer}/{teilantragsNummer}/status | URL version segment changes only. |
GET /v1/vorgaenge/{vorgangsNummer}/kundenBetreuer | GET /v3/vorgaenge/{vorgangsNummer}/kundenBetreuer | URL version segment changes only. |
PUT /v1/vorgaenge/{vorgangsNummer}/kundenBetreuer | PUT /v3/vorgaenge/{vorgangsNummer}/kundenBetreuer | URL version segment changes only. |
GET /v1/vorgaenge/{vorgangsNummer}/vorgangsBearbeiter | GET /v3/vorgaenge/{vorgangsNummer}/vorgangsBearbeiter | URL version segment changes only. |
PUT /v1/vorgaenge/{vorgangsNummer}/vorgangsBearbeiter | PUT /v3/vorgaenge/{vorgangsNummer}/vorgangsBearbeiter | URL version segment changes only. |
Vorgaenge API v2 to v3
Most v2 endpoints also have a direct v3 endpoint with the version segment changed from /v2/ to /v3/. The exception is gemerkteAngebote: those endpoints are not part of the Vorgaenge API v3. Use the Angebote API v3 endpoints for saved offers.
| v2 endpoint | v3 endpoint or replacement | Migration notes |
|---|---|---|
GET /v2/vorgaenge | GET /v3/vorgaenge | URL version segment changes only. |
GET /v2/vorgaenge/{vorgangsNummer} | GET /v3/vorgaenge/{vorgangsNummer} | URL version segment changes only. |
PATCH /v2/vorgaenge/{vorgangsNummer} | PATCH /v3/vorgaenge/{vorgangsNummer} | URL version segment changes only. |
GET /v2/vorgaenge/{vorgangsNummer}/antraege | GET /v3/vorgaenge/{vorgangsNummer}/antraege | URL version segment changes only. |
GET /v2/vorgaenge/{vorgangsNummer}/antraege/{antragsNummer} | GET /v3/vorgaenge/{vorgangsNummer}/antraege/{antragsNummer} | URL version segment changes only. |
GET /v2/vorgaenge/{vorgangsNummer}/antraege/{antragsNummer}/{teilantragsNummer} | GET /v3/vorgaenge/{vorgangsNummer}/antraege/{antragsNummer}/{teilantragsNummer} | URL version segment changes only. |
POST /v2/vorgaenge/{vorgangsNummer}/antraege/{antragsNummer}/{teilantragsNummer}/entscheidungsreife | POST /v3/vorgaenge/{vorgangsNummer}/antraege/{antragsNummer}/{teilantragsNummer}/entscheidungsreife | URL version segment changes only. |
POST /v2/vorgaenge/{vorgangsNummer}/antraege/{antragsNummer}/{teilantragsNummer}/status | POST /v3/vorgaenge/{vorgangsNummer}/antraege/{antragsNummer}/{teilantragsNummer}/status | URL version segment changes only. |
GET /v2/vorgaenge/{vorgangsNummer}/finanzierungsvorschlaege | GET /v3/vorgaenge/{vorgangsNummer}/finanzierungsvorschlaege | URL version segment changes only. |
GET /v2/vorgaenge/{vorgangsNummer}/finanzierungsvorschlaege/{finanzierungsvorschlagId} | GET /v3/vorgaenge/{vorgangsNummer}/finanzierungsvorschlaege/{finanzierungsvorschlagId} | URL version segment changes only. |
GET /v2/vorgaenge/{vorgangsNummer}/kundenBetreuer | GET /v3/vorgaenge/{vorgangsNummer}/kundenBetreuer | URL version segment changes only. |
PUT /v2/vorgaenge/{vorgangsNummer}/kundenBetreuer | PUT /v3/vorgaenge/{vorgangsNummer}/kundenBetreuer | URL version segment changes only. |
POST /v2/vorgaenge/{vorgangsNummer}/nachricht | POST /v3/vorgaenge/{vorgangsNummer}/nachricht | URL version segment changes only. |
GET /v2/vorgaenge/{vorgangsNummer}/vorgangsBearbeiter | GET /v3/vorgaenge/{vorgangsNummer}/vorgangsBearbeiter | URL version segment changes only. |
PUT /v2/vorgaenge/{vorgangsNummer}/vorgangsBearbeiter | PUT /v3/vorgaenge/{vorgangsNummer}/vorgangsBearbeiter | URL version segment changes only. |
GET /v2/vorgaenge/{vorgangsNummer}/gemerkteAngebote | GET /v3/vorgaenge/{vorgangsnummer}/gemerkteangebote in Angebote API v3 | API and path casing change. gemerkteAngebote becomes gemerkteangebote. |
GET /v2/vorgaenge/{vorgangsNummer}/gemerkteAngebote/{nummerAmVorgang} | GET /v3/vorgaenge/{vorgangsnummer}/gemerkteangebote/{laufendeNummer} in Angebote API v3 | The path parameter is named laufendeNummer in Angebote API v3. |
GET /v2/vorgaenge/{vorgangsNummer}/gemerkteAngebote/{nummerAmVorgang}/zahlungsPlaene | GET /v3/vorgaenge/{vorgangsnummer}/gemerkteangebote/{laufendeNummer}/zahlungsplaene in Angebote API v3 | API and path casing change. |
Migration checklist
- Inventory all calls to Angebote API and Vorgaenge API that still use
/v1/or/v2/. - Decide whether each Angebote API calculation uses an existing Vorgang. If not, migrate to Vorschlaege API or create/update a Vorgang before calculating.
- Regenerate API clients from the v3 OpenAPI specifications.
- Replace v2 Angebote API polling or redirect handling with v3
200/204response handling. - Persist the
vorgangsnummertogether with the v3ergebnislisteIdfor all follow-up reads. - Move
gemerkteAngebotereads from Vorgaenge API v2 to Angebote API v3.