Fieldwire Account API

Account-scoped (super) endpoints used to authenticate, exchange the long-lived API key for a short-lived JWT access token, and manage account-level users, roles, attachments, data types, custom stamps, form templates, and project transfers. Calls hit the global super host at https://client-api.super.fieldwire.com before regional project APIs.

Fieldwire Account 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 Account, Authentication, Construction, and Users. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 2 Naftiko capability specs.

OpenAPI Specification

fieldwire-account-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Fieldwire Account API
  description: |
    Account-scoped (super) endpoints used to authenticate, exchange the long-lived
    API key (refresh token) for a short-lived JWT access token, and manage
    account-level users, roles, attachments, data types, custom stamps, account
    form templates, and project transfers. All requests target the global super
    host: `https://client-api.super.fieldwire.com`. Project-scoped reads/writes
    use the regional Projects API (`client-api.us.fieldwire.com` or
    `client-api.eu.fieldwire.com`).
  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.super.fieldwire.com
    description: Global Super Host
security:
  - BearerAuth: []
tags:
  - name: Authentication
    description: Refresh-token / JWT exchange and session management.
  - name: Users
    description: Account-level user, role, and permission management.
  - name: Form Templates
    description: Account-level form template lifecycle, duplication, and transfer.
  - name: Custom Stamps
    description: Account-level custom stamps used on markups across projects.
paths:
  /api_keys/jwt:
    post:
      operationId: getApiKeyJwt
      summary: Exchange API Key For Access Token
      description: |
        Exchange the long-lived refresh token (API key) generated from the
        Fieldwire account settings for a short-lived JWT access token. The JWT
        protects all subsequent calls and expires in minutes to hours.
      tags: [Authentication]
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JwtRequest'
      responses:
        '200':
          description: Access token issued.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JwtResponse'
        '401':
          description: Invalid or revoked refresh token.
  /account/users:
    get:
      operationId: getAccountUsers
      summary: Get Account Users
      description: List all users belonging to the authenticated Fieldwire account.
      tags: [Users]
      responses:
        '200':
          description: Account user list.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AccountUser'
  /account/users/{user_id}:
    get:
      operationId: getAccountUserById
      summary: Get Account User By ID
      description: Retrieve a single account user by ID.
      tags: [Users]
      parameters:
        - $ref: '#/components/parameters/UserId'
      responses:
        '200':
          description: Account user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountUser'
    patch:
      operationId: updateAccountUserById
      summary: Update Account User By ID
      description: Update profile fields, role, or status for an account user.
      tags: [Users]
      parameters:
        - $ref: '#/components/parameters/UserId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountUserUpdate'
      responses:
        '200':
          description: Updated account user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountUser'
  /account/form_templates:
    get:
      operationId: getAccountFormTemplates
      summary: Get Account Form Templates
      description: List form templates published at the account level.
      tags: [Form Templates]
      responses:
        '200':
          description: Form template list.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FormTemplate'
    post:
      operationId: createAccountFormTemplate
      summary: Create Account Form Template
      description: Create a new account-level form template.
      tags: [Form Templates]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FormTemplate'
      responses:
        '201':
          description: Created form template.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FormTemplate'
  /account/form_templates/{form_template_id}:
    get:
      operationId: getAccountFormTemplateById
      summary: Get Account Form Template By ID
      tags: [Form Templates]
      parameters:
        - $ref: '#/components/parameters/FormTemplateId'
      responses:
        '200':
          description: Form template.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FormTemplate'
    patch:
      operationId: updateAccountFormTemplateById
      summary: Update Account Form Template By ID
      tags: [Form Templates]
      parameters:
        - $ref: '#/components/parameters/FormTemplateId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FormTemplate'
      responses:
        '200':
          description: Updated form template.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FormTemplate'
  /account/custom_stamps:
    get:
      operationId: getAccountCustomStamps
      summary: Get Account Custom Stamps
      tags: [Custom Stamps]
      responses:
        '200':
          description: Custom stamp list.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CustomStamp'
    post:
      operationId: createAccountCustomStamp
      summary: Create Account Custom Stamp
      tags: [Custom Stamps]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomStamp'
      responses:
        '201':
          description: Created custom stamp.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomStamp'
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: |
        Send the short-lived access token returned by `POST /api_keys/jwt` as
        `Authorization: Bearer <access_token>`. Also include the
        `Fieldwire-Version` request header and `Content-Type: application/json`.
  parameters:
    UserId:
      name: user_id
      in: path
      required: true
      description: Account user identifier.
      schema:
        type: integer
        format: int64
    FormTemplateId:
      name: form_template_id
      in: path
      required: true
      description: Account form template identifier.
      schema:
        type: integer
        format: int64
  schemas:
    JwtRequest:
      type: object
      required: [api_token]
      properties:
        api_token:
          type: string
          description: Long-lived refresh token (API key) from the Fieldwire account settings.
    JwtResponse:
      type: object
      properties:
        access_token:
          type: string
          description: Short-lived JWT used as the bearer token for subsequent calls.
        expires_at:
          type: string
          format: date-time
          description: Access-token expiry timestamp (ISO 8601, UTC).
    AccountUser:
      type: object
      properties:
        id:
          type: integer
          format: int64
        email:
          type: string
          format: email
        first_name:
          type: string
        last_name:
          type: string
        role:
          type: string
          enum: [owner, admin, member, follower]
        status:
          type: string
          enum: [active, invited, deactivated]
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    AccountUserUpdate:
      type: object
      properties:
        first_name:
          type: string
        last_name:
          type: string
        role:
          type: string
          enum: [owner, admin, member, follower]
        status:
          type: string
          enum: [active, invited, deactivated]
    FormTemplate:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        description:
          type: string
        published:
          type: boolean
        code:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    CustomStamp:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        attachment_url:
          type: string
          format: uri
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time