---
title: "Termin anlegen"
url: "https://maklerportal.apim.eu/apis/besichtigungstermine/versions/b8696a0c-e900-480e-9ce8-7b7f1517d03d/operations/terminAnlegen"
---

> Full API specification: https://maklerportal.apim.eu/apis/besichtigungstermine/versions/b8696a0c-e900-480e-9ce8-7b7f1517d03d.md

# Termin anlegen

`POST` `/termine`

Operation ID: `terminAnlegen`

## Request body (required)

Content types: `application/json`

## Responses

- `201` - Angelegt
- `400` - Die Anfrage entspricht nicht dem Schema
- `409` - Zeitliche Überschneidung mit einem bestehenden Termin

## OpenAPI definition

```yaml
openapi: 3.0.3
info:
  title: Besichtigungstermine
  version: 1.0.0
servers:
  - url: https://api.maklerportal.example/v1
    description: Produktion
  - url: https://sandbox.api.maklerportal.example/v1
    description: Sandbox
paths:
  /termine:
    post:
      tags:
        - Termine
      summary: Termin anlegen
      operationId: terminAnlegen
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TerminAnlegen"
            examples:
              einzel:
                summary: Einzelbesichtigung
                value:
                  objekt_id: obj_8f2c1a
                  art: einzel
                  beginn: 2026-09-03T16:00:00+02:00
                  dauer_minuten: 30
                  treffpunkt: Vor dem Hauseingang, Falkenried 42
              sammel:
                summary: Sammelbesichtigung mit zwölf Plätzen
                value:
                  objekt_id: obj_8f2c1a
                  art: sammel
                  beginn: 2026-09-05T11:00:00+02:00
                  dauer_minuten: 60
                  plaetze: 12
      responses:
        "201":
          description: Angelegt
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Termin"
        "400":
          $ref: "#/components/responses/Validierungsfehler"
        "409":
          description: Zeitliche Überschneidung mit einem bestehenden Termin
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Fehler"
              example:
                code: konflikt
                nachricht: Zu dieser Zeit besteht bereits ein Termin für das Objekt.
                details:
                  - feld: beginn
                    grund: ueberschneidung
security:
  - apiKey: []
components:
  schemas:
    TerminAnlegen:
      type: object
      required:
        - objekt_id
        - art
        - beginn
      properties:
        objekt_id:
          type: string
          example: obj_8f2c1a
        art:
          $ref: "#/components/schemas/Terminart"
        beginn:
          type: string
          format: date-time
          example: 2026-09-03T16:00:00+02:00
        dauer_minuten:
          type: integer
          minimum: 10
          maximum: 240
          default: 30
        plaetze:
          type: integer
          minimum: 1
          description: "Nur bei `art: sammel` auszuwerten."
          example: 12
        treffpunkt:
          type: string
          maxLength: 200
          example: Vor dem Hauseingang, Falkenried 42
        hinweis:
          type: string
          maxLength: 500
          example: Bitte Ausweis mitbringen, die Wohnung ist bewohnt.
    Termin:
      allOf:
        - $ref: "#/components/schemas/TerminAnlegen"
        - type: object
          properties:
            id:
              type: string
              example: trm_9a44
            status:
              $ref: "#/components/schemas/Terminstatus"
            zusagen_anzahl:
              type: integer
              example: 8
            warteliste_anzahl:
              type: integer
              example: 2
            angelegt_am:
              type: string
              format: date-time
              example: 2026-08-20T11:02:10Z
    Fehler:
      type: object
      description: Einheitliches Fehlerformat aller Maklerportal-APIs.
      required:
        - code
        - nachricht
      properties:
        code:
          type: string
          example: validierung_fehlgeschlagen
        nachricht:
          type: string
          example: Für die Veröffentlichung fehlen Pflichtangaben aus dem Energieausweis.
        details:
          type: array
          items:
            $ref: "#/components/schemas/Fehlerdetail"
    Terminart:
      type: string
      enum:
        - einzel
        - sammel
        - digital
      example: einzel
    Terminstatus:
      type: string
      enum:
        - geplant
        - bestaetigt
        - durchgefuehrt
        - abgesagt
      example: bestaetigt
    Fehlerdetail:
      type: object
      properties:
        feld:
          type: string
          example: energieausweis.endenergiebedarf_kwh
        grund:
          type: string
          example: fehlt
  responses:
    Validierungsfehler:
      description: Die Anfrage entspricht nicht dem Schema
      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`.
```
