---
title: "Exposés auflisten"
url: "https://maklerportal.apim.eu/apis/expose-erstellen/versions/68a05fe4-408a-4a77-bd68-eebadc995624/operations/exposesAuflisten"
---

> Full API specification: https://maklerportal.apim.eu/apis/expose-erstellen/versions/68a05fe4-408a-4a77-bd68-eebadc995624.md

# Exposés auflisten

`GET` `/exposes`

Operation ID: `exposesAuflisten`

Liefert die Exposés des Mandanten, optional gefiltert nach Objekt und Status.

## Query parameters

- `objekt_id` (string, optional) - Nur Exposés zu diesem Objekt.
- `status` (string, optional)
- `limit` (integer, optional)
- `cursor` (string, optional) - Cursor aus `seite.cursor_naechste` der vorigen Antwort.

## Responses

- `200` - Trefferliste
- `401` - Schlüssel fehlt, ist gesperrt oder ungültig
- `429` - Rate Limit erreicht

## OpenAPI definition

```yaml
openapi: 3.0.3
info:
  title: Exposé erstellen
  version: 1.0.0
servers:
  - url: https://api.maklerportal.example/v1
    description: Produktion
  - url: https://sandbox.api.maklerportal.example/v1
    description: Sandbox – Bestand wird nächtlich zurückgesetzt
paths:
  /exposes:
    get:
      tags:
        - Exposés
      summary: Exposés auflisten
      description: Liefert die Exposés des Mandanten, optional gefiltert nach Objekt
        und Status.
      operationId: exposesAuflisten
      parameters:
        - name: objekt_id
          in: query
          description: Nur Exposés zu diesem Objekt.
          schema:
            type: string
            example: obj_8f2c1a
        - name: status
          in: query
          schema:
            $ref: "#/components/schemas/ExposeStatus"
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
        - name: cursor
          in: query
          description: Cursor aus `seite.cursor_naechste` der vorigen Antwort.
          schema:
            type: string
      responses:
        "200":
          description: Trefferliste
          content:
            application/json:
              schema:
                type: object
                properties:
                  daten:
                    type: array
                    items:
                      $ref: "#/components/schemas/Expose"
                  seite:
                    $ref: "#/components/schemas/Seite"
        "401":
          $ref: "#/components/responses/NichtAuthentifiziert"
        "429":
          $ref: "#/components/responses/ZuVieleAnfragen"
security:
  - apiKey: []
components:
  schemas:
    ExposeStatus:
      type: string
      description: Lebenszyklus eines Exposés.
      enum:
        - in_arbeit
        - fertig
        - veroeffentlicht
        - zurueckgezogen
        - fehlgeschlagen
      example: fertig
    Expose:
      type: object
      properties:
        id:
          type: string
          example: exp_4d9b2e
        objekt_id:
          type: string
          example: obj_8f2c1a
        vorlage_id:
          type: string
          example: vrl_klassik
        sprache:
          type: string
          example: de
        status:
          $ref: "#/components/schemas/ExposeStatus"
        pdf_url:
          type: string
          format: uri
          description: "Nur bei `status: fertig` gesetzt. Der Link ist 24 Stunden gültig."
          example: https://api.maklerportal.example/v1/exposes/exp_4d9b2e/pdf
        seiten:
          type: integer
          description: Seitenzahl des erzeugten Dokuments.
          example: 6
        pflichtangaben:
          $ref: "#/components/schemas/Pflichtangabenbericht"
        erstellt_am:
          type: string
          format: date-time
          example: 2026-08-20T09:41:12Z
        fertig_am:
          type: string
          format: date-time
          nullable: true
          example: 2026-08-20T09:41:20Z
    Seite:
      type: object
      description: Cursor-basierte Paginierung.
      properties:
        anzahl:
          type: integer
          example: 25
        gesamt:
          type: integer
          example: 138
        cursor_naechste:
          type: string
          nullable: true
          example: eyJzIjoyNX0
    Pflichtangabenbericht:
      type: object
      description: Ergebnis der Prüfung anzeigepflichtiger Angaben.
      properties:
        vollstaendig:
          type: boolean
          example: false
        fehlend:
          type: array
          items:
            $ref: "#/components/schemas/Fehlerdetail"
    Fehler:
      type: object
      description: Einheitliches Fehlerformat aller Maklerportal-APIs.
      required:
        - code
        - nachricht
      properties:
        code:
          type: string
          example: pflichtangabe_fehlt
        nachricht:
          type: string
          example: Für die Veröffentlichung fehlen Pflichtangaben aus dem Energieausweis.
        details:
          type: array
          items:
            $ref: "#/components/schemas/Fehlerdetail"
    Fehlerdetail:
      type: object
      properties:
        feld:
          type: string
          example: energieausweis.endenergiebedarf_kwh
        grund:
          type: string
          example: fehlt
  responses:
    NichtAuthentifiziert:
      description: Schlüssel fehlt, ist gesperrt oder ungültig
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Fehler"
          example:
            code: nicht_authentifiziert
            nachricht: Der API-Schlüssel ist ungültig oder wurde zurückgezogen.
            details: []
    ZuVieleAnfragen:
      description: Rate Limit erreicht
      headers:
        Retry-After:
          description: Wartezeit in Sekunden
          schema:
            type: integer
            example: 12
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Fehler"
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: apikey
      description: >
        Jeder Aufruf trägt einen API-Schlüssel im Header `apikey`. Den Schlüssel

        erzeugen Sie im Maklerportal unter "Meine Anwendungen"; er wird genau
        einmal

        angezeigt.


        An jedem Schlüssel hängen die Scopes, die er nutzen darf. Fehlt einer,

        antwortet die API mit `403` und `code: "scope_fehlt"`; der fehlende
        Scope

        steht in `details[].feld`.
```
