> ## Documentation Index
> Fetch the complete documentation index at: https://docs.immoteur.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create an issue report

> Report an observed problem with property or listing information, a listing status, or grouping. Use `data` for information to review, including the `status` facet; use `status` when selected listings should have an expected lifecycle status; use `clustering` to group or separate records; and use `other` for another problem.

Copy one matching example below and replace its synthetic UUIDs with IDs your credentials can access. Each example includes the required fields for that request.

Use [Report an issue through the API](/pages/en/issue-report-request-shapes) to choose the right report and verify the IDs you selected.

Reports record the problem; they do not change a Property, a Classified, a listing status, or a grouping.



## OpenAPI

````yaml generated/locales/en/immoteur-api-public-v1.spec.yaml post /issues
openapi: 3.1.0
info:
  title: Immoteur Public API
  version: 1.1.0
  description: >-
    Public API for the Immoteur service.


    ## Authentication

    Use a **Personal Access Token** from your Immoteur dashboard and send it in
    the `Authorization` header:


    ```

    Authorization: Bearer YOUR_TOKEN_HERE

    ```


    ### cURL example

    ```bash

    curl -sS https://api.immoteur.com/public/v1/auth \
      -H "Authorization: Bearer $IMMOTEUR_TOKEN"
    ```


    ## Environments

    - **Production:** `https://api.immoteur.com/public/v1`


    ## Errors & Rate Limiting

    - `400 Bad Request`: malformed request or invalid syntax.

    - `401 Unauthorized`: missing or invalid token.

    - `403 Forbidden`: token valid but not permitted for this resource.

    - `429 Too Many Requests`: back off and retry with exponential delay.

    - `422 Validation Error`: payload is syntactically correct but fails
    validation.


    ## Pagination

    - Requests specify `page` (1..500). Responses include `page`, `nextPage`,
    `perPage`, `total`, `totalPages`.


    ## Data Access Limits

    The `meta.dataAccessLimit` block shows **implicit filters** tied to your
    plan (e.g., whitelisted departments/SIREN/SIRET). Your effective result set
    equals **your filters ∩ requested filters**.


    ## Using AI/LLMs

    - Always include the `Authorization` header.

    - Prefer explicit filters (departments, INSEE, postcodes) with **existing**
    French codes/names.

    - Follow the examples below as canonical payload shapes.


    ## Contact & Docs

    - Website: https://immoteur.com

    - Support: Use your customer portal or contact listed on the website.
  contact:
    url: https://immoteur.com
    name: Immoteur
    email: support@immoteur.com
servers:
  - url: https://api.immoteur.com/public/v1
    description: Production server
security:
  - BearerAuth: []
tags:
  - name: Info
    description: Token/account info
  - name: Property
    description: Property operations
  - name: Classified
    description: Classified operations
  - name: Issue
    description: User-submitted issue reports
externalDocs:
  description: Full product documentation
  url: https://docs.immoteur.com
paths:
  /issues:
    post:
      tags:
        - Issue
      summary: Create an issue report
      description: >-
        Report an observed problem with property or listing information, a
        listing status, or grouping. Use `data` for information to review,
        including the `status` facet; use `status` when selected listings should
        have an expected lifecycle status; use `clustering` to group or separate
        records; and use `other` for another problem.


        Copy one matching example below and replace its synthetic UUIDs with IDs
        your credentials can access. Each example includes the required fields
        for that request.


        Use [Report an issue through the
        API](/pages/en/issue-report-request-shapes) to choose the right report
        and verify the IDs you selected.


        Reports record the problem; they do not change a Property, a Classified,
        a listing status, or a grouping.
      operationId: createIssueReport
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssueReportWrite'
            examples:
              propertyData:
                summary: Property data quality
                description: Replace `propertyId` with an accessible Property UUID.
                value:
                  issueKind: data
                  propertyId: 019e5500-0000-7000-8000-000000000001
                  issueFacets:
                    - price
              propertyOther:
                summary: Report another Property problem
                description: >-
                  Replace `propertyId` with an accessible Property UUID and
                  explain the problem in `comment`.
                value:
                  issueKind: other
                  propertyId: 019e5500-0000-7000-8000-000000000014
                  comment: The displayed address needs review.
              classifiedData:
                summary: Classified data quality
                description: Replace `classifiedId` with an accessible Classified UUID.
                value:
                  issueKind: data
                  classifiedId: 019e5500-0000-7000-8000-000000000101
                  issueFacets:
                    - location
              classifiedOther:
                summary: Report another Classified problem
                description: >-
                  Replace `classifiedId` with an accessible Classified UUID and
                  explain the problem in `comment`.
                value:
                  issueKind: other
                  classifiedId: 019e5500-0000-7000-8000-000000000108
                  comment: The listing headline needs review.
              classifiedsStatus:
                summary: Report incorrect Classified statuses
                description: >-
                  Replace `classifiedIds` with accessible listing UUIDs.
                  `expectedStatus` must differ from every selected listing's
                  current status.
                value:
                  issueKind: status
                  classifiedIds:
                    - 019e5500-0000-7000-8000-000000000102
                  expectedStatus: available
              merge:
                summary: Report records that should be grouped
                description: >-
                  Send `propertyIds`, `classifiedIds`, or both for accessible
                  targets that should be grouped; the selection must cover at
                  least two current Properties.
                value:
                  issueKind: clustering
                  clusteringAction: merge
                  propertyIds:
                    - 019e5500-0000-7000-8000-000000000012
                  classifiedIds:
                    - 019e5500-0000-7000-8000-000000000103
              split:
                summary: Report listings that should be separate from a Property
                description: >-
                  Replace every UUID with an accessible listing that currently
                  belongs to the supplied Property.
                value:
                  issueKind: clustering
                  clusteringAction: split
                  propertyId: 019e5500-0000-7000-8000-000000000013
                  classifiedIds:
                    - 019e5500-0000-7000-8000-000000000106
                    - 019e5500-0000-7000-8000-000000000107
      responses:
        '201':
          description: Issue report created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueReportReceipt'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '409':
          $ref: '#/components/responses/MissConfigurationError'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimitError'
        default:
          $ref: '#/components/responses/DefaultError'
components:
  schemas:
    IssueReportWrite:
      title: Issue report request
      description: >-
        Request that records one observed problem. `issueKind` identifies the
        report type. Data and other reports use `propertyId` or `classifiedId`,
        while grouping reports use `clusteringAction`.
      oneOf:
        - $ref: '#/components/schemas/IssueReportDataWrite'
        - $ref: '#/components/schemas/IssueReportStatusWrite'
        - $ref: '#/components/schemas/IssueReportClusteringWrite'
        - $ref: '#/components/schemas/IssueReportOtherWrite'
      discriminator:
        propertyName: issueKind
        mapping:
          clustering:
            $ref: '#/components/schemas/IssueReportClusteringWrite'
          data:
            $ref: '#/components/schemas/IssueReportDataWrite'
          other:
            $ref: '#/components/schemas/IssueReportOtherWrite'
          status:
            $ref: '#/components/schemas/IssueReportStatusWrite'
    IssueReportReceipt:
      type: object
      required:
        - reportId
        - createdAt
      properties:
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the issue report was created.
        reportId:
          type: string
          format: uuid
          description: Identifier of the stored issue report for later support correlation.
    IssueReportDataWrite:
      title: Data issue report
      description: >-
        Report incorrect information on one `Property` or one `Classified`
        listing. The required `propertyId` or `classifiedId` identifies the
        affected resource.
      oneOf:
        - $ref: '#/components/schemas/IssueReportDataPropertyWrite'
        - $ref: '#/components/schemas/IssueReportDataClassifiedWrite'
    IssueReportStatusWrite:
      type: object
      additionalProperties: false
      title: Classified status
      description: >-
        Report an expected lifecycle status for one or more `Classified`
        listings. `expectedStatus` must differ from the current status of every
        selected listing.
      required:
        - classifiedIds
        - expectedStatus
        - issueKind
      properties:
        classifiedIds:
          type: array
          minItems: 1
          uniqueItems: true
          items:
            type: string
            format: uuid
          description: UUIDs of the Classified listings that should have `expectedStatus`.
        comment:
          type: string
          maxLength: 4000
          description: >-
            Optional details for a data, status, or grouping report. Maximum
            length: 4,000 characters.
        expectedStatus:
          $ref: '#/components/schemas/ClassifiedStatusValue'
          description: >-
            Status expected for every selected Classified. It must differ from
            the current status of each selected listing.
        issueKind:
          type: string
          description: >-
            Fixed value `status`; identifies a status report for selected
            Classified listings.
          enum:
            - status
    IssueReportClusteringWrite:
      title: Grouping report
      description: >-
        Report records that should be grouped or separated. `clusteringAction`
        selects the requested outcome.
      oneOf:
        - $ref: '#/components/schemas/IssueReportClusteringMergeWrite'
        - $ref: '#/components/schemas/IssueReportClusteringSplitWrite'
      discriminator:
        propertyName: clusteringAction
        mapping:
          merge:
            $ref: '#/components/schemas/IssueReportClusteringMergeWrite'
          split:
            $ref: '#/components/schemas/IssueReportClusteringSplitWrite'
    IssueReportOtherWrite:
      title: Other report
      description: >-
        Report another problem on one `Property` or one `Classified` listing.
        The required `propertyId` or `classifiedId` identifies the affected
        resource, and `comment` explains the problem.
      oneOf:
        - $ref: '#/components/schemas/IssueReportOtherPropertyWrite'
        - $ref: '#/components/schemas/IssueReportOtherClassifiedWrite'
    ProblemDetails:
      type: object
      required:
        - type
        - title
        - status
        - detail
        - instance
        - code
        - traceId
      properties:
        code:
          type: string
          description: Stable machine-readable error code.
          example: resource_not_found
        detail:
          type: string
          description: Human-readable explanation specific to this occurrence.
          example: The requested resource could not be found.
        instance:
          type: string
          description: Request URI identifying the specific occurrence.
          example: /public/v1/properties/019c12dc-339f-72ce-98db-663b44c0d924
        status:
          type: integer
          format: int32
          minimum: 400
          maximum: 599
          description: HTTP status code generated for this occurrence.
          example: 404
        title:
          type: string
          description: Short, human-readable summary of the problem type.
          example: Resource not found
        traceId:
          type: string
          format: uuid
          description: Trace identifier to correlate client errors with server logs.
          example: b94f4db5-2f5e-4b8f-9dd0-f2fe5c7a7a4f
        type:
          type: string
          format: uri
          description: URI reference identifying the problem type.
          example: https://docs.immoteur.com/problems/resource_not_found
    ValidationProblemDetails:
      type: object
      required:
        - type
        - title
        - status
        - detail
        - instance
        - code
        - traceId
        - violations
      properties:
        code:
          type: string
          description: Stable machine-readable error code.
          example: validation_error
        detail:
          type: string
          description: Human-readable explanation specific to this occurrence.
          example: One or more request fields are invalid.
        instance:
          type: string
          description: Request URI identifying the specific occurrence.
          example: /public/v1/properties/search
        status:
          type: integer
          format: int32
          minimum: 400
          maximum: 599
          description: HTTP status code generated for this occurrence.
          example: 422
        title:
          type: string
          description: Short, human-readable summary of the problem type.
          example: Validation error
        traceId:
          type: string
          format: uuid
          description: Trace identifier to correlate client errors with server logs.
          example: 4bdb0c23-53fc-4d14-a300-c63eb420ec5e
        type:
          type: string
          format: uri
          description: URI reference identifying the problem type.
          example: https://docs.immoteur.com/problems/validation_error
        violations:
          type: array
          description: Per-field validation issues.
          items:
            $ref: '#/components/schemas/ProblemViolation'
    IssueReportDataPropertyWrite:
      type: object
      additionalProperties: true
      title: Property data
      description: >-
        Report incorrect information on one `Property`. Set `issueKind` to
        `data`, then provide `propertyId` and `issueFacets`.
      required:
        - issueFacets
        - issueKind
        - propertyId
      properties:
        comment:
          type: string
          maxLength: 4000
          description: >-
            Optional details for a data, status, or grouping report. Maximum
            length: 4,000 characters.
        issueFacets:
          type: array
          minItems: 1
          uniqueItems: true
          description: Fields to review with this data report, including `status`.
          items:
            $ref: '#/components/schemas/IssueReportDataFacet'
        issueKind:
          type: string
          description: Fixed value `data`; identifies a data issue report.
          enum:
            - data
        propertyId:
          type: string
          format: uuid
          pattern: >-
            ^(?:(?:urn|URN):(?:uuid|UUID):)?[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$(?![\s\S])
          description: Property whose information needs review.
    IssueReportDataClassifiedWrite:
      type: object
      additionalProperties: true
      title: Classified data
      description: >-
        Report incorrect information on one `Classified` listing. Set
        `issueKind` to `data`, then provide `classifiedId` and `issueFacets`.
      required:
        - classifiedId
        - issueFacets
        - issueKind
      properties:
        classifiedId:
          type: string
          format: uuid
          pattern: >-
            ^(?:(?:urn|URN):(?:uuid|UUID):)?[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$(?![\s\S])
          description: Classified listing whose information needs review.
        comment:
          type: string
          maxLength: 4000
          description: >-
            Optional details for a data, status, or grouping report. Maximum
            length: 4,000 characters.
        issueFacets:
          type: array
          minItems: 1
          uniqueItems: true
          description: Fields to review with this data report, including `status`.
          items:
            $ref: '#/components/schemas/IssueReportDataFacet'
        issueKind:
          type: string
          description: Fixed value `data`; identifies a data issue report.
          enum:
            - data
    ClassifiedStatusValue:
      description: Supported lifecycle statuses for classifieds.
      type: string
      enum:
        - available
        - removed
        - rented
        - sold
        - underOffer
    IssueReportClusteringMergeWrite:
      type: object
      additionalProperties: false
      title: Merge
      description: >-
        Report `Property` resources and/or `Classified` listings that should be
        grouped. The selected records must cover at least two current
        Properties.
      required:
        - clusteringAction
        - issueKind
      properties:
        classifiedIds:
          type: array
          description: Specific Classified listings to group.
          minItems: 1
          maxItems: 100
          uniqueItems: true
          items:
            type: string
            format: uuid
        clusteringAction:
          type: string
          description: >-
            Fixed value `merge`; identifies a grouping report for records that
            should be together.
          enum:
            - merge
        comment:
          type: string
          maxLength: 4000
          description: >-
            Optional details for a data, status, or grouping report. Maximum
            length: 4,000 characters.
        issueKind:
          type: string
          description: Fixed value `clustering`; identifies a grouping report.
          enum:
            - clustering
        propertyIds:
          type: array
          description: >-
            Properties to group. Selecting a Property includes all of its
            current listings.
          minItems: 1
          maxItems: 100
          uniqueItems: true
          items:
            type: string
            format: uuid
    IssueReportClusteringSplitWrite:
      type: object
      additionalProperties: false
      title: Split
      description: >-
        Report `Classified` listings that should be separated from a `Property`.
        Every selected listing must currently belong to `propertyId`.
      required:
        - classifiedIds
        - clusteringAction
        - issueKind
        - propertyId
      properties:
        classifiedIds:
          type: array
          description: Classified listings to separate from `propertyId`.
          minItems: 1
          maxItems: 100
          uniqueItems: true
          items:
            type: string
            format: uuid
        clusteringAction:
          type: string
          description: >-
            Fixed value `split`; identifies a grouping report for listings that
            should be separate.
          enum:
            - split
        comment:
          type: string
          maxLength: 4000
          description: >-
            Optional details for a data, status, or grouping report. Maximum
            length: 4,000 characters.
        issueKind:
          type: string
          description: Fixed value `clustering`; identifies a grouping report.
          enum:
            - clustering
        propertyId:
          type: string
          format: uuid
          description: >-
            Property that currently contains the Classified listings to
            separate.
    IssueReportOtherPropertyWrite:
      type: object
      additionalProperties: true
      title: Other Property
      description: >-
        Report another problem on one `Property`. Set `issueKind` to `other`,
        provide `propertyId`, and explain the problem in `comment`.
      required:
        - comment
        - issueKind
        - propertyId
      properties:
        comment:
          type: string
          maxLength: 4000
          description: >-
            Required explanation of the problem. It must contain text and be no
            longer than 4,000 characters.
          minLength: 1
          pattern: "[^\\s\uFEFF]"
        issueKind:
          type: string
          description: Fixed value `other`; identifies an other report.
          enum:
            - other
        propertyId:
          type: string
          format: uuid
          pattern: >-
            ^(?:(?:urn|URN):(?:uuid|UUID):)?[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$(?![\s\S])
          description: Property affected by the reported problem.
    IssueReportOtherClassifiedWrite:
      type: object
      additionalProperties: true
      title: Other Classified
      description: >-
        Report another problem on one `Classified` listing. Set `issueKind` to
        `other`, provide `classifiedId`, and explain the problem in `comment`.
      required:
        - classifiedId
        - comment
        - issueKind
      properties:
        classifiedId:
          type: string
          format: uuid
          pattern: >-
            ^(?:(?:urn|URN):(?:uuid|UUID):)?[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$(?![\s\S])
          description: Classified listing affected by the reported problem.
        comment:
          type: string
          maxLength: 4000
          description: >-
            Required explanation of the problem. It must contain text and be no
            longer than 4,000 characters.
          minLength: 1
          pattern: "[^\\s\uFEFF]"
        issueKind:
          type: string
          description: Fixed value `other`; identifies an other report.
          enum:
            - other
    ProblemViolation:
      type: object
      required:
        - field
        - message
        - code
      properties:
        code:
          type: string
          description: Stable machine-readable violation code.
          example: validation
        field:
          type: string
          description: Path or field name that failed validation.
          example: id
        message:
          type: string
          description: Human-readable validation message.
          example: The id field must be a valid UUID.
    IssueReportDataFacet:
      type: string
      description: Fields that can be reported with `data`, including `status`.
      enum:
        - attributes
        - contact
        - description
        - link
        - location
        - media
        - other
        - price
        - publisher
        - status
  responses:
    BadRequestError:
      description: >-
        Bad request — the request could not be understood or was missing
        required information.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    UnauthorizedError:
      description: Authentication required / invalid token
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    ForbiddenError:
      description: Authenticated but not allowed for this resource
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    MissConfigurationError:
      description: Data access (SIREN / SIRET / Department) not configured for example.
      content:
        application/json:
          schema:
            type: object
            required:
              - message
            properties:
              configurationUrl:
                type: string
                format: uri
                example: https://immoteur.com/en/dashboard/billing#data-access
              documentationUrl:
                type: string
                format: uri
                example: https://docs.immoteur.com/pages/en/introduction
              message:
                type: string
                example: Data access (SIREN / SIRET / Department) not configured.
    ValidationError:
      description: Validation error response
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ValidationProblemDetails'
    RateLimitError:
      description: Too many requests. Rate limit headers are returned on all responses.
      headers:
        RateLimit-Policy:
          $ref: '#/components/headers/RateLimitPolicy'
        RateLimit-Limit:
          $ref: '#/components/headers/RateLimitLimit'
        RateLimit-Remaining:
          $ref: '#/components/headers/RateLimitRemaining'
        RateLimit-Reset:
          $ref: '#/components/headers/RateLimitReset'
        Retry-After:
          $ref: '#/components/headers/RateLimitRetryAfter'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    DefaultError:
      description: Undocumented error
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
  headers:
    RateLimitPolicy:
      description: Comma-separated policy values ordered as second, minute, day.
      schema:
        type: string
        example: 1;w=1, 20;w=60, 250;w=86400
    RateLimitLimit:
      description: Comma-separated limit values ordered as second, minute, day.
      schema:
        type: string
        example: 1, 20, 250
    RateLimitRemaining:
      description: Comma-separated remaining request counts ordered as second, minute, day.
      schema:
        type: string
        example: 0, 18, 240
    RateLimitReset:
      description: >-
        Comma-separated seconds until the current windows reset (second, minute,
        day).
      schema:
        type: string
        example: 1, 45, 8200
    RateLimitRetryAfter:
      description: Seconds to wait before retrying after a rate limit response.
      schema:
        type: integer
        format: int32
        minimum: 1
        example: 1
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Personal Access Token
      description: |-
        Send your Immoteur Personal Access Token in the `Authorization` header:
        `Authorization: Bearer <token>`

        You can create and manage your Personal Access Tokens here:
        https://immoteur.com/dashboard/settings

````