apidocs.powerclerk.com

Preview meta tags from the apidocs.powerclerk.com website.

Search Engine Appearance

Google

https://apidocs.powerclerk.com/

PowerClerk API V2

The PowerClerk® API allows programmatic access to basic PowerClerk functions, including project creation, editing and submission of project data, as well as upload, download and management of attachments. These API methods mirror the functionality of the PowerClerk web interface for working with projects. You can download and use this documentation with Postman. Copy the collection and default environment with the "Run in Postman" button at the top-right of this page, and set your own environment variables to test the requests. For detailed instructions, watch [this video](https://cleanpower.wistia.com/medias/4qdk47z195). - **Note**: the legacy API is end-of-life and will be removed from service on April 3, 2026. - After deprecation, the legacy API will no longer be available. Your API client will need to migrate to this PowerClerk API V2 before this date - If your application still uses the legacy API, plan your upgrade with the migration documentation below. # PowerClerk API Base URLs The _**PowerClerkURL**_ variable refers to a PowerClerk API endpoint base URL. Valid values are in the table below. | **Environment** | **PowerClerkURL** | | --- | --- | | **PCI Trial** | [https://api.cleanpowerdemo.com/PCITrial](https://api.cleanpowerdemo.com/PCITrial) | | **Production** | [https://api.powerclerk.com](https://api.powerclerk.com) | # Authentication & Access ## API Key The _**APIKey**_ variable is required for every API request and sent in the "X-ApiKey" header. Each user with authorized access to the PowerClerk API will be associated to an API key that must be sent with every request. API keys are issued and administered by the Clean Power Research Customer Success team. Generally, one API key with limited throughput is issued for customers with their integration bundle. To request a new API key or access to an existing key, use the Submit API Key Request on the [PowerClerk Ticket System](https://support.powerclerk.com/MvcProjects/ProjectList?ProgramId=ZEZ0C8KV4YH5). ## Authentication The V2 API requires bearer authentication using the [OAuth 2.0 Client Credentials](https://datatracker.ietf.org/doc/html/rfc6749#section-4.4) flow. When an API key is associated with a user or service account, the PowerClerk My Account page will have an option create _**ClientId**_ and _**ClientSecret**_ variables. Credentials can be used on any program the authenticated user can access. Access to the API for users with SSO need to have a permission added to the PowerClerk IDP configuration, which can be included in their API Key support request. A user with both a PowerClerk login and SSO to access separate programs would need to create separate client credentials for PowerClerk and each IDP. Calls to the Token API with the Client Id and Secret will generate access tokens valid for 60 minutes. While valid, the access token must be included in the Authorization header as a Bearer token for all API calls. | **Environment** | **TokenURL** | | --- | --- | | **PCI Trial** | [https://identity.cleanpowerdemo.com/PCITrial/connect/token](https://identity.cleanpowerdemo.com/PCITrial/connect/token) | | **Production** | [https://identity.powerclerk.com/connect/token](https://identity.powerclerk.com/connect/token) | ## Accounts with Multi-Factor Authentication If Multi-Factor Authentication (MFA) is enabled on for the API user, one of the two MFA header parameters must be included on every API request. Certain APIs may include a reveal_sensitive_data parameter which, if set to true, requires MFA. | **Header Parameters** | **Description** | | --- | --- | | **Mfa-One-Time-Password** | Time-based-One-Time-Password (TOTP) calculated using the TOTP algorithm and valid for 30 seconds. Set with the _**MFAOneTimePassword**_ variable. | | **Mfa-Session-Token** | MFA Session Token (MST) set up on PowerClerk in My Account > Manage API Credentials and valid up to 24 hours. Set with the _**MFASessionToken**_ variable. | # Operation Rate Limit API Keys are limited to a rate of **60 operations per minute**. Usage that exceeds this rate significantly will result in the calls being answered with a failure HTTP status code of 429 – “Too Many Requests” until enough time has passed for additional requests to be handled. # Custom Ids The public Ids that PowerClerk uses to identify all objects in a program are automatically generated, and make it possible to uniquely identify an object regardless of changes to the data field name or UI label. Public Ids, however, are unique in each program and test environment for all data fields, attachments, forms and statuses. API clients using public Ids need to re-map public Ids when calling different programs and test environments. A simpler solution is to set custom Ids for any data fields, attachments, forms and statuses used in the API. If a custom Id has been set, that can be used in place of the automatically generated public Id. A custom Id can be defined by a program designer with the allowed permission and remain consistent when moving between a sandbox to production or a test environment. Custom Ids are only unique within their object type, i.e. an attachment and a data field can have the same custom Id. ## Project Numbers on URLs PowerClerk assigns a Project Number when a project is first submitted. The Project Number can be used in place of the Project Id on the API URL. Note that Project Ids must still be used for new projects on API calls between the CreateProject call (where the Project Id is assigned) and the first SubmitProject call (where the Project Number is assigned.) # API Migration from Legacy to V2 ## General Changes ### Authentication - V1: Basic authentication only - V2: OAuth 2.0 client credentials authentication only ### Payload Content Type - V1: XML with namespace - V2: XML without namespace or JSON (default) To use XML on V2, use Accept and Content-Type `application/xml` headers. Each request has both "Success" for the default JSON and "Success (XML)" as one of the examples. ## GetProjects ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects` - V2: `/services/v2/Programs/{{ProgramId}}/Projects` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojects/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojects/) - V2: [https://apidocs.powerclerk.com/#GetProjects](https://apidocs.powerclerk.com/#9f28edab-571a-4f84-9b1b-5f2aa0d01c0c) ### Request - The format for the `changed_since` `datetime` query parameter more strictly adheres to the format documented and will reject formats previously accepted - The request no longer recognizes the `version` query parameter ### Response - Namespace has been removed - `Project.OwnerEmailAddress` has been moved to `Project.ProjectOwner.Email` - `Project.ProjectOwner.Name` has been added - `Project.Status` has been moved to `Project.CurrentStatus.Name` - `Project.StatusCustomId` has been moved to `Project.CurrentStatus.CustomId` - `Project.StatusPublicId` has been moved to `Project.CurrentStatus.PublicId` - `Project.StatusTimestamp` has been moved to `Project.CurrentStatus.Timestamp` ## GetProjectByNumber ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/ByNumber` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/ByNumber` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectsbynumber/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectsbynumber/) - V2: [https://apidocs.powerclerk.com/#GetProjectByNumber](https://apidocs.powerclerk.com/#0e74f1a9-a18c-4777-91b6-7a712656fb23) ### Request - Namespace has been removed ### Response - Namespace has been removed - `Project.OwnerEmailAddress` has been moved to `Project.ProjectOwner.Email` - `Project.ProjectOwner.Name` has been added - `Project.Status` has been moved to `Project.CurrentStatus.Name` - `Project.StatusCustomId` has been moved to `Project.CurrentStatus.CustomId` - `Project.StatusPublicId` has been moved to `Project.CurrentStatus.PublicId` - `Project.StatusTimestamp` has been moved to `Project.CurrentStatus.Timestamp` ## GetProjectsByData ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/ByData` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/ByData` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectsbydata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectsbydata/) - V2: [https://apidocs.powerclerk.com/#GetProjectsByData](https://apidocs.powerclerk.com/#ebd754cc-5d1a-4a4b-8038-e915ec3c052a) ### Request - Namespace has been removed - `Field.Content` for data fields of type `DateTime` must be in `yyyy-MM-dd` format ### Response - Namespace has been removed - `Project.OwnerEmailAddress` has been moved to `Project.ProjectOwner.Email` - `Project.ProjectOwner.Name` has been added - `Project.Status` has been moved to `Project.CurrentStatus.Name` - `Project.StatusCustomId` has been moved to `Project.CurrentStatus.CustomId` - `Project.StatusPublicId` has been moved to `Project.CurrentStatus.PublicId` - `Project.StatusTimestamp` has been moved to `Project.CurrentStatus.Timestamp` ## CreateNewProject ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/NewProject` - V2: `/services/v2/Programs/{{ProgramId}}/NewProject` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/createnewproject/](https://developers.cleanpower.com/application_process_automation/api-method-reference/createnewproject/) - V2: [https://apidocs.powerclerk.com/#CreateNewProject](https://apidocs.powerclerk.com/#2811bdc8-0e93-4d96-97c1-251bc80729d6) ### Request - No change ### Response - `Project.Url.Value` has been moved to `Project.Url` - `Project.Status` has been moved to `Project.CurrentStatus.Name` - `Project.StatusTimestamp` has been moved to `Project.CurrentStatus.Timestamp` - `Project.Forms[].Title` has been moved to `Project.Forms[].Name` - New attribute `Project.ProjectNumber` - New attribute `Project.CurrentStatus.StatusId` - New attribute `Project.CurrentStatus.CustomId` - Removed deprecated attribute `Project.Forms[].AvailableInStatuses[].Deleted` - Removed deprecated attribute `Project.Forms[].LeadsToStatus` ## GetProjectData ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Data` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Draft/Data` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectdata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectdata/) - V2: [https://apidocs.powerclerk.com/#GetProjectData](https://apidocs.powerclerk.com/#815ba741-cbbf-41d1-95a2-473e1eb706ab) ### Request - URL path should include /Draft to access draft data ### Response - Namespace has been removed - Data field date values return in the format `yyyy-MM-dd` instead of `MM/dd/yyyy` - Boolean values return `true`/`false` instead of `True`/`False` - `Project.Url.Value` has been moved to `Project.Url` - `Project.DataFields[].Instance` has been removed. Multi-instance data fields use a list of values `Project.DataFields[].Values[]` instead of displaying them separately - New attribute `Project.LastChangeTimestamp` - New attribute `Project.CurrentStatus.CustomId` - New attribute `Project.DataFields[].CustomId` - New attribute `Project.Attachments[].CustomId` ## SetProjectData ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Data` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Draft/Data` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectdata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectdata/) - V2: [https://apidocs.powerclerk.com/#SetProjectData](https://apidocs.powerclerk.com/#b0e722b2-6a2c-4fbd-ab4c-b69047d2f025) ### Request - URL path should include /Draft to set draft data (i.e., non-admin usage) - Namespace has been removed - Data field date values must be in the format `yyyy-MM-dd` - Boolean values must be the format `true`/`false` - Multi-instance data fields use a list of values `DataFields[].Values[]` instead of referencing the index via `DataFields[].InstanceId` ### Response - Namespace has been removed - CalculatedFields has been removed - Data field date values return in the format `yyyy-MM-dd` instead of `MM/dd/yyyy` - Boolean values return `true`/`false` instead of `True`/`False` - `Project.Url.Value` has been moved to `Project.Url` - `Project.DataFields[].Instance` has been removed. Multi-instance data fields use a list of values `Project.DataFields[].Values[]` instead of displaying them separately - New attribute `Project.LastChangeTimestamp` - New attribute `Project.CurrentStatus.CustomId` - New attribute `Project.DataFields[].CustomId` - New attribute `Project.Attachments[].CustomId` ## SubmitProject ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Submit` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Draft/Submit` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/submitproject/](https://developers.cleanpower.com/application_process_automation/api-method-reference/submitproject/) - V2: [https://apidocs.powerclerk.com/#SubmitProject](https://apidocs.powerclerk.com/#b87d0d38-5ca0-44d9-8dbb-92c30ffd6d45) ### Request - No change ### Response - URL path should include /Draft to commit draft data to a project form - Namespace has been removed - `Project.Url.Value` has been moved to `Project.Url` - `Project.Status` has been moved to `Project.CurrentStatus.Name` - `Project.StatusTimestamp` has been moved to `Project.CurrentStatus.Timestamp` - New attribute `Project.CurrentStatus.StatusId` - New attribute `Project.CurrentStatus.CustomId` ## GetAllProjectData ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Data` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Data` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getallprojectdata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getallprojectdata/) - V2: [https://apidocs.powerclerk.com/#GetAllProjectData](https://apidocs.powerclerk.com/#c4e3757b-2632-4c49-8ee2-0f7be1d4ab94) ### Request - No change ### Response - Namespace has been removed - Data field date values return in the format `yyyy-MM-dd` instead of `MM/dd/yyyy` - Boolean values return `true`/`false` instead of `True`/`False` - `Project.Url.Value` has been moved to `Project.Url` - `Project.DataFields[].Instance` has been removed. Multi-instance data fields use a list of values `Project.DataFields[].Values[]` instead of displaying them separately - New attribute `Project.LastChangeTimestamp` - New attribute `Project.CurrentStatus.CustomId` - New attribute `Project.DataFields[].CustomId` - New attribute `Project.Attachments[].CustomId` ## GetProjectStatusHistory ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/StatusHistory` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/StatusHistory` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectstatushistory/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectstatushistory/) - V2: [https://apidocs.powerclerk.com/#GetProjectStatusHistory](https://apidocs.powerclerk.com/#86eace80-2859-4e15-a7df-dfba919c64fa) ### Request - The `version` query parameter is no longer used ### Response - Namespace has been removed - `Status.ReportAsLastChangedBy` has been moved to `Status.ReportAsChangedBy` ## SetProjectStatus ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Status/{{StatusId}}` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Status/{{StatusId}}` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectstatus/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectstatus/) - V2: [https://apidocs.powerclerk.com/#SetProjectStatus](https://apidocs.powerclerk.com/#3746ffc1-f8b1-49aa-ab8a-52e3dd4487f5) ### Request - AutoCommunication query parameter added ### Response - Namespace has been removed ## GetAttachmentMetadata ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Attachments/{{AttachmentId}}/Metadata` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Attachments/{{AttachmentId}}/Metadata` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getattachmentmetadata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getattachmentmetadata/) - V2: [https://apidocs.powerclerk.com/#GetAttachmentMetadata](https://apidocs.powerclerk.com/#12edaa68-3a2f-4491-93bc-b7e7f57981d0) ### Request - No change ### Response - Namespace has been removed - `AttachmentMetadata.ApprovalStatus` has been moved to `AttachmentMetadata.AttachmentStatus` - `AttachmentMetadata.UploadedByEmailAddress` has been moved to `AttachmentMetadata.Uploader.Email` - `AttachmentMetadata.UploadedById` has been removed - New attribute `AttachmentMetadata.Uploader.Name` ## SetAttachmentMetadata ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}/Projects/{{ProjectId}}/Attachments/{{AttachmentId}}/Metadata` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Attachments/{{AttachmentId}}/Metadata` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setattachmentmetadata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setattachmentmetadata/) - V2: [https://apidocs.powerclerk.com/#SetAttachmentMetadata](https://apidocs.powerclerk.com/#0176d689-4b2c-42de-b862-9a397ae26d8c) ### Request - Namespace has been removed ### Response - Namespace has been removed - `AttachmentMetadata.ApprovalStatus` has been moved to `AttachmentMetadata.AttachmentStatus` - `AttachmentMetadata.UploadedByEmailAddress` has been moved to `AttachmentMetadata.Uploader.Email` - `AttachmentMetadata.UploadedById` has been removed - New attribute `AttachmentMetadata.Uploader.Name` ## SetProjectOwner ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Owner` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Owner` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectowner/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectowner/) - V2: [https://apidocs.powerclerk.com/#SetProjectOwner](https://apidocs.powerclerk.com/#b5cbabb1-46ef-4861-a978-bcffc17c0f10) ### Request - Namespace has been removed ### Response - Namespace has been removed ## GetInquiryThreads ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/InquiryThreads` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/InquiryThreads` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getinquirythreads/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getinquirythreads/) - V2: [https://apidocs.powerclerk.com/#GetInquiryThreads](https://apidocs.powerclerk.com/#7f445cc0-956e-4a32-8c5a-971ad935f8c4) ### Request - No change ### Response - Namespace has been removed - Data field date values return in the format `yyyy-MM-ddTHH:mm:sszz` instead of `MM/dd/yyyy` ## GetNotesInInquiryThread ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/Notes` - V2: `/services/v2/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/Notes` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getnotesininquirythread/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getnotesininquirythread/) - V2: [https://apidocs.powerclerk.com/#GetNotesInInquiryThread](https://apidocs.powerclerk.com/#dd79db6c-687c-439b-b236-b7e96c69a9ce) ### Request - No change ### Response - Namespace has been removed - IsAdmin is changed to a boolean value instead of a string - Data field date values return in the format `yyyy-MM-ddTHH:mm:sszz` instead of `MM/dd/yyyy` ## SetInquiryNote ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/SetInquiryNote` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/SetInquiryNote` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirynote/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirynote/) - V2: [https://apidocs.powerclerk.com/#SetInquiryNote](https://apidocs.powerclerk.com/#e03d6f0c-2aeb-402b-a982-e8afb31e685c) ### Request - Namespace has been removed ### Response - Namespace has been removed - IsAdmin is changed to a boolean value instead of a string - Data field date values return in the format `yyyy-MM-ddTHH:mm:sszz` instead of `MM/dd/yyyy` ## SetInquiryThreadStatus ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/Status/{{ThreadStatus}}` - V2: `/services/v2/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/Status/{{ThreadStatus}}` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirythreadstatus/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirythreadstatus/) - V2: [https://apidocs.powerclerk.com/#SetInquiryThreadStatus](https://apidocs.powerclerk.com/#2d3ebdc2-fabd-470e-8244-376ba8eef331) ### Request - Namespace has been removed ### Response - Namespace has been removed - Data field date values return in the format `yyyy-MM-ddTHH:mm:sszz` instead of `MM/dd/yyyy` ## SetInquiryThreadExternalId ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/ExternalId/{{ExternalThreadId}}` - V2: `/services/v2/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/ExternalId/{{ExternalThreadId}}` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirythreadexternalid/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirythreadexternalid/) - V2: [https://apidocs.powerclerk.com/#SetInquiryThreadExternalId](https://apidocs.powerclerk.com/#91c765c5-9cd8-4b1a-859e-23d614cf44b4) ### Request - Namespace has been removed ### Response - Namespace has been removed ## GetPrograms ### URL Paths - V1: `/Services.svc/v1/Programs` - V2: `/services/v2/Programs` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprograms/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprograms/) - V2: [https://apidocs.powerclerk.com/#GetPrograms](https://apidocs.powerclerk.com/#95448fb0-e26b-48b4-a89d-ff5fd99f985a) ### Request - No change ### Response - Namespace has been removed ## GetStatusList ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/StatusList` - V2: `/services/v2/Programs/{{ProgramId}}/StatusList` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getstatuslist/ ](https://developers.cleanpower.com/application_process_automation/api-method-reference/getstatuslist/ ) - V2: [https://apidocs.powerclerk.com/#GetStatusList](https://apidocs.powerclerk.com/#380fb8bc-b4b6-4c45-92a0-19a931a9f65f) ### Request - No change ### Response - Namespace has been removed ## GetForms ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Forms` - V2: `/services/v2/Programs/{{ProgramId}}/Forms` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getforms/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getforms/) - V2: [https://apidocs.powerclerk.com/#GetForms](https://apidocs.powerclerk.com/#12126375-3501-4444-a1e1-7248585c28a0) ### Request - No change ### Response - Namespace has been removed - `Form.Title` has been renamed to `Form.Name` ## GetFormSchema ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Forms/{{FormId}}/Schema` - V2: `/services/v2/Programs/{{ProgramId}}/Forms/{{FormId}}/Schema` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getformschema/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getformschema/) - V2: [https://apidocs.powerclerk.com/#GetFormSchema](https://apidocs.powerclerk.com/#090c0a05-fcd1-4c63-81c9-afed44506ca1) ### Request - No change ### Response - Namespace has been removed - `LeadsToStatus` is no longer supported and has been removed - `FormSchema.Title` has been renamed to `FormSchema.Name` to better match the descriptor in the UI - `Status.Deleted` has been removed. - `DataFieldSchema.Min` type has moved to `DataFieldSchema.Properties`, and will only be present if a value is set - `DataFieldSchema.Max` type has moved to `DataFieldSchema.Properties` and will only be present if a value is set - `DataFieldSchema.HierarchyLevel` will now only be present if a value is set (i.e. when the data field is part of a custom list key column) - `DataFieldSchema.Choices` will now only be present if values are set (i.e. when the `Type` is "Choice"



Bing

PowerClerk API V2

https://apidocs.powerclerk.com/

The PowerClerk® API allows programmatic access to basic PowerClerk functions, including project creation, editing and submission of project data, as well as upload, download and management of attachments. These API methods mirror the functionality of the PowerClerk web interface for working with projects. You can download and use this documentation with Postman. Copy the collection and default environment with the "Run in Postman" button at the top-right of this page, and set your own environment variables to test the requests. For detailed instructions, watch [this video](https://cleanpower.wistia.com/medias/4qdk47z195). - **Note**: the legacy API is end-of-life and will be removed from service on April 3, 2026. - After deprecation, the legacy API will no longer be available. Your API client will need to migrate to this PowerClerk API V2 before this date - If your application still uses the legacy API, plan your upgrade with the migration documentation below. # PowerClerk API Base URLs The _**PowerClerkURL**_ variable refers to a PowerClerk API endpoint base URL. Valid values are in the table below. | **Environment** | **PowerClerkURL** | | --- | --- | | **PCI Trial** | [https://api.cleanpowerdemo.com/PCITrial](https://api.cleanpowerdemo.com/PCITrial) | | **Production** | [https://api.powerclerk.com](https://api.powerclerk.com) | # Authentication & Access ## API Key The _**APIKey**_ variable is required for every API request and sent in the "X-ApiKey" header. Each user with authorized access to the PowerClerk API will be associated to an API key that must be sent with every request. API keys are issued and administered by the Clean Power Research Customer Success team. Generally, one API key with limited throughput is issued for customers with their integration bundle. To request a new API key or access to an existing key, use the Submit API Key Request on the [PowerClerk Ticket System](https://support.powerclerk.com/MvcProjects/ProjectList?ProgramId=ZEZ0C8KV4YH5). ## Authentication The V2 API requires bearer authentication using the [OAuth 2.0 Client Credentials](https://datatracker.ietf.org/doc/html/rfc6749#section-4.4) flow. When an API key is associated with a user or service account, the PowerClerk My Account page will have an option create _**ClientId**_ and _**ClientSecret**_ variables. Credentials can be used on any program the authenticated user can access. Access to the API for users with SSO need to have a permission added to the PowerClerk IDP configuration, which can be included in their API Key support request. A user with both a PowerClerk login and SSO to access separate programs would need to create separate client credentials for PowerClerk and each IDP. Calls to the Token API with the Client Id and Secret will generate access tokens valid for 60 minutes. While valid, the access token must be included in the Authorization header as a Bearer token for all API calls. | **Environment** | **TokenURL** | | --- | --- | | **PCI Trial** | [https://identity.cleanpowerdemo.com/PCITrial/connect/token](https://identity.cleanpowerdemo.com/PCITrial/connect/token) | | **Production** | [https://identity.powerclerk.com/connect/token](https://identity.powerclerk.com/connect/token) | ## Accounts with Multi-Factor Authentication If Multi-Factor Authentication (MFA) is enabled on for the API user, one of the two MFA header parameters must be included on every API request. Certain APIs may include a reveal_sensitive_data parameter which, if set to true, requires MFA. | **Header Parameters** | **Description** | | --- | --- | | **Mfa-One-Time-Password** | Time-based-One-Time-Password (TOTP) calculated using the TOTP algorithm and valid for 30 seconds. Set with the _**MFAOneTimePassword**_ variable. | | **Mfa-Session-Token** | MFA Session Token (MST) set up on PowerClerk in My Account > Manage API Credentials and valid up to 24 hours. Set with the _**MFASessionToken**_ variable. | # Operation Rate Limit API Keys are limited to a rate of **60 operations per minute**. Usage that exceeds this rate significantly will result in the calls being answered with a failure HTTP status code of 429 – “Too Many Requests” until enough time has passed for additional requests to be handled. # Custom Ids The public Ids that PowerClerk uses to identify all objects in a program are automatically generated, and make it possible to uniquely identify an object regardless of changes to the data field name or UI label. Public Ids, however, are unique in each program and test environment for all data fields, attachments, forms and statuses. API clients using public Ids need to re-map public Ids when calling different programs and test environments. A simpler solution is to set custom Ids for any data fields, attachments, forms and statuses used in the API. If a custom Id has been set, that can be used in place of the automatically generated public Id. A custom Id can be defined by a program designer with the allowed permission and remain consistent when moving between a sandbox to production or a test environment. Custom Ids are only unique within their object type, i.e. an attachment and a data field can have the same custom Id. ## Project Numbers on URLs PowerClerk assigns a Project Number when a project is first submitted. The Project Number can be used in place of the Project Id on the API URL. Note that Project Ids must still be used for new projects on API calls between the CreateProject call (where the Project Id is assigned) and the first SubmitProject call (where the Project Number is assigned.) # API Migration from Legacy to V2 ## General Changes ### Authentication - V1: Basic authentication only - V2: OAuth 2.0 client credentials authentication only ### Payload Content Type - V1: XML with namespace - V2: XML without namespace or JSON (default) To use XML on V2, use Accept and Content-Type `application/xml` headers. Each request has both "Success" for the default JSON and "Success (XML)" as one of the examples. ## GetProjects ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects` - V2: `/services/v2/Programs/{{ProgramId}}/Projects` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojects/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojects/) - V2: [https://apidocs.powerclerk.com/#GetProjects](https://apidocs.powerclerk.com/#9f28edab-571a-4f84-9b1b-5f2aa0d01c0c) ### Request - The format for the `changed_since` `datetime` query parameter more strictly adheres to the format documented and will reject formats previously accepted - The request no longer recognizes the `version` query parameter ### Response - Namespace has been removed - `Project.OwnerEmailAddress` has been moved to `Project.ProjectOwner.Email` - `Project.ProjectOwner.Name` has been added - `Project.Status` has been moved to `Project.CurrentStatus.Name` - `Project.StatusCustomId` has been moved to `Project.CurrentStatus.CustomId` - `Project.StatusPublicId` has been moved to `Project.CurrentStatus.PublicId` - `Project.StatusTimestamp` has been moved to `Project.CurrentStatus.Timestamp` ## GetProjectByNumber ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/ByNumber` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/ByNumber` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectsbynumber/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectsbynumber/) - V2: [https://apidocs.powerclerk.com/#GetProjectByNumber](https://apidocs.powerclerk.com/#0e74f1a9-a18c-4777-91b6-7a712656fb23) ### Request - Namespace has been removed ### Response - Namespace has been removed - `Project.OwnerEmailAddress` has been moved to `Project.ProjectOwner.Email` - `Project.ProjectOwner.Name` has been added - `Project.Status` has been moved to `Project.CurrentStatus.Name` - `Project.StatusCustomId` has been moved to `Project.CurrentStatus.CustomId` - `Project.StatusPublicId` has been moved to `Project.CurrentStatus.PublicId` - `Project.StatusTimestamp` has been moved to `Project.CurrentStatus.Timestamp` ## GetProjectsByData ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/ByData` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/ByData` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectsbydata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectsbydata/) - V2: [https://apidocs.powerclerk.com/#GetProjectsByData](https://apidocs.powerclerk.com/#ebd754cc-5d1a-4a4b-8038-e915ec3c052a) ### Request - Namespace has been removed - `Field.Content` for data fields of type `DateTime` must be in `yyyy-MM-dd` format ### Response - Namespace has been removed - `Project.OwnerEmailAddress` has been moved to `Project.ProjectOwner.Email` - `Project.ProjectOwner.Name` has been added - `Project.Status` has been moved to `Project.CurrentStatus.Name` - `Project.StatusCustomId` has been moved to `Project.CurrentStatus.CustomId` - `Project.StatusPublicId` has been moved to `Project.CurrentStatus.PublicId` - `Project.StatusTimestamp` has been moved to `Project.CurrentStatus.Timestamp` ## CreateNewProject ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/NewProject` - V2: `/services/v2/Programs/{{ProgramId}}/NewProject` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/createnewproject/](https://developers.cleanpower.com/application_process_automation/api-method-reference/createnewproject/) - V2: [https://apidocs.powerclerk.com/#CreateNewProject](https://apidocs.powerclerk.com/#2811bdc8-0e93-4d96-97c1-251bc80729d6) ### Request - No change ### Response - `Project.Url.Value` has been moved to `Project.Url` - `Project.Status` has been moved to `Project.CurrentStatus.Name` - `Project.StatusTimestamp` has been moved to `Project.CurrentStatus.Timestamp` - `Project.Forms[].Title` has been moved to `Project.Forms[].Name` - New attribute `Project.ProjectNumber` - New attribute `Project.CurrentStatus.StatusId` - New attribute `Project.CurrentStatus.CustomId` - Removed deprecated attribute `Project.Forms[].AvailableInStatuses[].Deleted` - Removed deprecated attribute `Project.Forms[].LeadsToStatus` ## GetProjectData ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Data` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Draft/Data` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectdata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectdata/) - V2: [https://apidocs.powerclerk.com/#GetProjectData](https://apidocs.powerclerk.com/#815ba741-cbbf-41d1-95a2-473e1eb706ab) ### Request - URL path should include /Draft to access draft data ### Response - Namespace has been removed - Data field date values return in the format `yyyy-MM-dd` instead of `MM/dd/yyyy` - Boolean values return `true`/`false` instead of `True`/`False` - `Project.Url.Value` has been moved to `Project.Url` - `Project.DataFields[].Instance` has been removed. Multi-instance data fields use a list of values `Project.DataFields[].Values[]` instead of displaying them separately - New attribute `Project.LastChangeTimestamp` - New attribute `Project.CurrentStatus.CustomId` - New attribute `Project.DataFields[].CustomId` - New attribute `Project.Attachments[].CustomId` ## SetProjectData ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Data` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Draft/Data` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectdata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectdata/) - V2: [https://apidocs.powerclerk.com/#SetProjectData](https://apidocs.powerclerk.com/#b0e722b2-6a2c-4fbd-ab4c-b69047d2f025) ### Request - URL path should include /Draft to set draft data (i.e., non-admin usage) - Namespace has been removed - Data field date values must be in the format `yyyy-MM-dd` - Boolean values must be the format `true`/`false` - Multi-instance data fields use a list of values `DataFields[].Values[]` instead of referencing the index via `DataFields[].InstanceId` ### Response - Namespace has been removed - CalculatedFields has been removed - Data field date values return in the format `yyyy-MM-dd` instead of `MM/dd/yyyy` - Boolean values return `true`/`false` instead of `True`/`False` - `Project.Url.Value` has been moved to `Project.Url` - `Project.DataFields[].Instance` has been removed. Multi-instance data fields use a list of values `Project.DataFields[].Values[]` instead of displaying them separately - New attribute `Project.LastChangeTimestamp` - New attribute `Project.CurrentStatus.CustomId` - New attribute `Project.DataFields[].CustomId` - New attribute `Project.Attachments[].CustomId` ## SubmitProject ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Submit` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Draft/Submit` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/submitproject/](https://developers.cleanpower.com/application_process_automation/api-method-reference/submitproject/) - V2: [https://apidocs.powerclerk.com/#SubmitProject](https://apidocs.powerclerk.com/#b87d0d38-5ca0-44d9-8dbb-92c30ffd6d45) ### Request - No change ### Response - URL path should include /Draft to commit draft data to a project form - Namespace has been removed - `Project.Url.Value` has been moved to `Project.Url` - `Project.Status` has been moved to `Project.CurrentStatus.Name` - `Project.StatusTimestamp` has been moved to `Project.CurrentStatus.Timestamp` - New attribute `Project.CurrentStatus.StatusId` - New attribute `Project.CurrentStatus.CustomId` ## GetAllProjectData ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Data` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Data` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getallprojectdata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getallprojectdata/) - V2: [https://apidocs.powerclerk.com/#GetAllProjectData](https://apidocs.powerclerk.com/#c4e3757b-2632-4c49-8ee2-0f7be1d4ab94) ### Request - No change ### Response - Namespace has been removed - Data field date values return in the format `yyyy-MM-dd` instead of `MM/dd/yyyy` - Boolean values return `true`/`false` instead of `True`/`False` - `Project.Url.Value` has been moved to `Project.Url` - `Project.DataFields[].Instance` has been removed. Multi-instance data fields use a list of values `Project.DataFields[].Values[]` instead of displaying them separately - New attribute `Project.LastChangeTimestamp` - New attribute `Project.CurrentStatus.CustomId` - New attribute `Project.DataFields[].CustomId` - New attribute `Project.Attachments[].CustomId` ## GetProjectStatusHistory ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/StatusHistory` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/StatusHistory` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectstatushistory/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectstatushistory/) - V2: [https://apidocs.powerclerk.com/#GetProjectStatusHistory](https://apidocs.powerclerk.com/#86eace80-2859-4e15-a7df-dfba919c64fa) ### Request - The `version` query parameter is no longer used ### Response - Namespace has been removed - `Status.ReportAsLastChangedBy` has been moved to `Status.ReportAsChangedBy` ## SetProjectStatus ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Status/{{StatusId}}` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Status/{{StatusId}}` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectstatus/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectstatus/) - V2: [https://apidocs.powerclerk.com/#SetProjectStatus](https://apidocs.powerclerk.com/#3746ffc1-f8b1-49aa-ab8a-52e3dd4487f5) ### Request - AutoCommunication query parameter added ### Response - Namespace has been removed ## GetAttachmentMetadata ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Attachments/{{AttachmentId}}/Metadata` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Attachments/{{AttachmentId}}/Metadata` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getattachmentmetadata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getattachmentmetadata/) - V2: [https://apidocs.powerclerk.com/#GetAttachmentMetadata](https://apidocs.powerclerk.com/#12edaa68-3a2f-4491-93bc-b7e7f57981d0) ### Request - No change ### Response - Namespace has been removed - `AttachmentMetadata.ApprovalStatus` has been moved to `AttachmentMetadata.AttachmentStatus` - `AttachmentMetadata.UploadedByEmailAddress` has been moved to `AttachmentMetadata.Uploader.Email` - `AttachmentMetadata.UploadedById` has been removed - New attribute `AttachmentMetadata.Uploader.Name` ## SetAttachmentMetadata ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}/Projects/{{ProjectId}}/Attachments/{{AttachmentId}}/Metadata` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Attachments/{{AttachmentId}}/Metadata` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setattachmentmetadata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setattachmentmetadata/) - V2: [https://apidocs.powerclerk.com/#SetAttachmentMetadata](https://apidocs.powerclerk.com/#0176d689-4b2c-42de-b862-9a397ae26d8c) ### Request - Namespace has been removed ### Response - Namespace has been removed - `AttachmentMetadata.ApprovalStatus` has been moved to `AttachmentMetadata.AttachmentStatus` - `AttachmentMetadata.UploadedByEmailAddress` has been moved to `AttachmentMetadata.Uploader.Email` - `AttachmentMetadata.UploadedById` has been removed - New attribute `AttachmentMetadata.Uploader.Name` ## SetProjectOwner ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Owner` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Owner` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectowner/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectowner/) - V2: [https://apidocs.powerclerk.com/#SetProjectOwner](https://apidocs.powerclerk.com/#b5cbabb1-46ef-4861-a978-bcffc17c0f10) ### Request - Namespace has been removed ### Response - Namespace has been removed ## GetInquiryThreads ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/InquiryThreads` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/InquiryThreads` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getinquirythreads/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getinquirythreads/) - V2: [https://apidocs.powerclerk.com/#GetInquiryThreads](https://apidocs.powerclerk.com/#7f445cc0-956e-4a32-8c5a-971ad935f8c4) ### Request - No change ### Response - Namespace has been removed - Data field date values return in the format `yyyy-MM-ddTHH:mm:sszz` instead of `MM/dd/yyyy` ## GetNotesInInquiryThread ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/Notes` - V2: `/services/v2/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/Notes` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getnotesininquirythread/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getnotesininquirythread/) - V2: [https://apidocs.powerclerk.com/#GetNotesInInquiryThread](https://apidocs.powerclerk.com/#dd79db6c-687c-439b-b236-b7e96c69a9ce) ### Request - No change ### Response - Namespace has been removed - IsAdmin is changed to a boolean value instead of a string - Data field date values return in the format `yyyy-MM-ddTHH:mm:sszz` instead of `MM/dd/yyyy` ## SetInquiryNote ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/SetInquiryNote` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/SetInquiryNote` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirynote/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirynote/) - V2: [https://apidocs.powerclerk.com/#SetInquiryNote](https://apidocs.powerclerk.com/#e03d6f0c-2aeb-402b-a982-e8afb31e685c) ### Request - Namespace has been removed ### Response - Namespace has been removed - IsAdmin is changed to a boolean value instead of a string - Data field date values return in the format `yyyy-MM-ddTHH:mm:sszz` instead of `MM/dd/yyyy` ## SetInquiryThreadStatus ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/Status/{{ThreadStatus}}` - V2: `/services/v2/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/Status/{{ThreadStatus}}` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirythreadstatus/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirythreadstatus/) - V2: [https://apidocs.powerclerk.com/#SetInquiryThreadStatus](https://apidocs.powerclerk.com/#2d3ebdc2-fabd-470e-8244-376ba8eef331) ### Request - Namespace has been removed ### Response - Namespace has been removed - Data field date values return in the format `yyyy-MM-ddTHH:mm:sszz` instead of `MM/dd/yyyy` ## SetInquiryThreadExternalId ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/ExternalId/{{ExternalThreadId}}` - V2: `/services/v2/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/ExternalId/{{ExternalThreadId}}` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirythreadexternalid/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirythreadexternalid/) - V2: [https://apidocs.powerclerk.com/#SetInquiryThreadExternalId](https://apidocs.powerclerk.com/#91c765c5-9cd8-4b1a-859e-23d614cf44b4) ### Request - Namespace has been removed ### Response - Namespace has been removed ## GetPrograms ### URL Paths - V1: `/Services.svc/v1/Programs` - V2: `/services/v2/Programs` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprograms/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprograms/) - V2: [https://apidocs.powerclerk.com/#GetPrograms](https://apidocs.powerclerk.com/#95448fb0-e26b-48b4-a89d-ff5fd99f985a) ### Request - No change ### Response - Namespace has been removed ## GetStatusList ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/StatusList` - V2: `/services/v2/Programs/{{ProgramId}}/StatusList` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getstatuslist/ ](https://developers.cleanpower.com/application_process_automation/api-method-reference/getstatuslist/ ) - V2: [https://apidocs.powerclerk.com/#GetStatusList](https://apidocs.powerclerk.com/#380fb8bc-b4b6-4c45-92a0-19a931a9f65f) ### Request - No change ### Response - Namespace has been removed ## GetForms ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Forms` - V2: `/services/v2/Programs/{{ProgramId}}/Forms` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getforms/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getforms/) - V2: [https://apidocs.powerclerk.com/#GetForms](https://apidocs.powerclerk.com/#12126375-3501-4444-a1e1-7248585c28a0) ### Request - No change ### Response - Namespace has been removed - `Form.Title` has been renamed to `Form.Name` ## GetFormSchema ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Forms/{{FormId}}/Schema` - V2: `/services/v2/Programs/{{ProgramId}}/Forms/{{FormId}}/Schema` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getformschema/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getformschema/) - V2: [https://apidocs.powerclerk.com/#GetFormSchema](https://apidocs.powerclerk.com/#090c0a05-fcd1-4c63-81c9-afed44506ca1) ### Request - No change ### Response - Namespace has been removed - `LeadsToStatus` is no longer supported and has been removed - `FormSchema.Title` has been renamed to `FormSchema.Name` to better match the descriptor in the UI - `Status.Deleted` has been removed. - `DataFieldSchema.Min` type has moved to `DataFieldSchema.Properties`, and will only be present if a value is set - `DataFieldSchema.Max` type has moved to `DataFieldSchema.Properties` and will only be present if a value is set - `DataFieldSchema.HierarchyLevel` will now only be present if a value is set (i.e. when the data field is part of a custom list key column) - `DataFieldSchema.Choices` will now only be present if values are set (i.e. when the `Type` is "Choice"



DuckDuckGo

https://apidocs.powerclerk.com/

PowerClerk API V2

The PowerClerk® API allows programmatic access to basic PowerClerk functions, including project creation, editing and submission of project data, as well as upload, download and management of attachments. These API methods mirror the functionality of the PowerClerk web interface for working with projects. You can download and use this documentation with Postman. Copy the collection and default environment with the "Run in Postman" button at the top-right of this page, and set your own environment variables to test the requests. For detailed instructions, watch [this video](https://cleanpower.wistia.com/medias/4qdk47z195). - **Note**: the legacy API is end-of-life and will be removed from service on April 3, 2026. - After deprecation, the legacy API will no longer be available. Your API client will need to migrate to this PowerClerk API V2 before this date - If your application still uses the legacy API, plan your upgrade with the migration documentation below. # PowerClerk API Base URLs The _**PowerClerkURL**_ variable refers to a PowerClerk API endpoint base URL. Valid values are in the table below. | **Environment** | **PowerClerkURL** | | --- | --- | | **PCI Trial** | [https://api.cleanpowerdemo.com/PCITrial](https://api.cleanpowerdemo.com/PCITrial) | | **Production** | [https://api.powerclerk.com](https://api.powerclerk.com) | # Authentication & Access ## API Key The _**APIKey**_ variable is required for every API request and sent in the "X-ApiKey" header. Each user with authorized access to the PowerClerk API will be associated to an API key that must be sent with every request. API keys are issued and administered by the Clean Power Research Customer Success team. Generally, one API key with limited throughput is issued for customers with their integration bundle. To request a new API key or access to an existing key, use the Submit API Key Request on the [PowerClerk Ticket System](https://support.powerclerk.com/MvcProjects/ProjectList?ProgramId=ZEZ0C8KV4YH5). ## Authentication The V2 API requires bearer authentication using the [OAuth 2.0 Client Credentials](https://datatracker.ietf.org/doc/html/rfc6749#section-4.4) flow. When an API key is associated with a user or service account, the PowerClerk My Account page will have an option create _**ClientId**_ and _**ClientSecret**_ variables. Credentials can be used on any program the authenticated user can access. Access to the API for users with SSO need to have a permission added to the PowerClerk IDP configuration, which can be included in their API Key support request. A user with both a PowerClerk login and SSO to access separate programs would need to create separate client credentials for PowerClerk and each IDP. Calls to the Token API with the Client Id and Secret will generate access tokens valid for 60 minutes. While valid, the access token must be included in the Authorization header as a Bearer token for all API calls. | **Environment** | **TokenURL** | | --- | --- | | **PCI Trial** | [https://identity.cleanpowerdemo.com/PCITrial/connect/token](https://identity.cleanpowerdemo.com/PCITrial/connect/token) | | **Production** | [https://identity.powerclerk.com/connect/token](https://identity.powerclerk.com/connect/token) | ## Accounts with Multi-Factor Authentication If Multi-Factor Authentication (MFA) is enabled on for the API user, one of the two MFA header parameters must be included on every API request. Certain APIs may include a reveal_sensitive_data parameter which, if set to true, requires MFA. | **Header Parameters** | **Description** | | --- | --- | | **Mfa-One-Time-Password** | Time-based-One-Time-Password (TOTP) calculated using the TOTP algorithm and valid for 30 seconds. Set with the _**MFAOneTimePassword**_ variable. | | **Mfa-Session-Token** | MFA Session Token (MST) set up on PowerClerk in My Account > Manage API Credentials and valid up to 24 hours. Set with the _**MFASessionToken**_ variable. | # Operation Rate Limit API Keys are limited to a rate of **60 operations per minute**. Usage that exceeds this rate significantly will result in the calls being answered with a failure HTTP status code of 429 – “Too Many Requests” until enough time has passed for additional requests to be handled. # Custom Ids The public Ids that PowerClerk uses to identify all objects in a program are automatically generated, and make it possible to uniquely identify an object regardless of changes to the data field name or UI label. Public Ids, however, are unique in each program and test environment for all data fields, attachments, forms and statuses. API clients using public Ids need to re-map public Ids when calling different programs and test environments. A simpler solution is to set custom Ids for any data fields, attachments, forms and statuses used in the API. If a custom Id has been set, that can be used in place of the automatically generated public Id. A custom Id can be defined by a program designer with the allowed permission and remain consistent when moving between a sandbox to production or a test environment. Custom Ids are only unique within their object type, i.e. an attachment and a data field can have the same custom Id. ## Project Numbers on URLs PowerClerk assigns a Project Number when a project is first submitted. The Project Number can be used in place of the Project Id on the API URL. Note that Project Ids must still be used for new projects on API calls between the CreateProject call (where the Project Id is assigned) and the first SubmitProject call (where the Project Number is assigned.) # API Migration from Legacy to V2 ## General Changes ### Authentication - V1: Basic authentication only - V2: OAuth 2.0 client credentials authentication only ### Payload Content Type - V1: XML with namespace - V2: XML without namespace or JSON (default) To use XML on V2, use Accept and Content-Type `application/xml` headers. Each request has both "Success" for the default JSON and "Success (XML)" as one of the examples. ## GetProjects ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects` - V2: `/services/v2/Programs/{{ProgramId}}/Projects` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojects/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojects/) - V2: [https://apidocs.powerclerk.com/#GetProjects](https://apidocs.powerclerk.com/#9f28edab-571a-4f84-9b1b-5f2aa0d01c0c) ### Request - The format for the `changed_since` `datetime` query parameter more strictly adheres to the format documented and will reject formats previously accepted - The request no longer recognizes the `version` query parameter ### Response - Namespace has been removed - `Project.OwnerEmailAddress` has been moved to `Project.ProjectOwner.Email` - `Project.ProjectOwner.Name` has been added - `Project.Status` has been moved to `Project.CurrentStatus.Name` - `Project.StatusCustomId` has been moved to `Project.CurrentStatus.CustomId` - `Project.StatusPublicId` has been moved to `Project.CurrentStatus.PublicId` - `Project.StatusTimestamp` has been moved to `Project.CurrentStatus.Timestamp` ## GetProjectByNumber ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/ByNumber` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/ByNumber` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectsbynumber/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectsbynumber/) - V2: [https://apidocs.powerclerk.com/#GetProjectByNumber](https://apidocs.powerclerk.com/#0e74f1a9-a18c-4777-91b6-7a712656fb23) ### Request - Namespace has been removed ### Response - Namespace has been removed - `Project.OwnerEmailAddress` has been moved to `Project.ProjectOwner.Email` - `Project.ProjectOwner.Name` has been added - `Project.Status` has been moved to `Project.CurrentStatus.Name` - `Project.StatusCustomId` has been moved to `Project.CurrentStatus.CustomId` - `Project.StatusPublicId` has been moved to `Project.CurrentStatus.PublicId` - `Project.StatusTimestamp` has been moved to `Project.CurrentStatus.Timestamp` ## GetProjectsByData ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/ByData` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/ByData` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectsbydata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectsbydata/) - V2: [https://apidocs.powerclerk.com/#GetProjectsByData](https://apidocs.powerclerk.com/#ebd754cc-5d1a-4a4b-8038-e915ec3c052a) ### Request - Namespace has been removed - `Field.Content` for data fields of type `DateTime` must be in `yyyy-MM-dd` format ### Response - Namespace has been removed - `Project.OwnerEmailAddress` has been moved to `Project.ProjectOwner.Email` - `Project.ProjectOwner.Name` has been added - `Project.Status` has been moved to `Project.CurrentStatus.Name` - `Project.StatusCustomId` has been moved to `Project.CurrentStatus.CustomId` - `Project.StatusPublicId` has been moved to `Project.CurrentStatus.PublicId` - `Project.StatusTimestamp` has been moved to `Project.CurrentStatus.Timestamp` ## CreateNewProject ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/NewProject` - V2: `/services/v2/Programs/{{ProgramId}}/NewProject` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/createnewproject/](https://developers.cleanpower.com/application_process_automation/api-method-reference/createnewproject/) - V2: [https://apidocs.powerclerk.com/#CreateNewProject](https://apidocs.powerclerk.com/#2811bdc8-0e93-4d96-97c1-251bc80729d6) ### Request - No change ### Response - `Project.Url.Value` has been moved to `Project.Url` - `Project.Status` has been moved to `Project.CurrentStatus.Name` - `Project.StatusTimestamp` has been moved to `Project.CurrentStatus.Timestamp` - `Project.Forms[].Title` has been moved to `Project.Forms[].Name` - New attribute `Project.ProjectNumber` - New attribute `Project.CurrentStatus.StatusId` - New attribute `Project.CurrentStatus.CustomId` - Removed deprecated attribute `Project.Forms[].AvailableInStatuses[].Deleted` - Removed deprecated attribute `Project.Forms[].LeadsToStatus` ## GetProjectData ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Data` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Draft/Data` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectdata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectdata/) - V2: [https://apidocs.powerclerk.com/#GetProjectData](https://apidocs.powerclerk.com/#815ba741-cbbf-41d1-95a2-473e1eb706ab) ### Request - URL path should include /Draft to access draft data ### Response - Namespace has been removed - Data field date values return in the format `yyyy-MM-dd` instead of `MM/dd/yyyy` - Boolean values return `true`/`false` instead of `True`/`False` - `Project.Url.Value` has been moved to `Project.Url` - `Project.DataFields[].Instance` has been removed. Multi-instance data fields use a list of values `Project.DataFields[].Values[]` instead of displaying them separately - New attribute `Project.LastChangeTimestamp` - New attribute `Project.CurrentStatus.CustomId` - New attribute `Project.DataFields[].CustomId` - New attribute `Project.Attachments[].CustomId` ## SetProjectData ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Data` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Draft/Data` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectdata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectdata/) - V2: [https://apidocs.powerclerk.com/#SetProjectData](https://apidocs.powerclerk.com/#b0e722b2-6a2c-4fbd-ab4c-b69047d2f025) ### Request - URL path should include /Draft to set draft data (i.e., non-admin usage) - Namespace has been removed - Data field date values must be in the format `yyyy-MM-dd` - Boolean values must be the format `true`/`false` - Multi-instance data fields use a list of values `DataFields[].Values[]` instead of referencing the index via `DataFields[].InstanceId` ### Response - Namespace has been removed - CalculatedFields has been removed - Data field date values return in the format `yyyy-MM-dd` instead of `MM/dd/yyyy` - Boolean values return `true`/`false` instead of `True`/`False` - `Project.Url.Value` has been moved to `Project.Url` - `Project.DataFields[].Instance` has been removed. Multi-instance data fields use a list of values `Project.DataFields[].Values[]` instead of displaying them separately - New attribute `Project.LastChangeTimestamp` - New attribute `Project.CurrentStatus.CustomId` - New attribute `Project.DataFields[].CustomId` - New attribute `Project.Attachments[].CustomId` ## SubmitProject ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Submit` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Forms/{{FormId}}/Draft/Submit` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/submitproject/](https://developers.cleanpower.com/application_process_automation/api-method-reference/submitproject/) - V2: [https://apidocs.powerclerk.com/#SubmitProject](https://apidocs.powerclerk.com/#b87d0d38-5ca0-44d9-8dbb-92c30ffd6d45) ### Request - No change ### Response - URL path should include /Draft to commit draft data to a project form - Namespace has been removed - `Project.Url.Value` has been moved to `Project.Url` - `Project.Status` has been moved to `Project.CurrentStatus.Name` - `Project.StatusTimestamp` has been moved to `Project.CurrentStatus.Timestamp` - New attribute `Project.CurrentStatus.StatusId` - New attribute `Project.CurrentStatus.CustomId` ## GetAllProjectData ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Data` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Data` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getallprojectdata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getallprojectdata/) - V2: [https://apidocs.powerclerk.com/#GetAllProjectData](https://apidocs.powerclerk.com/#c4e3757b-2632-4c49-8ee2-0f7be1d4ab94) ### Request - No change ### Response - Namespace has been removed - Data field date values return in the format `yyyy-MM-dd` instead of `MM/dd/yyyy` - Boolean values return `true`/`false` instead of `True`/`False` - `Project.Url.Value` has been moved to `Project.Url` - `Project.DataFields[].Instance` has been removed. Multi-instance data fields use a list of values `Project.DataFields[].Values[]` instead of displaying them separately - New attribute `Project.LastChangeTimestamp` - New attribute `Project.CurrentStatus.CustomId` - New attribute `Project.DataFields[].CustomId` - New attribute `Project.Attachments[].CustomId` ## GetProjectStatusHistory ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/StatusHistory` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/StatusHistory` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectstatushistory/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprojectstatushistory/) - V2: [https://apidocs.powerclerk.com/#GetProjectStatusHistory](https://apidocs.powerclerk.com/#86eace80-2859-4e15-a7df-dfba919c64fa) ### Request - The `version` query parameter is no longer used ### Response - Namespace has been removed - `Status.ReportAsLastChangedBy` has been moved to `Status.ReportAsChangedBy` ## SetProjectStatus ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Status/{{StatusId}}` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Status/{{StatusId}}` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectstatus/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectstatus/) - V2: [https://apidocs.powerclerk.com/#SetProjectStatus](https://apidocs.powerclerk.com/#3746ffc1-f8b1-49aa-ab8a-52e3dd4487f5) ### Request - AutoCommunication query parameter added ### Response - Namespace has been removed ## GetAttachmentMetadata ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Attachments/{{AttachmentId}}/Metadata` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Attachments/{{AttachmentId}}/Metadata` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getattachmentmetadata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getattachmentmetadata/) - V2: [https://apidocs.powerclerk.com/#GetAttachmentMetadata](https://apidocs.powerclerk.com/#12edaa68-3a2f-4491-93bc-b7e7f57981d0) ### Request - No change ### Response - Namespace has been removed - `AttachmentMetadata.ApprovalStatus` has been moved to `AttachmentMetadata.AttachmentStatus` - `AttachmentMetadata.UploadedByEmailAddress` has been moved to `AttachmentMetadata.Uploader.Email` - `AttachmentMetadata.UploadedById` has been removed - New attribute `AttachmentMetadata.Uploader.Name` ## SetAttachmentMetadata ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}/Projects/{{ProjectId}}/Attachments/{{AttachmentId}}/Metadata` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Attachments/{{AttachmentId}}/Metadata` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setattachmentmetadata/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setattachmentmetadata/) - V2: [https://apidocs.powerclerk.com/#SetAttachmentMetadata](https://apidocs.powerclerk.com/#0176d689-4b2c-42de-b862-9a397ae26d8c) ### Request - Namespace has been removed ### Response - Namespace has been removed - `AttachmentMetadata.ApprovalStatus` has been moved to `AttachmentMetadata.AttachmentStatus` - `AttachmentMetadata.UploadedByEmailAddress` has been moved to `AttachmentMetadata.Uploader.Email` - `AttachmentMetadata.UploadedById` has been removed - New attribute `AttachmentMetadata.Uploader.Name` ## SetProjectOwner ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Owner` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/Owner` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectowner/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setprojectowner/) - V2: [https://apidocs.powerclerk.com/#SetProjectOwner](https://apidocs.powerclerk.com/#b5cbabb1-46ef-4861-a978-bcffc17c0f10) ### Request - Namespace has been removed ### Response - Namespace has been removed ## GetInquiryThreads ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/InquiryThreads` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/InquiryThreads` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getinquirythreads/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getinquirythreads/) - V2: [https://apidocs.powerclerk.com/#GetInquiryThreads](https://apidocs.powerclerk.com/#7f445cc0-956e-4a32-8c5a-971ad935f8c4) ### Request - No change ### Response - Namespace has been removed - Data field date values return in the format `yyyy-MM-ddTHH:mm:sszz` instead of `MM/dd/yyyy` ## GetNotesInInquiryThread ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/Notes` - V2: `/services/v2/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/Notes` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getnotesininquirythread/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getnotesininquirythread/) - V2: [https://apidocs.powerclerk.com/#GetNotesInInquiryThread](https://apidocs.powerclerk.com/#dd79db6c-687c-439b-b236-b7e96c69a9ce) ### Request - No change ### Response - Namespace has been removed - IsAdmin is changed to a boolean value instead of a string - Data field date values return in the format `yyyy-MM-ddTHH:mm:sszz` instead of `MM/dd/yyyy` ## SetInquiryNote ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Projects/{{ProjectId}}/SetInquiryNote` - V2: `/services/v2/Programs/{{ProgramId}}/Projects/{{ProjectId}}/SetInquiryNote` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirynote/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirynote/) - V2: [https://apidocs.powerclerk.com/#SetInquiryNote](https://apidocs.powerclerk.com/#e03d6f0c-2aeb-402b-a982-e8afb31e685c) ### Request - Namespace has been removed ### Response - Namespace has been removed - IsAdmin is changed to a boolean value instead of a string - Data field date values return in the format `yyyy-MM-ddTHH:mm:sszz` instead of `MM/dd/yyyy` ## SetInquiryThreadStatus ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/Status/{{ThreadStatus}}` - V2: `/services/v2/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/Status/{{ThreadStatus}}` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirythreadstatus/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirythreadstatus/) - V2: [https://apidocs.powerclerk.com/#SetInquiryThreadStatus](https://apidocs.powerclerk.com/#2d3ebdc2-fabd-470e-8244-376ba8eef331) ### Request - Namespace has been removed ### Response - Namespace has been removed - Data field date values return in the format `yyyy-MM-ddTHH:mm:sszz` instead of `MM/dd/yyyy` ## SetInquiryThreadExternalId ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/ExternalId/{{ExternalThreadId}}` - V2: `/services/v2/Programs/{{ProgramId}}/InquiryThreads/{{ThreadId}}/ExternalId/{{ExternalThreadId}}` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirythreadexternalid/](https://developers.cleanpower.com/application_process_automation/api-method-reference/setinquirythreadexternalid/) - V2: [https://apidocs.powerclerk.com/#SetInquiryThreadExternalId](https://apidocs.powerclerk.com/#91c765c5-9cd8-4b1a-859e-23d614cf44b4) ### Request - Namespace has been removed ### Response - Namespace has been removed ## GetPrograms ### URL Paths - V1: `/Services.svc/v1/Programs` - V2: `/services/v2/Programs` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getprograms/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getprograms/) - V2: [https://apidocs.powerclerk.com/#GetPrograms](https://apidocs.powerclerk.com/#95448fb0-e26b-48b4-a89d-ff5fd99f985a) ### Request - No change ### Response - Namespace has been removed ## GetStatusList ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/StatusList` - V2: `/services/v2/Programs/{{ProgramId}}/StatusList` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getstatuslist/ ](https://developers.cleanpower.com/application_process_automation/api-method-reference/getstatuslist/ ) - V2: [https://apidocs.powerclerk.com/#GetStatusList](https://apidocs.powerclerk.com/#380fb8bc-b4b6-4c45-92a0-19a931a9f65f) ### Request - No change ### Response - Namespace has been removed ## GetForms ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Forms` - V2: `/services/v2/Programs/{{ProgramId}}/Forms` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getforms/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getforms/) - V2: [https://apidocs.powerclerk.com/#GetForms](https://apidocs.powerclerk.com/#12126375-3501-4444-a1e1-7248585c28a0) ### Request - No change ### Response - Namespace has been removed - `Form.Title` has been renamed to `Form.Name` ## GetFormSchema ### URL Paths - V1: `/Services.svc/v1/Programs/{{ProgramId}}/Forms/{{FormId}}/Schema` - V2: `/services/v2/Programs/{{ProgramId}}/Forms/{{FormId}}/Schema` ### Documentation - V1: [https://developers.cleanpower.com/application_process_automation/api-method-reference/getformschema/](https://developers.cleanpower.com/application_process_automation/api-method-reference/getformschema/) - V2: [https://apidocs.powerclerk.com/#GetFormSchema](https://apidocs.powerclerk.com/#090c0a05-fcd1-4c63-81c9-afed44506ca1) ### Request - No change ### Response - Namespace has been removed - `LeadsToStatus` is no longer supported and has been removed - `FormSchema.Title` has been renamed to `FormSchema.Name` to better match the descriptor in the UI - `Status.Deleted` has been removed. - `DataFieldSchema.Min` type has moved to `DataFieldSchema.Properties`, and will only be present if a value is set - `DataFieldSchema.Max` type has moved to `DataFieldSchema.Properties` and will only be present if a value is set - `DataFieldSchema.HierarchyLevel` will now only be present if a value is set (i.e. when the data field is part of a custom list key column) - `DataFieldSchema.Choices` will now only be present if values are set (i.e. when the `Type` is "Choice"

  • General Meta Tags

    28
    • title
      PowerClerk API V2
    • charset
      utf-8
    • X-UA-Compatible
      IE=edge
    • viewport
      width=device-width,initial-scale=1
    • top-bar
      FFFFFF
  • Open Graph Meta Tags

    4
    • og:title
      PowerClerk API V2
    • og:description
      The PowerClerk® API allows programmatic access to basic PowerClerk functions, including project creation, editing and submission of project data, as well as upload, download and management of attachments. These API methods mirror the functionality of the PowerClerk web interface for working with projects. You can download and use this documentation with Postman. Copy the collection and default environment with the "Run in Postman" button at the top-right of this page, and set your own environment variables to test the requests. For detailed instructions, watch [this video](https://cleanpower.wistia.com/medias/4qdk47z195). - **Note**: the legacy API is end-of-life and will be removed from service on April 3, 2026. - After deprecation, the legacy API will no longer be available. Your API client will need to migrate to this PowerClerk API V2 before this date - If your application still uses the legacy API, plan your upgrade with the migration documentation below. # PowerClerk API Base ...
    • og:site_name
      PowerClerk API V2
    • og:url
      https://apidocs.powerclerk.com
  • Twitter Meta Tags

    6
    • twitter:title
      PowerClerk API V2
    • twitter:description
      The PowerClerk® API allows programmatic access to basic PowerClerk functions, including project creation, editing and submission of project data, as well as upload, download and management of attachments. These API methods mirror the functionality of the PowerClerk web interface for working with projects. You can download and use this documentation with Postman. Copy the collection and default environment with the "Run in Postman" button at the top-right of this page, and set your own environment variables to test the requests. For detailed instructions, watch [this video](https://cleanpower.wistia.com/medias/4qdk47z195). - **Note**: the legacy API is end-of-life and will be removed from service on April 3, 2026. - After deprecation, the legacy API will no longer be available. Your API client will need to migrate to this PowerClerk API V2 before this date - If your application still uses the legacy API, plan your upgrade with the migration documentation below. # PowerClerk API Base ...
    • twitter:card
      summary
    • twitter:domain
      https://apidocs.powerclerk.com
    • twitter:label1
      Last Update
  • Link Tags

    8
    • canonical
      https://apidocs.powerclerk.com/
    • preconnect
      https://apidocs.powerclerk.com/
    • preconnect
      https://documenter-assets.pstmn.io
    • prefetch
      https://apidocs.powerclerk.com/view/metadata/2s9Ye8hvvo
    • prefetch
      https://apidocs.powerclerk.com/api/collections/27632864/2s9Ye8hvvo?environment=27632864-bbd4779c-b359-4558-8b7e-849fe47a6496&segregateAuth=true&versionTag=latest