---
title: "Get a scope"
method: GET
path: "/v1/scopes/{scope_id}"
tags: ["Scopes"]
---

# Get a scope

`GET /v1/scopes/{scope_id}`

## Path parameters

- `scope_id` string, required

## Response `200`

OK

- ScopeResponse
  - `scope` ScopeDetailExternalSchema, required — The full scope resource including line items, keyed by Scope.Id. This intentionally omits workflow-ish fields like status and completed_by. Those semantics are still evolving, while this resource is meant to expose the stable customer-facing scope object.
    - `id` string, required
    - `created_at` string, date-time, required
    - `location` LocationExternalSchema, required
      - `id` string, required
      - `address_1` string, required
      - `address_2` string, nullable, required
      - `city` string, required
      - `state` string, required
      - `zip_code` string, required
      - `lat` number, nullable, required
      - `lon` number, nullable, required
      - `reference_key` string, nullable, required — Optional unique identifier for this location in your system.
      - `market_id` string, nullable, required — ID of the market this location belongs to.
      - `market_name` string, nullable, required — Deprecated: prefer market_id. Name of the geographic market this location belongs to.
      - `custom_fields` object, nullable, required — Arbitrary key-value metadata. Supports partial updates.
    - `initial_visit` VisitExternalSchema, required
      - `id` string, required
      - `type` string, required — Display name of the visit type. Deprecated: Prefer using visit_type instead.
      - `visit_type` VisitTypeExternalSchema, required
        - `id` string, required
        - `display_name` string, required
        - `slug` string, required — URL-friendly identifier for this visit type.
      - `visit_request_status` 'visit_started' | 'uploading' | 'processing' | 'in_review' | 'completed' | 'cancelled', required — Customer facing visit statuses. Each VisitRequestStatus should map directly to a ExternalVisitRequestStatus. But we don't need ExternalVisitRequestStatus to directly map back to VisitRequestStatus.
      - `visited_at` string, date-time, required
      - `visited_by` UserExternalSchema, required
        - `id` string, required
        - `email` string, required
        - `first_name` string, required
        - `last_name` string, required
        - `reference_key` string, nullable, required — External identifier for this user.
      - `reviewed_by` UserExternalSchema
        - `id` string, required
        - `email` string, required
        - `first_name` string, required
        - `last_name` string, required
        - `reference_key` string, nullable, required — External identifier for this user.
      - `video` VideoExternalSchema, required
        - `id` string, required
        - `duration_ms` integer, required
        - `height` integer, required
        - `width` integer, required
      - `product_url` string, required — Link to the NavigateAI dashboard for reviewing this visit.
      - `product_pdf_url` string, required — Link to download a PDF report for this visit.
      - `location_id` string, required
      - `work_order_id` string, nullable, required — The work order this visit is associated with, if any.
      - `access_code_metadata` object, nullable, required — Metadata from the access code that initiated this visit, if applicable.
      - `notes` string, nullable, required — Summary notes generated for this visit.
      - `metadata` object, required — Additional structured data captured for this visit.
    - `line_item_rows` LineItemRowExternalSchema[], required — Line items identified during the scope.
      - `id` string, required
      - `line_item_row_id` string, required — The stable location-level line item ID.
      - `title` string, required
      - `description` string, required
      - `status` 'suggested' | 'not_complete' | 'complete' | 'rejected', required
      - `quantity` integer, required — Deprecated: Use cost_components instead. Total quantity (integer).
      - `unit_type` string, required — Deprecated: Use cost_components instead. Unit of measurement (e.g. "each", "sqft").
      - `unit_cost_cents` integer, nullable, required — Deprecated: Use cost_components instead. Cost per unit in cents.
      - `cost_components` CostComponentExternalSchema[], required — Granular cost breakdown. Replaces the legacy quantity/unit_type/unit_cost_cents fields.
        - `kind` 'total' | 'labor' | 'material', required — The type of cost component: "total", "labor", or "material".
        - `label` string, nullable — Optional display label for this component.
        - `unit_type` string, nullable — Unit of measurement (e.g. "each", "sqft"). Defaults to "each" if omitted.
        - `unit_cost_in_cents` integer, nullable — Cost per unit in cents.
        - `quantity` string, required — Number of units as a decimal string (e.g. "1", "2.5").
      - `price_override_reason` string, nullable — The reason recorded when a cost component's price was overridden (e.g. a labor cost change), if a reason was provided. Reflects the most recent price override. Null when no reason was recorded.
      - `price_reference_key` string, nullable, required — Your external identifier for the pricing item used.
      - `notes` string, required
      - `custom_fields` object, required
      - `evidence` union[], required — Supporting evidence — images, audio segments, or text notes.
        - union
          - ImageEvidenceExternalSchema
            - `type` 'image'
            - `image_id` string, required — Use with the Get Image endpoint to retrieve the image file.
            - `reference_key` string, nullable
            - `visit_id` string, nullable — The visit this image was captured during.
            - `is_selected` boolean — Whether this image was explicitly selected as evidence.
            - `is_starred` boolean — Whether this image was starred as the primary evidence photo.
          - AudioEvidenceExternalSchema
            - `type` 'audio'
            - `start_ms` integer, required — Start timestamp in the source video, in milliseconds.
            - `end_ms` integer, required — End timestamp in the source video, in milliseconds.
            - `text` string, required — Transcribed text from this audio segment.
          - TextEvidenceExternalSchema
            - `type` 'text'
            - `text` string, required
      - `area_name` string, nullable, required — Deprecated: Use room.name instead. The room or area this line item applies to.
      - `room` LineItemRoomExternalSchema, required — The room or area a line item applies to.
        - `name` string, required — Display name of the room or area (e.g. 'Bedroom 2', 'Kitchen'). Not guaranteed to be stable over time.
        - `room_type_id` string, nullable — The [room type](/api-reference/room-types/room-type-object) ID.
      - `rejection_reason_option_id` string, nullable — ID of the selected [rejection reason option](/api-reference/rejection-reason-options/rejection-reason-option-object), if applicable.
      - `rejection_reason_text` string, nullable — Reason the line item was rejected, if applicable.
      - `vendor` VendorOrganizationExternalSchema
        - `id` string, required
        - `name` string, required
        - `email` string, nullable, required
        - `reference_key` string, required — Optional unique identifier for this vendor in your system.
        - `is_enabled` boolean, required — Whether this vendor is enabled.
        - `market_ids` string[], required — IDs of the markets this vendor serves. A vendor with no market associations serves all markets.

---

[API](https://skmtc.net/navigateai/apis/navigateai-api.md) · [All operations](https://skmtc.net/navigateai/apis/navigateai-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/navigateai/navigateai-api/revisions/5fb236d03a88/schema)
