---
title: "Retrieve an estimate"
url: "https://real-estate-agency.apim.eu/apis/cost-estimation/versions/26a287d6-a67c-4989-b0bd-79a9db45597a/operations/getEstimate"
---

> Full API specification: https://real-estate-agency.apim.eu/apis/cost-estimation/versions/26a287d6-a67c-4989-b0bd-79a9db45597a.md

# Retrieve an estimate

`GET` `/estimates/{estimateId}`

Operation ID: `getEstimate`

## Path parameters

- `estimateId` (string, required)

## Responses

- `200` - Estimate
- `404` - Record not found

## OpenAPI definition

```yaml
openapi: 3.0.3
info:
  title: Cost & ROI Estimation
  version: 1.0.0
servers:
  - url: https://api.nexora.example/v1
    description: Production
  - url: https://sandbox.api.nexora.example/v1
    description: Sandbox
paths:
  /estimates/{estimateId}:
    parameters:
      - name: estimateId
        in: path
        required: true
        schema:
          type: string
          example: est_3e18
    get:
      tags:
        - Estimates
      summary: Retrieve an estimate
      operationId: getEstimate
      responses:
        "200":
          description: Estimate
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CostEstimateResult"
        "404":
          $ref: "#/components/responses/NotFound"
security:
  - apiKey: []
components:
  schemas:
    CostEstimateResult:
      type: object
      properties:
        id:
          type: string
          example: est_3e18
        agent_id:
          type: string
          nullable: true
          example: agt_8f2c1a
        reason:
          $ref: "#/components/schemas/EstimateReason"
        estimated_monthly_cost_usd:
          type: integer
          example: 6380
        range_usd:
          $ref: "#/components/schemas/Range"
        cost_per_1k_requests_usd:
          type: number
          format: float
          example: 25.5
        confidence:
          type: string
          description: How reliable the indication is.
          enum:
            - low
            - medium
            - high
        basis:
          $ref: "#/components/schemas/EstimateBasis"
        created_at:
          type: string
          format: date-time
          example: 2026-08-20T09:52:00Z
    EstimateReason:
      type: string
      enum:
        - initial_scoping
        - production_rollout
        - budget_planning
        - renewal
        - decommission
      example: production_rollout
    Range:
      type: object
      properties:
        low:
          type: integer
          example: 6020
        high:
          type: integer
          example: 6740
    EstimateBasis:
      type: object
      description: What the indication was derived from.
      properties:
        comparables_count:
          type: integer
          example: 23
        period_months:
          type: integer
          example: 12
        sample_scope:
          type: string
          enum:
            - team
            - business_unit
            - org_wide
          example: business_unit
    Error:
      type: object
      description: Uniform error format across all Nexora AI APIs.
      required:
        - code
        - message
      properties:
        code:
          type: string
          example: validation_failed
        message:
          type: string
          example: Too few comparable deployments are available for this business unit.
        details:
          type: array
          items:
            $ref: "#/components/schemas/ErrorDetail"
    ErrorDetail:
      type: object
      properties:
        field:
          type: string
          example: basis.comparables_count
        reason:
          type: string
          example: missing
  responses:
    NotFound:
      description: Record not found
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: apikey
      description: |
        Every call carries an API key in the `apikey` header. You generate the
        key in the Nexora AI portal under "My Apps"; it's shown exactly once.

        Each key has the scopes it's allowed to use attached to it. If one is
        missing, the API responds with `403` and `code: "scope_missing"`; the
        missing scope is in `details[].field`.
```
