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

# List Reports

> Retrieves a paginated list of all reports in your team.
Use query parameters to filter and paginate results.

**Searching by address:** Pass `?address=` to look up a single report by property address
without knowing the report ID. Returns `{ data: <report> }` (a single object, not a list).
Matching is partial, case-insensitive, and handles common abbreviations
(e.g. `St` = `Street`, `APT` = `Unit`).

Example: `GET /v1/reports?address=123 Main St`




## OpenAPI

````yaml GET /v1/reports
openapi: 3.1.0
info:
  title: North Reports API
  description: >
    The North Reports API allows you to programmatically access and manage your
    North reports.


    Use this API to:

    - Create and update property reports

    - Manage comparable properties

    - Track showings and open houses

    - Import social media engagement data

    - Generate AI-powered summaries


    Perfect for integrations with Zapier, n8n, Make.com, or custom applications.
  version: 1.0.1
  contact:
    name: North Support
    url: https://northreports.com/support
  termsOfService: https://northreports.com/terms
servers:
  - url: https://api.northreports.com
    description: Production API
security:
  - BearerAuth: []
tags:
  - name: Users
    description: User and team information
  - name: Reports
    description: Create and manage North reports
  - name: Comparables
    description: Manage comparable properties
  - name: Showings
    description: Track showings and open houses
  - name: Social Media
    description: Import and track social media engagement
  - name: Webhooks
    description: Subscribe to real-time events
paths:
  /v1/reports:
    get:
      tags:
        - Reports
      summary: List all reports
      description: >
        Retrieves a paginated list of all reports in your team.

        Use query parameters to filter and paginate results.


        **Searching by address:** Pass `?address=` to look up a single report by
        property address

        without knowing the report ID. Returns `{ data: <report> }` (a single
        object, not a list).

        Matching is partial, case-insensitive, and handles common abbreviations

        (e.g. `St` = `Street`, `APT` = `Unit`).


        Example: `GET /v1/reports?address=123 Main St`
      operationId: listReports
      parameters:
        - name: limit
          in: query
          description: >-
            Maximum number of reports to return (ignored when address is
            provided)
          schema:
            type: integer
            default: 50
            minimum: 1
            maximum: 100
        - name: offset
          in: query
          description: >-
            Number of reports to skip for pagination (ignored when address is
            provided)
          schema:
            type: integer
            default: 0
            minimum: 0
        - name: status
          in: query
          description: Filter by report status (ignored when address is provided)
          schema:
            type: string
            enum:
              - draft
              - published
              - all
        - name: address
          in: query
          description: >
            Search for a specific report by address. When provided, returns a
            single matching report

            as `{ data: <report> }` (not a paginated list). Takes priority over
            all other filters.

            Supports partial matching (case-insensitive) with automatic
            abbreviation handling.

            Example: "123 Main St", "456 Oak Avenue", or just "Main Street"
          schema:
            type: string
      responses:
        '200':
          description: >
            Successfully retrieved reports.

            - **Without `address`**: Returns a paginated list `{ data: [...],
            total, limit, offset }`

            - **With `address`**: Returns a single report `{ data: { id,
            address, ... } }`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportsListResponse'
              examples:
                list:
                  summary: List response (no address param)
                  value:
                    data:
                      - id: 550e8400-e29b-41d4-a716-446655440000
                        address: 123 Main Street
                        city: Austin
                        state: TX
                        zip: '78701'
                        price: 450000
                        bedrooms: 3
                        bathrooms: 2
                        square_feet: 1850
                        is_published: true
                        views_count: 45
                        date_created: '2024-01-15T10:30:00Z'
                    total: 25
                    limit: 50
                    offset: 0
                address_search:
                  summary: Address search response
                  value:
                    data:
                      id: 550e8400-e29b-41d4-a716-446655440000
                      address: 123 Main Street
                      city: Austin
                      state: TX
                      zip: '78701'
                      price: 450000
                      bedrooms: 3
                      bathrooms: 2
                      square_feet: 1850
                      is_published: true
                      views_count: 45
                      comparable_properties: []
                      showing_events: []
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
components:
  schemas:
    ReportsListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ReportSummary'
        total:
          type: integer
        limit:
          type: integer
        offset:
          type: integer
    ReportSummary:
      type: object
      properties:
        id:
          type: string
          format: uuid
        address:
          type: string
        city:
          type: string
        state:
          type: string
        zip:
          type: string
        price:
          type: number
        beds:
          type: integer
        baths:
          type: number
        sqft:
          type: integer
        year_built:
          type: integer
        property_type:
          type: string
        status:
          type: string
        is_published:
          type: boolean
        is_draft:
          type: boolean
        published_at:
          type: string
          format: date-time
          nullable: true
        views_count:
          type: integer
        saves_count:
          type: integer
        showings_count:
          type: integer
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            status:
              type: integer
  responses:
    Unauthorized:
      description: Invalid or missing API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              message: Invalid API key
              status: 401
    Forbidden:
      description: API key lacks required permission
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              message: 'Permission denied: reports:create'
              status: 403
    RateLimitExceeded:
      description: Too many requests
      headers:
        X-RateLimit-Limit:
          schema:
            type: integer
          description: Request limit per hour
        X-RateLimit-Remaining:
          schema:
            type: integer
          description: Remaining requests in current window
        X-RateLimit-Reset:
          schema:
            type: integer
          description: Unix timestamp when the rate limit resets
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              message: Rate limit exceeded. Please try again later.
              status: 429
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >
        API key authentication. Include your API key in the Authorization
        header:

        ```

        Authorization: Bearer north_sk_live_xxxxxxxxxxxx

        ```

````