Cosuno Project Costs API

The Project Costs API from Cosuno — 2 operation(s) for project costs.

Operations 2

GET /project-costs/{id}/estimation Get project cost estimation #
GET /project-costs/{id}/analysis Get project cost analysis #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/cosuno:cosuno-project-costs-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

cosuno-project-costs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cosuno Project Costs API
  version: '1'
  description: '-'
  license:
    name: '-'
  contact:
    name: '-'
servers:
- url: https://api.cosuno.com/v1
- description: current
  url: /v1
tags:
- name: Project Costs
paths:
  /project-costs/{id}/estimation:
    get:
      operationId: GetProjectCostEstimation
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CostEstimationResponse'
              examples:
                Example 1:
                  value:
                    id: string
                    projectId: string
                    catalogType: din276
                    customCatalogId: null
                    bidPackageCostGroups: []
                    stlbWorkCategoryCostGroups: []
                    customCatalogCostGroups: []
                    standardCatalogCostGroups:
                    - localId: string
                      designation: string
                      costGroupType: din276
                      costItem:
                        id: string
                        factor: 0
                        quantity: 0
                        unit: string
                        unitPrice: 0
                        taxRate: 0
                      childCostGroups:
                      - localId: string
                        designation: string
                        costGroupType: din276
                        costItem:
                          id: string
                          factor: 0
                          quantity: 0
                          unit: string
                          unitPrice: 0
                          taxRate: 0
                        childCostGroups:
                        - localId: string
                          designation: string
                          costGroupType: din276
                          costItem:
                            id: string
                            factor: 0
                            quantity: 0
                            unit: string
                            unitPrice: 0
                            taxRate: 0
                          childCostGroups: []
                      - localId: string
                        designation: string
                        costGroupType: din276
                        costItem:
                          id: string
                          factor: 0
                          quantity: 0
                          unit: string
                          unitPrice: 0
                          taxRate: 0
                        childCostGroups:
                        - localId: string
                          designation: string
                          costGroupType: din276
                          costItem:
                            id: string
                            factor: 0
                            quantity: 0
                            unit: string
                            unitPrice: 0
                            taxRate: 0
                          childCostGroups: []
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            Retry-After:
              schema:
                type: string
              required: false
      description: Retrieve the cost estimation for a project, broken down by the requested catalog.
      tags:
      - Project Costs
      security:
      - accessKey: []
      parameters:
      - description: The ID of the project.
        in: path
        name: id
        required: true
        schema:
          type: string
      - description: Catalog to break the estimation down by. Use `custom` to break down by a cost catalog defined in your company; `customCatalogId` is then required.
        in: query
        name: catalogType
        required: true
        schema:
          $ref: '#/components/schemas/COST_CATALOG_TYPE'
      - description: ID of the custom cost catalog to use. Required when `catalogType` is `custom`; ignored otherwise.
        in: query
        name: customCatalogId
        required: false
        schema:
          type: string
      summary: Get project cost estimation
      x-summary-source: derived
  /project-costs/{id}/analysis:
    get:
      operationId: GetProjectCostAnalysis
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CostAnalysisResponse'
              examples:
                Example 1:
                  value:
                    currency: EUR
                    groups:
                    - localId: string
                      parentId: null
                      parentLocalId: null
                      costItemId: string
                      id: string
                      designation: string
                      costItem:
                        id: string
                        factor: 0
                        quantity: 0
                        unit: string
                        unitPrice: 0
                        taxRate: 0
                      children:
                      - localId: string
                        parentId: string
                        parentLocalId: string
                        costItemId: string
                        id: string
                        catalogType: din276
                        designation: string
                        actualCost: null
                        addendumCost: null
                        invoiceCost: null
                        priceBenchmarkNet: null
                        projectedCost: null
                        awardedBidCost: null
                        bidPackageCost: null
                        costEstimateCost: null
                        estimatedBudgetNet: null
                        costItem:
                          id: string
                          factor: 0
                          quantity: 0
                          unit: string
                          unitPrice: 0
                          taxRate: 0
                        children:
                        - localId: string
                          parentId: string
                          parentLocalId: string
                          costItemId: string
                          id: string
                          catalogType: din276
                          designation: string
                          actualCost: null
                          addendumCost: null
                          invoiceCost: null
                          priceBenchmarkNet: null
                          projectedCost: null
                          awardedBidCost: null
                          bidPackageCost: null
                          costEstimateCost: null
                          estimatedBudgetNet: null
                          costItem:
                            id: string
                            factor: 0
                            quantity: 0
                            unit: string
                            unitPrice: 0
                            taxRate: 0
                          children: []
                      estimatedBudgetNet: 0
                      costEstimateCost:
                        totalNet: 0
                        totalGross: 0
                      bidPackageCost:
                        totalNet: 0
                        totalGross: 0
                      invoiceCost:
                        totalNet: 0
                        totalGross: 0
                      priceBenchmarkNet: 0
                      projectedCost:
                        totalNet: 0
                        totalGross: 0
                      awardedBidCost:
                        totalNet: 0
                        totalGross: 0
                      addendumCost:
                        totalNet: 0
                        totalGross: 0
                      actualCost:
                        totalNet: 0
                        totalGross: 0
                    bidPackagesTotalCount: 0
                    bidPackagesWithBoQCount: 0
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            Retry-After:
              schema:
                type: string
              required: false
      description: Retrieve a cost analysis for a project, comparing estimates, bids, awarded contracts, addenda, invoices and actual cost, grouped and broken down as requested.
      tags:
      - Project Costs
      security:
      - accessKey: []
      parameters:
      - description: The ID of the project.
        in: path
        name: id
        required: true
        schema:
          type: string
      - description: How to group the top level of the analysis.
        in: query
        name: topLevelGrouping
        required: true
        schema:
          $ref: '#/components/schemas/COST_ANALYSIS_TOP_LEVEL_GROUPING'
      - description: Catalog used to break costs down within each top-level group. Use `custom` to break down by a cost catalog defined in your company; `customCatalogId` is then required.
        in: query
        name: breakdown
        required: true
        schema:
          $ref: '#/components/schemas/COST_ANALYSIS_BREAKDOWN'
      - description: ID of the custom cost catalog to use. Required when `breakdown` is `custom`; ignored otherwise.
        in: query
        name: customCatalogId
        required: false
        schema:
          type: string
      summary: Get project cost analysis
      x-summary-source: derived
components:
  schemas:
    CostEstimationBidPackageEstimate:
      properties:
        id:
          type: string
        projectId:
          type: string
        catalogType:
          $ref: '#/components/schemas/COST_CATALOG_TYPE'
        customCatalogId:
          type:
          - string
          - 'null'
        bidPackageCostGroups:
          items:
            $ref: '#/components/schemas/CostEstimationBidPackageCostGroup'
          type: array
        createdAt:
          type: string
        updatedAt:
          type:
          - string
          - 'null'
        deletedAt:
          type:
          - string
          - 'null'
      required:
      - id
      - projectId
      - catalogType
      - customCatalogId
      - bidPackageCostGroups
      type: object
      additionalProperties: false
    CURRENCY:
      type: string
      enum:
      - EUR
      - ALL
      - AMD
      - AZN
      - BYN
      - BAM
      - BGN
      - HRK
      - CZK
      - DKK
      - GEL
      - HUF
      - ISK
      - CHF
      - MDL
      - MKD
      - NOK
      - PLN
      - RON
      - RUB
      - RSD
      - SEK
      - TRY
      - UAH
      - GBP
    CostItem:
      properties:
        id:
          type: string
        factor:
          type:
          - number
          - 'null'
          format: double
        quantity:
          type:
          - number
          - 'null'
          format: double
        unit:
          type:
          - string
          - 'null'
        unitPrice:
          type:
          - number
          - 'null'
          format: double
        taxRate:
          type:
          - number
          - 'null'
          format: double
      required:
      - id
      - factor
      - quantity
      - unit
      - unitPrice
      - taxRate
      type: object
      additionalProperties: false
    FieldErrors:
      properties: {}
      type: object
      additionalProperties:
        properties:
          value: {}
          message:
            type: string
        required:
        - message
        type: object
    CostEstimationCustomCostGroupCatalogsEstimate:
      properties:
        id:
          type: string
        projectId:
          type: string
        catalogType:
          $ref: '#/components/schemas/COST_CATALOG_TYPE'
        customCatalogId:
          type:
          - string
          - 'null'
        customCatalogCostGroups:
          items:
            $ref: '#/components/schemas/CostEstimationCustomCostGroup'
          type: array
        createdAt:
          type: string
        updatedAt:
          type:
          - string
          - 'null'
        deletedAt:
          type:
          - string
          - 'null'
      required:
      - id
      - projectId
      - catalogType
      - customCatalogId
      - customCatalogCostGroups
      type: object
      additionalProperties: false
    STANDARD_CATALOG_COST_GROUP_TYPE:
      type: string
      enum:
      - din276
      - oenorm
    ErrorResponse:
      properties:
        message:
          type: string
        meta:
          properties:
            fieldErrors:
              $ref: '#/components/schemas/FieldErrors'
          required:
          - fieldErrors
          type: object
      required:
      - message
      type: object
      additionalProperties: false
    CostEstimationCustomCostGroup:
      properties:
        localId:
          type: string
        name:
          type: string
        createdAt:
          type: string
        updatedAt:
          type:
          - string
          - 'null'
        deletedAt:
          type:
          - string
          - 'null'
        costItem:
          $ref: '#/components/schemas/CostItem'
        childCostGroups:
          items:
            $ref: '#/components/schemas/CostEstimationCustomCostGroup'
          type: array
      required:
      - localId
      - name
      - costItem
      - childCostGroups
      type: object
      additionalProperties: false
    CostEstimationStlbWorkCategoryCostGroup:
      properties:
        id:
          type: string
        localId:
          type: string
        costItem:
          $ref: '#/components/schemas/CostItem'
      required:
      - id
      - localId
      - costItem
      type: object
      additionalProperties: false
    CostEstimationResponse:
      anyOf:
      - $ref: '#/components/schemas/CostEstimationStandardCatalogEstimate'
      - $ref: '#/components/schemas/CostEstimationBidPackageEstimate'
      - $ref: '#/components/schemas/CostEstimationStlbWorkCategoryEstimate'
      - $ref: '#/components/schemas/CostEstimationCustomCostGroupCatalogsEstimate'
    CostAnalysisCostGroup:
      properties:
        id:
          type: string
        parentId:
          type:
          - string
          - 'null'
        designation:
          type:
          - string
          - 'null'
        catalogType:
          allOf:
          - $ref: '#/components/schemas/COST_CATALOG_TYPE'
        localId:
          type: string
        parentLocalId:
          type:
          - string
          - 'null'
        costItemId:
          type:
          - string
          - 'null'
        costItem:
          $ref: '#/components/schemas/CostItem'
        estimatedBudgetNet:
          type:
          - number
          - 'null'
          format: double
        costEstimateCost:
          allOf:
          - $ref: '#/components/schemas/CostAnalysisTotals'
        bidPackageCost:
          allOf:
          - $ref: '#/components/schemas/CostAnalysisTotals'
        invoiceCost:
          allOf:
          - $ref: '#/components/schemas/CostAnalysisTotals'
        priceBenchmarkNet:
          type:
          - number
          - 'null'
          format: double
        projectedCost:
          allOf:
          - $ref: '#/components/schemas/CostAnalysisTotals'
        awardedBidCost:
          allOf:
          - $ref: '#/components/schemas/CostAnalysisTotals'
        addendumCost:
          allOf:
          - $ref: '#/components/schemas/CostAnalysisTotals'
        actualCost:
          allOf:
          - $ref: '#/components/schemas/CostAnalysisTotals'
        children:
          items:
            $ref: '#/components/schemas/CostAnalysisCostGroup'
          type: array
      required:
      - id
      - parentId
      - localId
      - parentLocalId
      - costItemId
      - costItem
      - estimatedBudgetNet
      - costEstimateCost
      - bidPackageCost
      - invoiceCost
      - priceBenchmarkNet
      - projectedCost
      - awardedBidCost
      - addendumCost
      - actualCost
      - children
      type: object
      additionalProperties: false
    COST_CATALOG_TYPE:
      type: string
      enum:
      - custom
      - din276
      - oenorm
      - bidPackage
      - stlbWorkCategory
    CostEstimationStandardCatalogCostGroup:
      properties:
        localId:
          type: string
        designation:
          type:
          - string
          - 'null'
        costGroupType:
          $ref: '#/components/schemas/STANDARD_CATALOG_COST_GROUP_TYPE'
        createdAt:
          type: string
        updatedAt:
          type:
          - string
          - 'null'
        deletedAt:
          type:
          - string
          - 'null'
        costItem:
          $ref: '#/components/schemas/CostItem'
        childCostGroups:
          items:
            $ref: '#/components/schemas/CostEstimationStandardCatalogCostGroup'
          type: array
      required:
      - localId
      - designation
      - costGroupType
      - costItem
      - childCostGroups
      type: object
      additionalProperties: false
    CostEstimationStlbWorkCategoryEstimate:
      properties:
        id:
          type: string
        projectId:
          type: string
        catalogType:
          $ref: '#/components/schemas/COST_CATALOG_TYPE'
        customCatalogId:
          type:
          - string
          - 'null'
        stlbWorkCategoryCostGroups:
          items:
            $ref: '#/components/schemas/CostEstimationStlbWorkCategoryCostGroup'
          type: array
        createdAt:
          type: string
        updatedAt:
          type:
          - string
          - 'null'
        deletedAt:
          type:
          - string
          - 'null'
      required:
      - id
      - projectId
      - catalogType
      - customCatalogId
      - stlbWorkCategoryCostGroups
      type: object
      additionalProperties: false
    COST_ANALYSIS_BREAKDOWN:
      type: string
      enum:
      - custom
      - din276
      - oenorm
      - bidPackage
      - stlbWorkCategory
    CostAnalysisTotals:
      properties:
        totalNet:
          type: number
          format: double
        totalGross:
          type: number
          format: double
      required:
      - totalNet
      - totalGross
      type: object
      additionalProperties: false
    CostAnalysisResponse:
      properties:
        groups:
          items:
            $ref: '#/components/schemas/CostAnalysisCostGroup'
          type: array
          description: Top-level groups of the cost analysis. Each group contains nested children representing the breakdown of costs within that group.
        currency:
          $ref: '#/components/schemas/CURRENCY'
          description: Currency in which all monetary values in this response are expressed.
        bidPackagesTotalCount:
          type: number
          format: double
          description: Total number of bid packages in the project.
        bidPackagesWithBoQCount:
          type: number
          format: double
          description: Number of bid packages in the project that have a bill of quantities attached.
      required:
      - groups
      - currency
      - bidPackagesTotalCount
      - bidPackagesWithBoQCount
      type: object
      additionalProperties: false
    CostEstimationBidPackageCostGroup:
      properties:
        bidPackage:
          $ref: '#/components/schemas/CostEstimationBidPackage'
        costItem:
          $ref: '#/components/schemas/CostItem'
        createdAt:
          type: string
        updatedAt:
          type:
          - string
          - 'null'
        deletedAt:
          type:
          - string
          - 'null'
      required:
      - bidPackage
      - costItem
      type: object
      additionalProperties: false
    COST_ANALYSIS_TOP_LEVEL_GROUPING:
      type: string
      enum:
      - bidPackage
      - project
    CostEstimationBidPackage:
      properties:
        id:
          type: string
        name:
          type: string
        number:
          type:
          - string
          - 'null'
      required:
      - id
      - name
      - number
      type: object
      additionalProperties: false
    CostEstimationStandardCatalogEstimate:
      properties:
        id:
          type: string
        projectId:
          type: string
        catalogType:
          $ref: '#/components/schemas/COST_CATALOG_TYPE'
        customCatalogId:
          type:
          - string
          - 'null'
        standardCatalogCostGroups:
          items:
            $ref: '#/components/schemas/CostEstimationStandardCatalogCostGroup'
          type: array
        createdAt:
          type: string
        updatedAt:
          type:
          - string
          - 'null'
        deletedAt:
          type:
          - string
          - 'null'
      required:
      - id
      - projectId
      - catalogType
      - customCatalogId
      - standardCatalogCostGroups
      type: object
      additionalProperties: false
  securitySchemes:
    accessKey:
      type: http
      scheme: bearer
      bearerFormat: JWT