openapi: 3.2.0 info: title: No API Explorer Projects API version: '1.22' servers: - url: https://io.plangrid.com security: - {} tags: - name: Projects paths: /projects: post: summary: Create Project description: Create a new PlanGrid project. The PlanGrid account associated with the API key is added as an admin to the project team. operationId: create-project requestBody: content: application/json: schema: type: object required: - name properties: name: type: string description: Name of the project. Must be at least one character long. custom_id: type: string description: Project code. default: 'null' type: type: string description: Project type with possible values of `general`, `manufacturing`, `power`, `water-sewer-waste`, `industrial-petroleum`, `transportation`, `hazardous-waste`, `telecom`, `education-k-12`, `education-higher`, `gov-federal`, `gov-state-local`, or `other`. default: 'null' status: type: string description: Project status. default: 'null' owner: type: string description: Project owner. default: 'null' start_date: type: string description: Project start date. See [Timestamps and Timezones](https://developer.plangrid.com/docs/timestamps-and-timezones) for accepted date formats. default: 'null' end_date: type: string description: Project end date. See [Timestamps and Timezones](https://developer.plangrid.com/docs/timestamps-and-timezones) for accepted date formats. default: 'null' street_1: type: string description: Project address, street line 1. default: 'null' street_2: type: string description: Project address, street line 2. default: 'null' city: type: string description: Project address town or city. default: 'null' region: type: string description: Project address state, province, or region. default: 'null' postal_code: type: string description: Project address zip or postal code. default: 'null' country: type: string description: Project address country in 2-letter ISO 3166 code. default: 'null' add_to_organization: type: boolean description: Boolean indicating whether to add the project to the organization that the API user belongs to or not. By default the project is created as a personal project and not as an organization-linked project. default: false responses: '201': description: '201' content: application/json: examples: Success: value: "{\n \"uid\": \"bafce976-8f33-437f-9c52-fb274456940f\",\n \"name\": \"My New Construction Project.\",\n \"custom_id\": \"1234\",\n \"type\": \"general\",\n \"status\": \"bidding\",\n \"owner\": \"ACME\",\n \"start_date\": \"2001-10-01\",\n \"end_date\": \"2050-10-01\",\n \"street_1\": \"350 5th Avenue\",\n \"street_2\": null,\n \"city\": \"New York\",\n \"region\": \"New York\",\n \"postal_code\": \"10118\",\n \"country\": \"US\" \n}\n" schema: type: object properties: uid: type: string example: bafce976-8f33-437f-9c52-fb274456940f name: type: string example: My New Construction Project. custom_id: type: string example: '1234' type: type: string example: general status: type: string example: bidding owner: type: string example: ACME start_date: type: string example: '2001-10-01' end_date: type: string example: '2050-10-01' street_1: type: string example: 350 5th Avenue street_2: {} city: type: string example: New York region: type: string example: New York postal_code: type: string example: '10118' country: type: string example: US '400': description: '400' content: application/json: examples: Name Missing: value: "{\n \"message\": \"Project name required to create a project.\"\n}\n" Name Blank: value: "{\n \"message\": \"Project name must be at least one character long.\"\n}\n" Invalid Custom ID: value: "{\n \"message\": \"Custom ID must be null or a string at least one character long.\"\n}" Invalid Type: value: "{\n \"message\": \"Type (2) must be a valid project type.\"\n}" Invalid Status: value: "{\n \"message\": \"Status must be null or a string at least one character long.\"\n}" Invalid Owner: value: "{\n \"message\": \"Owner must be null or a string at least one character long.\"\n}" Invalid Start Date: value: "{\n \"message\": \"Start date (1234) must be null or a date string in ISO-8601 format (YYYY-MM-DD).\"\n}" Invalid End Date: value: "{\n \"message\": \"End date (1234) must be null or a date string in ISO-8601 format (YYYY-MM-DD).\"\n}" Invalid Street 1: value: "{\n \"message\": \"Street 1 must be null or a string at least one character long.\"\n}" Invalid Street 2: value: "{\n \"message\": \"Street 2 must be null or a string at least one character long.\"\n}" Invalid City: value: "{\n \"message\": \"City must be null or a string at least one character long.\"\n}" Invalid Region: value: "{\n \"message\": \"Postal code must be null or a string at least one character long.\"\n}" Invalid Country: value: "{\n \"message\": \"Country must be an ISO 3166 two letter country code.\"\n}" schema: oneOf: - title: Name Missing type: object properties: message: type: string example: Project name required to create a project. - title: Name Blank type: object properties: message: type: string example: Project name must be at least one character long. - title: Invalid Custom ID type: object properties: message: type: string example: Custom ID must be null or a string at least one character long. - title: Invalid Type type: object properties: message: type: string example: Type (2) must be a valid project type. - title: Invalid Status type: object properties: message: type: string example: Status must be null or a string at least one character long. - title: Invalid Owner type: object properties: message: type: string example: Owner must be null or a string at least one character long. - title: Invalid Start Date type: object properties: message: type: string example: Start date (1234) must be null or a date string in ISO-8601 format (YYYY-MM-DD). - title: Invalid End Date type: object properties: message: type: string example: End date (1234) must be null or a date string in ISO-8601 format (YYYY-MM-DD). - title: Invalid Street 1 type: object properties: message: type: string example: Street 1 must be null or a string at least one character long. - title: Invalid Street 2 type: object properties: message: type: string example: Street 2 must be null or a string at least one character long. - title: Invalid City type: object properties: message: type: string example: City must be null or a string at least one character long. - title: Invalid Region type: object properties: message: type: string example: Postal code must be null or a string at least one character long. - title: Invalid Country type: object properties: message: type: string example: Country must be an ISO 3166 two letter country code. deprecated: false tags: - Projects get: summary: List All Projects description: Get a list of projects where the PlanGrid account is a team member. Results are paginated, see Pagination for details on how pagination works in PlanGrid's API. operationId: list-all-projects parameters: - name: limit in: query description: Number of projects to retrieve. Maximum value of 50. schema: type: integer format: int32 default: 50 - name: skip in: query description: Number of projects to skip in the set of results. schema: type: integer format: int32 default: 0 - name: updated_after in: query description: Only retrieve projects created/updated after specified UTC date and time (does not count changes in records contained in project). See [Timestamps and Timezones](https://developer.plangrid.com/docs/timestamps-and-timezones) for accepted date formats. schema: type: string format: date responses: '200': description: '200' content: application/json: examples: Success: value: "{\n \"data\": [\n {\n \"uid\": \"bafce976-8f33-437f-9c52-fb274456940f\",\n \"name\": \"LA Natural History Museum\",\n \"custom_id\": \"5678\",\n \"type\": \"general\",\n \"status\": \"completed\",\n \"owner\": \"ACME\",\n \"start_date\": \"2001-10-01\",\n \"end_date\": \"2050-10-01\",\n \"street_1\": \"900 Exposition Blvd\",\n \"street_2\": null,\n \"city\": \"Los Angeles\",\n \"region\": \"California\",\n \"postal_code\": \"90007\",\n \"country\": \"US\"\n },\n {\n \"uid\": \"327e8c64-a70d-433c-b4ac-d077415a5547\",\n \"name\": \"3265 17th Street\",\n \"custom_id\": \"1234\",\n \"type\": \"general\",\n \"status\": \"bidding\",\n \"owner\": \"ACME\",\n \"start_date\": \"2001-10-01\",\n \"end_date\": \"2050-10-01\",\n \"street_1\": \"3265 17th Street\",\n \"street_2\": \"#404\",\n \"city\": \"New York\",\n \"region\": \"New York\",\n \"postal_code\": \"10118\",\n \"country\": \"US\"\n }\n ],\n \"total_count\": 100,\n \"next_page_url\": \"https://io.plangrid.com/projects?skip=2&limit=2\"\n}\n" schema: type: object properties: data: type: array items: type: object properties: uid: type: string example: bafce976-8f33-437f-9c52-fb274456940f name: type: string example: LA Natural History Museum custom_id: type: string example: '5678' type: type: string example: general status: type: string example: completed owner: type: string example: ACME start_date: type: string example: '2001-10-01' end_date: type: string example: '2050-10-01' street_1: type: string example: 900 Exposition Blvd street_2: {} city: type: string example: Los Angeles region: type: string example: California postal_code: type: string example: '90007' country: type: string example: US total_count: type: integer example: 100 default: 0 next_page_url: type: string example: https://io.plangrid.com/projects?skip=2&limit=2 deprecated: false security: [] tags: - Projects /projects/{project_uid}/rfis2/{rfi_uid}/return_messages: get: summary: Get RFI Return Message in a Project description: Retrieves the return message from an RFI in a project. Return message data is described in The RFI Return Message Object. operationId: get-rfi-return-message-in-a-project parameters: - name: project_uid in: path description: Unique identifier of project. required: true schema: type: string - name: limit in: query description: Number of answers to retrieve. Maximum value of 50. schema: type: integer format: int32 default: 50 - name: skip in: query description: Number of answers to skip in the set of results. schema: type: integer format: int32 default: 0 responses: '200': description: '200' content: application/json: examples: Result: value: "{\n \"data\": [\n {\n\t\"created_at\": \"2020-05-26T19:59:06.203798+00:00\",\n\t\"created_by\": {\n\t\t\"type\": \"user\",\n\t\t\"uid\": \"5c48e3dca97740498aed0692\",\n\t\t\"url\": \"https://io.plangrid.com/projects/6f27e34d-3697-0ba7-df37-67045591b53b/users/5c48e3dca97740498aed0692\"\n\t},\n\t\"is_draft\": false,\n\t\"num_references_on_create\": 0,\n\t\"references\": [],\n\t\"rfi_uid\": \"2098d23b-f825-4f96-a675-91411d56bfc6\",\n\t\"source\": \"app\",\n\t\"status\": {\n\t\t\"bucket\": \"draft_with_manager\",\n\t\t\"label\": \"Draft with manager\",\n\t\t\"uid\": \"a4577f01-3991-4487-a5d1-4eea5a541ea1\"\n\t},\n\t\"text\": \"poor poor\",\n\t\"uid\": \"8fffba85-91c5-421b-88c4-b315f3957702\",\n\t\"updated_at\": \"2020-05-26T19:59:06.203798+00:00\",\n\t\"updated_by\": {\n\t\t\"type\": \"user\",\n\t\t\"uid\": \"5c48e3dca97740498aed0692\",\n\t\t\"url\": \"https://io.plangrid.com/projects/6f27e34d-3697-0ba7-df37-67045591b53b/users/5c48e3dca97740498aed0692\"\n\t},\n\t\"user_created_at\": \"2020-05-26T19:59:06.203798+00:00\"\n}\n ],\n \"next_page_url\": null,\n \"total_count\": 1\n}" schema: type: object properties: data: type: array items: type: object properties: created_at: type: string example: '2020-05-26T19:59:06.203798+00:00' created_by: type: object properties: type: type: string example: user uid: type: string example: 5c48e3dca97740498aed0692 url: type: string example: https://io.plangrid.com/projects/6f27e34d-3697-0ba7-df37-67045591b53b/users/5c48e3dca97740498aed0692 is_draft: type: boolean example: false default: true num_references_on_create: type: integer example: 0 default: 0 references: type: array items: type: object properties: {} rfi_uid: type: string example: 2098d23b-f825-4f96-a675-91411d56bfc6 source: type: string example: app status: type: object properties: bucket: type: string example: draft_with_manager label: type: string example: Draft with manager uid: type: string example: a4577f01-3991-4487-a5d1-4eea5a541ea1 text: type: string example: poor poor uid: type: string example: 8fffba85-91c5-421b-88c4-b315f3957702 updated_at: type: string example: '2020-05-26T19:59:06.203798+00:00' updated_by: type: object properties: type: type: string example: user uid: type: string example: 5c48e3dca97740498aed0692 url: type: string example: https://io.plangrid.com/projects/6f27e34d-3697-0ba7-df37-67045591b53b/users/5c48e3dca97740498aed0692 user_created_at: type: string example: '2020-05-26T19:59:06.203798+00:00' next_page_url: {} total_count: type: integer example: 1 default: 0 '400': description: '400' content: application/json: examples: Result: value: '{}' schema: type: object properties: {} deprecated: false tags: - Projects x-readme-fauxas: true x-provenance: method: searched source: https://developer.plangrid.com/reference harvested: '2026-10-14' tool: harvest-readme-openapi.py note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored. assembled_from: - https://developer.plangrid.com/reference/create-project.md - https://developer.plangrid.com/reference/get-rfi-return-message-in-a-project.md - https://developer.plangrid.com/reference/get-user-profile.md - https://developer.plangrid.com/reference/list-all-projects.md - https://developer.plangrid.com/reference/retrieve-access-token.md - https://developer.plangrid.com/reference/retrieve-authorization-code.md - https://developer.plangrid.com/reference/retrieve-rate-limits.md - https://developer.plangrid.com/reference/send-batch-request.md merge: pages: 8 deduped: 0 conflicts_kept_first: 0