---
title: "Exposé veröffentlichen"
url: "https://maklerportal.apim.eu/apis/expose-erstellen/versions/68a05fe4-408a-4a77-bd68-eebadc995624/operations/exposeVeroeffentlichen"
---

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

# Exposé veröffentlichen

`POST` `/exposes/{exposeId}/veroeffentlichen`

Operation ID: `exposeVeroeffentlichen`

Stellt das Exposé auf den gewählten Kanälen ein. Vorher werden die Pflichtangaben geprüft.

## Path parameters

- `exposeId` (string, required) - Kennung des Exposés.

## Request body (required)

Content types: `application/json`

## Responses

- `200` - Veröffentlicht bzw. eingeplant
- `401` - Schlüssel fehlt, ist gesperrt oder ungültig
- `404` - Das Exposé existiert nicht
- `422` - Fachliche Pflichtangaben fehlen

## 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/{exposeId}/veroeffentlichen:
    parameters:
      - $ref: "#/components/parameters/ExposeId"
    post:
      tags:
        - Exposés
      summary: Exposé veröffentlichen
      description: |
        Stellt das Exposé auf den gewählten Kanälen ein. Vorher werden die
        Pflichtangaben geprüft.
      operationId: exposeVeroeffentlichen
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - kanaele
              properties:
                kanaele:
                  type: array
                  minItems: 1
                  items:
                    $ref: "#/components/schemas/Kanal"
                geplant_ab:
                  type: string
                  format: date-time
                  description: Optionaler Zeitpunkt für eine spätere Veröffentlichung.
            example:
              kanaele:
                - portal
                - website
                - newsletter
      responses:
        "200":
          description: Veröffentlicht bzw. eingeplant
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Veroeffentlichung"
        "401":
          $ref: "#/components/responses/NichtAuthentifiziert"
        "404":
          $ref: "#/components/responses/NichtGefunden"
        "422":
          description: Fachliche Pflichtangaben fehlen
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Fehler"
              examples:
                energieausweis:
                  summary: Kennwerte aus dem Energieausweis fehlen
                  value:
                    code: pflichtangabe_fehlt
                    nachricht: Für die Veröffentlichung fehlen Pflichtangaben aus dem
                      Energieausweis.
                    details:
                      - feld: energieausweis.endenergiebedarf_kwh
                        grund: fehlt
                      - feld: energieausweis.gueltig_bis
                        grund: abgelaufen
                provision:
                  summary: Käuferanteil übersteigt Verkäuferanteil
                  value:
                    code: provision_unzulaessig
                    nachricht: Der Käuferanteil der Courtage darf den Verkäuferanteil nicht
                      übersteigen.
                    details:
                      - feld: provision.kaeufer_prozent
                        grund: groesser_als_verkaeufer
security:
  - apiKey: []
components:
  parameters:
    ExposeId:
      name: exposeId
      in: path
      required: true
      description: Kennung des Exposés.
      schema:
        type: string
        example: exp_4d9b2e
  schemas:
    Kanal:
      type: string
      description: Veröffentlichungskanal.
      enum:
        - portal
        - website
        - newsletter
        - schaufenster
    Veroeffentlichung:
      type: object
      properties:
        expose_id:
          type: string
          example: exp_4d9b2e
        status:
          $ref: "#/components/schemas/ExposeStatus"
        kanaele:
          type: array
          items:
            type: object
            properties:
              kanal:
                $ref: "#/components/schemas/Kanal"
              zustand:
                type: string
                enum:
                  - live
                  - geplant
                  - fehlgeschlagen
              url:
                type: string
                format: uri
        veroeffentlicht_am:
          type: string
          format: date-time
          example: 2026-08-20T09:44:03Z
    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"
    ExposeStatus:
      type: string
      description: Lebenszyklus eines Exposés.
      enum:
        - in_arbeit
        - fertig
        - veroeffentlicht
        - zurueckgezogen
        - fehlgeschlagen
      example: fertig
    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: []
    NichtGefunden:
      description: Das Exposé existiert nicht
      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`.
```
