---
updatedAt: 2026-05-29T06:09:41.000Z
agentTools:
  projectIndex: https://support.scanifly.com/llms.txt
---

# Create project

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "paths": {
    "/api/v1/projects": {
      "post": {
        "operationId": "createProject",
        "summary": "Create project",
        "parameters": [
          {
            "name": "access_token",
            "required": true,
            "in": "query",
            "schema": {}
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProjectDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiReadProjectDto"
                }
              }
            }
          },
          "403": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "tags": [
          "Projects"
        ]
      }
    }
  },
  "info": {
    "title": "Scanifly API",
    "description": "API Specifications for interacting with Scanifly",
    "version": "1.1",
    "contact": {}
  },
  "servers": [
    {
      "url": "https://api.portal.scanifly.com"
    }
  ],
  "components": {
    "securitySchemes": {
      "queryToken": {
        "type": "apiKey",
        "in": "query",
        "name": "access_token"
      },
      "headerToken": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-token"
      }
    },
    "schemas": {
      "GeolocationDto": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "minimum": -90,
            "maximum": 90
          },
          "longitude": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          }
        },
        "required": [
          "latitude",
          "longitude"
        ]
      },
      "OwnerDetailsDto": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          }
        }
      },
      "CreateProjectDto": {
        "type": "object",
        "properties": {
          "kwh": {
            "oneOf": [
              {
                "type": "array",
                "maxItems": 0
              },
              {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "minItems": 12,
                "maxItems": 12
              }
            ],
            "description": "Array of 12 monthly kWh values, or [] to clear consumption data (this also clears kwhSource). Omitted or null leaves stored consumption unchanged. A 0 is a deliberate user-entered zero when the corresponding kwhSource month is \"manual\"."
          },
          "kwhSource": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "manual",
                "estimate",
                "unknown"
              ]
            },
            "description": "Per-month source of the kwh array: kwhSource[i] labels kwh[i]. Only accepted alongside kwh: exactly 12 entries, or []. Values: \"manual\" (user-entered), \"estimate\" (client-computed), or \"unknown\" (no value supplied). Omitted or null, the server fills it in: months whose kwh value is unchanged keep their stored label, others become \"unknown\" if 0 and \"manual\" otherwise. The server never infers \"estimate\", so send kwhSource whenever any month is estimated."
          },
          "ahj": {
            "type": "string",
            "description": "Authority Having Jurisdiction"
          },
          "utilityCompany": {
            "type": "string",
            "description": "Utility Company name"
          },
          "propertyType": {
            "enum": [
              "residential",
              "commercial"
            ],
            "type": "string",
            "description": "Property type"
          },
          "description": {
            "type": "string",
            "maxLength": 5000,
            "description": "Project description"
          },
          "name": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "createdBy": {
            "type": "string"
          },
          "geolocation": {
            "$ref": "#/components/schemas/GeolocationDto"
          },
          "ownerDetails": {
            "$ref": "#/components/schemas/OwnerDetailsDto"
          },
          "externalMetadata": {
            "type": "object"
          }
        },
        "required": [
          "name",
          "address"
        ]
      },
      "CustomerCompanyDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "object"
          },
          "name": {
            "type": "string"
          },
          "pricingTier": {
            "type": "object"
          }
        },
        "required": [
          "id",
          "name",
          "pricingTier"
        ]
      },
      "SubmittedForDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "object"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "company": {
            "$ref": "#/components/schemas/CustomerCompanyDto"
          }
        },
        "required": [
          "id",
          "email"
        ]
      },
      "ReadProjectDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "shadeReport": {
            "type": "object"
          },
          "additionalModels": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "additionalFiles": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "processingError": {
            "type": "string"
          },
          "kmlUrl": {
            "type": "string"
          },
          "textureUrl": {
            "type": "string"
          },
          "materialUrl": {
            "type": "string"
          },
          "simpleModelUrl": {
            "type": "string"
          },
          "modelUrl": {
            "type": "string"
          },
          "model3d": {
            "type": "string"
          },
          "droneImages": {
            "type": "object"
          },
          "roofPlanes": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "viewer3d": {
            "type": "object"
          },
          "libModels": {
            "type": "object"
          },
          "sceneObjs": {
            "type": "object"
          },
          "geoTiffUrl": {
            "type": "object"
          },
          "orthomosaicUrl": {
            "type": "object"
          },
          "segmentsUrl": {
            "type": "string"
          },
          "cameraPosesUrl": {
            "type": "string"
          },
          "processedWith": {
            "type": "object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "createdAt"
        ]
      },
      "DroneDataDto": {
        "type": "object",
        "properties": {
          "droneDataScore": {
            "type": "string"
          },
          "cameraTechnique": {
            "type": "string"
          },
          "flightPath": {
            "type": "string"
          },
          "imageQuality": {
            "type": "string"
          },
          "cameraTiltScore": {
            "type": "string"
          },
          "imageFiltersScore": {
            "type": "string"
          },
          "surveyEfficiencyScore": {
            "type": "string"
          },
          "imageCountScore": {
            "type": "string"
          },
          "idealFlightDeviationScore": {
            "type": "string"
          },
          "interImageDistanceScore": {
            "type": "string"
          },
          "detailFlightScore": {
            "type": "string"
          },
          "contextFlightScore": {
            "type": "string"
          }
        }
      },
      "ApiReadProjectDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "folder": {
            "type": "object"
          },
          "thumbnailUrl": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "geolocation": {
            "$ref": "#/components/schemas/GeolocationDto"
          },
          "ownerDetails": {
            "$ref": "#/components/schemas/OwnerDetailsDto"
          },
          "kwh": {
            "description": "Monthly Consumption data as an array of 12 numbers, or [] when the project has no consumption data. Can be paired with kwhSource if anyof the values are estimates.",
            "oneOf": [
              {
                "type": "array",
                "maxItems": 0
              },
              {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "minItems": 12,
                "maxItems": 12
              }
            ]
          },
          "kwhSource": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "manual",
                "estimate",
                "unknown"
              ]
            },
            "description": "Per-month source of the kwh array value, always the same length as kwh. kwhSource[i] labels kwh[i]. \"manual\" (user-entered), \"estimate\" (client-computed),or \"unknown\" (no value supplied). Projects saved before provenance was tracked get it derived: a 0 becomes \"unknown\", anything else \"manual\"."
          },
          "uploadComplete": {
            "format": "date-time",
            "type": "string",
            "description": "Photogrammetry model processing completed"
          },
          "submittedFor": {
            "description": "submittedFor is used when a Scanifly Admin submits the project for processing instead of a member of the company.",
            "allOf": [
              {
                "$ref": "#/components/schemas/SubmittedForDto"
              }
            ]
          },
          "lastActivityAt": {
            "format": "date-time",
            "type": "string",
            "description": "Timestamp of the last user activity on the project.",
            "example": "2026-06-10T00:00:00.000Z"
          },
          "details": {
            "description": "Details associated with the photogrammetry model and processing.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ReadProjectDetailDto"
              }
            ]
          },
          "droneData": {
            "description": "Drone Data Score",
            "allOf": [
              {
                "$ref": "#/components/schemas/DroneDataDto"
              }
            ]
          },
          "DDSPDFReportCreatedAt": {
            "format": "date-time",
            "type": "string",
            "nullable": true,
            "description": "Date the Drone Data Score report was created."
          },
          "ahj": {
            "type": "string",
            "description": "Authority Having Jurisdiction"
          },
          "utilityCompany": {
            "type": "string",
            "description": "Utility Company name"
          },
          "propertyType": {
            "enum": [
              "residential",
              "commercial"
            ],
            "type": "string",
            "description": "Property type"
          },
          "description": {
            "type": "string",
            "description": "Project description"
          },
          "certainteedStatus": {
            "enum": [
              "new",
              "remoteDesignComplete",
              "detailedDesignComplete",
              "archive"
            ],
            "type": "string",
            "description": "Certainteed Project Status"
          },
          "status": {
            "enum": [
              "locationSubmitted",
              "droneImagesUploading",
              "droneImagesUploaded",
              "submitError",
              "uploadProcessing",
              "uploadError",
              "uploadComplete",
              "remoteDesignStarted",
              "adminLocationSubmitted",
              "adminDroneImagesUploaded",
              "adminUploadProcessing",
              "adminUploadError",
              "adminUploadComplete",
              "adminDeclined",
              "adminReplaced",
              "maintenance",
              "noFlight",
              "remote"
            ],
            "type": "string"
          },
          "type": {
            "enum": [
              "commercial",
              "commercialSmall",
              "residential",
              "utility",
              "small",
              "large"
            ],
            "type": "string"
          },
          "teammates": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "shareLinkUrl": {
            "type": "string"
          },
          "externalMetadata": {
            "type": "object"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "lastSavedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "address",
          "geolocation",
          "ownerDetails",
          "kwh",
          "kwhSource",
          "status",
          "teammates",
          "createdAt",
          "updatedAt"
        ]
      }
    }
  },
  "security": [
    {
      "queryToken": []
    },
    {
      "headerToken": []
    }
  ]
}
```