Fieldwire Plans and Sheets API

Upload PDF drawing sets, version sheets, organise floorplans into hierarchical collections, auto-extract sheet numbers / titles, manage hyperlinks and multi-hyperlinks between sheets, and attach Building Information Models with versioned object trees for calibration and 3D task creation.

Fieldwire Plans and Sheets API is one of 9 APIs that Fieldwire publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 2 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Construction, Plans, Sheets, Drawings, and BIM. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 2 Naftiko capability specs.

OpenAPI Specification

fieldwire-plans-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Fieldwire Plans and Sheets API
  description: |
    Upload PDF drawing sets, manage sheet versioning and floorplan hierarchies,
    organise plans into collections, calibrate scale, and attach Building
    Information Models (BIM) with versioned object trees. Used by general
    contractors, architects, and specialty contractors to keep the latest
    drawings in the field.
  version: v3.1
  contact:
    name: Fieldwire Developer Support
    url: https://developers.fieldwire.com/
  license:
    name: Fieldwire Terms of Service
    url: https://www.fieldwire.com/terms/
servers:
  - url: https://client-api.us.fieldwire.com/api/v3
    description: US Region
  - url: https://client-api.eu.fieldwire.com/api/v3
    description: EU Region
security:
  - BearerAuth: []
tags:
  - name: Floorplans
    description: Floorplan lifecycle, hierarchy, and collections.
  - name: Sheets
    description: Sheet upload and version management.
  - name: Hyperlinks
    description: Single and multi-hyperlink jumps between sheets.
  - name: Building Information Models
    description: BIM and BIM versions attached to a project.
paths:
  /projects/{project_id}/floorplans:
    get:
      operationId: getFloorplansInProject
      summary: Get Floorplans In Project
      tags: [Floorplans]
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: Floorplan list.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Floorplan'
    post:
      operationId: createFloorplanInProject
      summary: Create Floorplan In Project
      description: Create a new floorplan; sheets are uploaded separately via the Attachments API.
      tags: [Floorplans]
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FloorplanCreate'
      responses:
        '201':
          description: Created floorplan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Floorplan'
  /projects/{project_id}/floorplans/{floorplan_id}:
    get:
      operationId: getFloorplanById
      summary: Get Floorplan By ID
      tags: [Floorplans]
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/FloorplanId'
      responses:
        '200':
          description: Floorplan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Floorplan'
    patch:
      operationId: updateFloorplanById
      summary: Update Floorplan By ID
      tags: [Floorplans]
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/FloorplanId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FloorplanUpdate'
      responses:
        '200':
          description: Updated floorplan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Floorplan'
  /projects/{project_id}/sheets:
    get:
      operationId: getSheetsInProject
      summary: Get Sheets In Project
      tags: [Sheets]
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: Sheet list.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Sheet'
    post:
      operationId: createSheetInProject
      summary: Create Sheet In Project
      description: Register a new sheet version. The underlying PDF is uploaded via the Attachments S3 token flow.
      tags: [Sheets]
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SheetCreate'
      responses:
        '201':
          description: Created sheet.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Sheet'
  /projects/{project_id}/hyperlinks:
    get:
      operationId: getHyperlinksInProject
      summary: Get Hyperlinks In Project
      tags: [Hyperlinks]
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: Hyperlink list.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Hyperlink'
  /projects/{project_id}/building_information_models:
    get:
      operationId: getBuildingInformationModelsInProject
      summary: Get Building Information Models In Project
      tags: [Building Information Models]
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: BIM list.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BuildingInformationModel'
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  parameters:
    ProjectId:
      name: project_id
      in: path
      required: true
      schema:
        type: integer
        format: int64
    FloorplanId:
      name: floorplan_id
      in: path
      required: true
      schema:
        type: integer
        format: int64
  schemas:
    Floorplan:
      type: object
      properties:
        id:
          type: integer
          format: int64
        project_id:
          type: integer
          format: int64
        name:
          type: string
        sheet_id:
          type: integer
          format: int64
        parent_id:
          type: integer
          format: int64
          description: Parent floorplan for nested collections.
        floorplan_collection_id:
          type: integer
          format: int64
        position:
          type: number
          format: double
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    FloorplanCreate:
      type: object
      required: [name]
      properties:
        name:
          type: string
        parent_id:
          type: integer
          format: int64
        floorplan_collection_id:
          type: integer
          format: int64
    FloorplanUpdate:
      type: object
      properties:
        name:
          type: string
        parent_id:
          type: integer
          format: int64
        floorplan_collection_id:
          type: integer
          format: int64
    Sheet:
      type: object
      properties:
        id:
          type: integer
          format: int64
        floorplan_id:
          type: integer
          format: int64
        sheet_number:
          type: string
        title:
          type: string
        version:
          type: integer
        original_pdf_url:
          type: string
          format: uri
        thumb_url:
          type: string
          format: uri
        is_active:
          type: boolean
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    SheetCreate:
      type: object
      required: [floorplan_id]
      properties:
        floorplan_id:
          type: integer
          format: int64
        sheet_number:
          type: string
        title:
          type: string
        attachment_token:
          type: string
          description: AWS POST token identifier for the uploaded PDF.
    Hyperlink:
      type: object
      properties:
        id:
          type: integer
          format: int64
        source_sheet_id:
          type: integer
          format: int64
        target_sheet_id:
          type: integer
          format: int64
        label:
          type: string
        position:
          type: object
          properties:
            x:
              type: number
              format: double
            y:
              type: number
              format: double
    BuildingInformationModel:
      type: object
      properties:
        id:
          type: integer
          format: int64
        project_id:
          type: integer
          format: int64
        name:
          type: string
        latest_version_id:
          type: integer
          format: int64
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time