Retrieves a list of issues for the iTwin or project with the given ID. If the Prefer header is omitted, or set to "return=minimal", this only returns basic info about each issue--its ID, display name, type, subject, and whether it is in an Open, Closed, or Draft state. Setting the Prefer header to "return=representation" will return more data. Use the "Get Issue Details" endpoint to see full information about a particular issue.
Note that the 'iTwinId' query string parameter is required. It must be a valid project GUID to get issues from. Existing clients can continue to use the 'projectId' paramater as an alias for 'iTwinId'.
Permissions
To use this endpoint, the user is required to have the Forms View permission (Forms_ViewAccess) for the iTwin, or for some issues' associated form definitions if form definition security is specified. (Having any other level of Forms permission for an issue automatically grants the View permission as well for that issue. If a user does not have permission to view a particular issue, it will be silently excluded from the list.)
Authentication
Requires Authorization header with valid Bearer token for scope itwin-platform.
For more documentation on authorization and how to get access token visit OAUTH2 Authorization page.
Request parameters
The type of issue data to get. Omit to get all types.
The number of issues to get in each page. Max 50, which is also the default if this parameter is not included.
Parameter that enables continuing to the next page of the previous paged query. This must be passed exactly as it is in the response body's _links.next property. If this is specified and $top is omitted, the next page will be the same size as the previous page.
Required. The GUID of the iTwin or project to get issues for. (Note: projectId is also accepted as an alias for this parameter.)
If set, will only retrieve issues in the specified workflow state (Open, Closed, or Draft)
Request headers
Indicates a level of details in the response.
OAuth access token with itwin-platform scope
Setting to application/vnd.bentley.itwin-platform.v1+json is recommended.
Response 200 OK
OK
{ "issues": [{ "id": "00000000-0000-0000-0000-0000000000000", "displayName": "CLA-00001", "type": "Clash", "state": "Closed", "subject": "Colliding beams" }, { "id": "00000000-0000-0000-0000-0000000000001", "displayName": "RFI-00001", "type": "RFI", "state": "Open", "subject": "Which Material?" }], "_links": { "self": { "href": "https://api.bentley.com/issues/?projectId=30273027-1111-2222-3333-3d7d6b02dc46&$top=2" }, "next": { "href": "https://api.bentley.com/issues/?projectId=30273027-1111-2222-3333-3d7d6b02dc46&continuationToken=eyJ0b3A999990" } } }
Response 401 Unauthorized
This response indicates that request lacks valid authentication credentials. Access token might not been provided, issued by the wrong issuer, does not have required scopes or request headers were malformed.
{ "error": { "code": "HeaderNotFound", "message": "Header Authorization was not found in the request. Access denied." } }
Response 404 Not Found
This response indicates that the issue with the specified ID does not exist or is inaccessible to the user due to insufficient permissions. (For security reasons, the response will not differ between inaccessible and missing issues.)
{ "error": { "code": "ProjectNotFound", "message": "Requested project is not available.", "target": "projectId" } }
Response 422 Unprocessable Entity
This response indicates that there is a problem with the format of the URL. Most likely problem: The 'projectId' parameter is missing or not a valid GUID.
{ "error": { "code": "InvalidIssueRequest", "message": "Cannot retrieve issues.", "details": [{ "code": "MissingRequiredParameter", "message": "The 'projectId' query parameter must be provided.", "target": "projectId" }] } }
Response 429 Too many requests
This response indicates that the client sent more requests than allowed by this API for the current tier of the client.
{ "error": { "code": "RateLimitExceeded", "message": "The client sent more requests than allowed by this API for the current tier of the client." } }
Response headers
Number of seconds to wait until client is allowed to make more requests.
link
{ "type": "object", "properties": { "href": { "type": "string" } }, "additionalProperties": false }
Error
Contains error information.
One of a server-defined set of error codes.
The target of the error.
A human-readable representation of the error.
{ "type": "object", "required": [ "code", "message" ], "properties": { "code": { "type": "string", "description": "One of a server-defined set of error codes." }, "target": { "type": "string", "nullable": true, "description": "The target of the error." }, "message": { "type": "string", "description": "A human-readable representation of the error." } }, "description": "Contains error information.", "additionalProperties": true }
camera
Determines the number of degrees in the circular arc around the camera's position that is visible in the view. Either this or viewToWorldScale should be specified, but not both.
Determines the zoom level of the camera, i.e. how much to multiply 1 distance unit in the view by to get the actual distance in meters in the model. Either this or fieldOfView should be specified, but not both.
{ "type": "object", "nullable": true, "properties": { "up": { "$ref": "#/components/schemas/point3D" }, "direction": { "$ref": "#/components/schemas/point3D" }, "viewPoint": { "$ref": "#/components/schemas/point3D" }, "fieldOfView": { "type": "number", "nullable": true, "description": "Determines the number of degrees in the circular arc around the camera's position that is visible in the view. Either this or viewToWorldScale should be specified, but not both." }, "viewToWorldScale": { "type": "number", "nullable": true, "description": "Determines the zoom level of the camera, i.e. how much to multiply 1 distance unit in the view by to get the actual distance in meters in the model. Either this or fieldOfView should be specified, but not both." } }, "additionalProperties": false }
point3D
{ "type": "object", "nullable": true, "properties": { "x": { "type": "number" }, "y": { "type": "number" }, "z": { "type": "number" } }, "additionalProperties": false }
location
Origin info. The geographical location the issue pertains to.
The degrees latitude of the issue's location. North: positive, south: negative.
The geographical elevation above/below sea level. Units for this property are not standardized, so an application should not make assumptions about this property's value set by other applications unless that other application's units are known.
The degrees longitude of the issues location. East: positive, west: negative.
A string describing the significance of this location.
{ "type": "object", "nullable": true, "properties": { "latitude": { "type": "number", "nullable": true, "description": "The degrees latitude of the issue's location. North: positive, south: negative." }, "elevation": { "type": "number", "nullable": true, "description": "The geographical elevation above/below sea level. Units for this property are not standardized, so an application should not make assumptions about this property's value set by other applications unless that other application's units are known." }, "longitude": { "type": "number", "nullable": true, "description": "The degrees longitude of the issues location. East: positive, west: negative." }, "description": { "type": "string", "nullable": true, "description": "A string describing the significance of this location." } }, "description": "Origin info. The geographical location the issue pertains to.", "additionalProperties": false }
Model Pin
Origin info. Associates an issue with a single point in a model that does not necessarily correspond to a model element.
{ "type": "object", "title": "Model Pin", "nullable": true, "properties": { "location": { "$ref": "#/components/schemas/point3D" }, "description": { "type": "string", "nullable": true, "description": "String describing the relevance of the pin's location." } }, "description": "Origin info. Associates an issue with a single point in a model that does not necessarily correspond to a model element.", "additionalProperties": false }
Model View
Origin info. Describes the view that was visible when the issue was created.
{ "type": "object", "title": "Model View", "nullable": true, "properties": { "cameraView": { "$ref": "#/components/schemas/camera" }, "iModelJsView": { "type": "string", "nullable": true, "description": "The ID of a saved view showing the issue." } }, "description": "Origin info. Describes the view that was visible when the issue was created.", "additionalProperties": false }
bounding-box
Origin info. Describes a rectangular-prism-shaped region in a 3D model that the issue pertains to.
{ "type": "object", "nullable": true, "properties": { "lowerLeftPoint3D": { "$ref": "#/components/schemas/point3D" }, "upperRightPoint3D": { "$ref": "#/components/schemas/point3D" } }, "description": "Origin info. Describes a rectangular-prism-shaped region in a 3D model that the issue pertains to.", "additionalProperties": false }
DetailedError
Contains error information and an array of more specific errors.
One of a server-defined set of error codes.
The target of the error.
A human-readable representation of the error.
{ "type": "object", "required": [ "code", "message", "details" ], "properties": { "code": { "type": "string", "description": "One of a server-defined set of error codes." }, "target": { "type": "string", "nullable": true, "description": "The target of the error." }, "details": { "type": "array", "items": { "$ref": "#/components/schemas/Error" }, "description": "Optional array of more specific errors." }, "message": { "type": "string", "description": "A human-readable representation of the error." } }, "description": "Contains error information and an array of more specific errors.", "additionalProperties": true }
Error Response
Gives details for an error that occurred while handling the request. Note that clients MUST NOT assume that every failed request will produce an object of this schema, or that all of the properties in the response will be non-null, as the error may have prevented this response from being constructed.
{ "type": "object", "title": "Error Response", "required": [ "error" ], "properties": { "error": { "$ref": "#/components/schemas/Error", "description": "Error information." } }, "description": "Gives details for an error that occurred while handling the request. Note that clients MUST NOT assume that every failed request will produce an object of this schema, or that all of the properties in the response will be non-null, as the error may have prevented this response from being constructed.", "additionalProperties": false }
Issue Summary state
Indicates whether the issue's current workflow status is an Open, Closed, or Draft status.
{ "enum": [ "Closed", "Open", "Draft" ], "type": "string", "description": "Indicates whether the issue's current workflow status is an Open, Closed, or Draft status.", "title": "Issue Summary state" }
Issue Summary
The issue's unique ID. Can be used to query for issue details with the Get Issue Details endpoint.
Read-only. Describes which domain of work the issue involves, which determines what applications will show it. Automatically set based on the form definition (referenced by formId) that was used to create the issue.
Indicates whether the issue's current workflow status is an Open, Closed, or Draft status.
A user-provided short description of the issue, if it exists. Can be shown alongside DisplayName to display the issue to users in a UI.
Name that should be used to display this issue to users.
{ "type": "object", "title": "Issue Summary", "properties": { "id": { "type": "string", "description": "The issue's unique ID. Can be used to query for issue details with the Get Issue Details endpoint." }, "type": { "type": "string", "description": "Read-only. Describes which domain of work the issue involves, which determines what applications will show it. Automatically set based on the form definition (referenced by `formId`) that was used to create the issue." }, "state": { "enum": [ "Closed", "Open", "Draft" ], "type": "string", "description": "Indicates whether the issue's current workflow status is an Open, Closed, or Draft status.", "title": "Issue Summary state", "$ref": "#/components/schemas/issue-summary-state" }, "subject": { "type": "string", "nullable": true, "description": "A user-provided short description of the issue, if it exists. Can be shown alongside DisplayName to display the issue to users in a UI." }, "displayName": { "type": "string", "nullable": true, "description": "Name that should be used to display this issue to users." } }, "additionalProperties": false }
Dynamic Object
An object whose properties can vary depending on user customization within the project.
Property values can be:
-
String: Simple text values, dates (ISO 8601 format), or GUIDs. Examples:
- "Simple text"
- "2026-02-03T00:00:00Z"
- "c7d2ea1b-fad8-4fea-9268-f261232b28d1"
-
String (Multi-select fields): For multi-select fields, the value should be a string consisting of all of the selected options, separated by commas with no additional spaces between them. Example:
- "Option1,Option2,Option3"
-
Number: Numeric values (integers or decimals).
-
Boolean: true or false. Boolean values are used for Checkbox controls.
-
Array of objects (Grid controls): Arrays are used exclusively for Grid controls, where each element is an object representing a row in the grid. Example:
- [{"Column1": "Value1", "Column2": 123}, {"Column1": "Value2", "Column2": 456}]
-
Object (Survey Response): An object with a required 'Response' property and optional 'Explanation' property. Example:
- {"Response": "Yes", "Explanation": "Additional details here"}
-
Object (Weather): An object with weather information. Example:
- {"MaxTemp": 76, "MinTemp": 41, "Temperature": 47, "Description": "Sunny", "WindSpeed": 1, "TimeTaken": "2026-02-06T16:46:52Z", "Units": "e", "Icon": "sun"}
Primary Assignee
An object describing the primary user or role assigned to an issue.
The GUID identifying the user or role.
The role's name, or the user's given name and surname, as it should be displayed in an application.
{ "type": "object", "title": "Primary Assignee", "properties": { "id": { "type": "string", "description": "The GUID identifying the user or role." }, "displayName": { "type": "string", "description": "The role's name, or the user's given name and surname, as it should be displayed in an application." } }, "description": "An object describing the primary user or role assigned to an issue.", "additionalProperties": false }
Secondary Assignee
An object describing one of potentially several users or roles assigned to an issue.
The GUID identifying the user or role.
If true, this is a role; otherwise, it is an individual user.
The role's name, or the user's given name and surname, as it should be displayed in an application.
{ "type": "object", "title": "Secondary Assignee", "properties": { "id": { "type": "string", "description": "The GUID identifying the user or role." }, "isRole": { "type": "boolean", "description": "If true, this is a role; otherwise, it is an individual user." }, "displayName": { "type": "string", "description": "The role's name, or the user's given name and surname, as it should be displayed in an application." } }, "description": "An object describing one of potentially several users or roles assigned to an issue.", "additionalProperties": false }
source-entity-file
Represents a file in Storage about which an issue was created.
ID used to identify the file in the Storage API.
Name of the file, including extension.
ID of the folder containing the file in the Storage API.
{ "type": "object", "required": [ "storageFile" ], "properties": { "storageFile": { "type": "object", "required": [ "fileId", "folderId" ], "properties": { "fileId": { "type": "string", "description": "ID used to identify the file in the Storage API." }, "fileName": { "type": "string", "nullable": true, "description": "Name of the file, including extension." }, "folderId": { "type": "string", "description": "ID of the folder containing the file in the Storage API." } }, "description": "The info about the file.", "additionalProperties": false } }, "description": "Represents a file in Storage about which an issue was created.", "additionalProperties": false }
Issues List (Prefer return=minimal)
{ "type": "object", "title": "Issues List (Prefer return=minimal)", "properties": { "_links": { "$ref": "#/components/schemas/forward-only-paging-links" }, "issues": { "type": "array", "items": { "$ref": "#/components/schemas/issue-summary" } } }, "additionalProperties": false }
Issue Representation
Contains the full data of this issue, except formId, for inclusion in a list. Any property that was never set on the issue will be omitted from the response.
Unique identifier for this instance. Read-only.
Read-only. Describes which domain of work the issue involves, which determines what applications will show it. Automatically set based on the form definition that was used to create the issue.
Indicates whether the issue's status is an Open, Closed, or Draft status. This property is read-only.
Links to related entities, if applicable.
An human-readable identifier for the issue, consisting of an alphanumeric prefix (that can be configured by the project administrator) followed by an auto-incrementing number. Read-only.
The current workflow status the issue is in right now.
The date by which an action should be taken on this issue. Applications will use this to determine whether an issue is near due or overdue.
Brief title/description of the issue.
For cases when an issue is assigned to multiple people and/or roles, this lists all of them rather than just the primary assignee.
The display name of the user who originally created this issue. Read-only.
Detailed description of the issue.
Name that should be used to show this issue in a list of issues in the UI. This is read-only. Project managers can configure how this is generated; usually, it will be the value of another property.
A RBG hexadecimal color string, e.g. #ff0000. Read-only. If set, this gives a hint for how to highlight the issue in a list of issues based on its current workflow status.
Origin info. An object linking the issue to an entity outside the Issues service, such as a file in Storage or an element in an iModel, that the issue was created to pertain to.
The display name of the user who most recently made a change to this issue. Read-only.
The date and time when this issue was originally created. Read-only.
The date and time represented in the model where the issue occurred (if in a 4D model).
The date and time when this issue was most recently edited. Read-only.
{ "type": "object", "title": "Issue Representation", "properties": { "id": { "type": "string", "description": "Unique identifier for this instance. Read-only." }, "type": { "type": "string", "description": "Read-only. Describes which domain of work the issue involves, which determines what applications will show it. Automatically set based on the form definition that was used to create the issue." }, "state": { "type": "string", "description": "Indicates whether the issue's status is an Open, Closed, or Draft status. This property is read-only." }, "_links": { "oneOf": [ { "$ref": "#/components/schemas/source-entity-links-file" }, { "$ref": "#/components/schemas/source-entity-links-i-model-element" } ], "description": "Links to related entities, if applicable." }, "number": { "type": "string", "nullable": true, "description": "An human-readable identifier for the issue, consisting of an alphanumeric prefix (that can be configured by the project administrator) followed by an auto-incrementing number. Read-only." }, "status": { "type": "string", "description": "The current workflow status the issue is in right now." }, "dueDate": { "type": "string", "format": "date-time", "nullable": true, "description": "The date by which an action should be taken on this issue. Applications will use this to determine whether an issue is near due or overdue." }, "subject": { "type": "string", "nullable": true, "description": "Brief title/description of the issue." }, "assignee": { "$ref": "#/components/schemas/primary-assignee" }, "location": { "$ref": "#/components/schemas/location" }, "modelPin": { "$ref": "#/components/schemas/model-pin" }, "assignees": { "type": "array", "items": { "$ref": "#/components/schemas/secondary-assignee" }, "description": "For cases when an issue is assigned to multiple people and/or roles, this lists all of them rather than just the primary assignee." }, "createdBy": { "type": "string", "description": "The display name of the user who originally created this issue. Read-only." }, "modelView": { "$ref": "#/components/schemas/model-view" }, "properties": { "$ref": "#/components/schemas/dynamic-object" }, "boundingBox": { "$ref": "#/components/schemas/bounding-box" }, "description": { "type": "string", "nullable": true, "description": "Detailed description of the issue." }, "displayName": { "type": "string", "nullable": true, "description": "Name that should be used to show this issue in a list of issues in the UI. This is read-only. Project managers can configure how this is generated; usually, it will be the value of another property." }, "statusColor": { "type": "string", "nullable": true, "description": "A RBG hexadecimal color string, e.g. `#ff0000`. Read-only. If set, this gives a hint for how to highlight the issue in a list of issues based on its current workflow status." }, "sourceEntity": { "oneOf": [ { "$ref": "#/components/schemas/source-entity-file" }, { "$ref": "#/components/schemas/source-entity-i-model-element" } ], "description": "Origin info. An object linking the issue to an entity outside the Issues service, such as a file in Storage or an element in an iModel, that the issue was created to pertain to." }, "lastModifiedBy": { "type": "string", "description": "The display name of the user who most recently made a change to this issue. Read-only." }, "createdDateTime": { "type": "string", "format": "date-time", "description": "The date and time when this issue was originally created. Read-only." }, "modelEventDateTime": { "type": "string", "format": "date-time", "nullable": true, "description": "The date and time represented in the model where the issue occurred (if in a 4D model)." }, "lastModifiedDateTime": { "type": "string", "format": "date-time", "description": "The date and time when this issue was most recently edited. Read-only." } }, "description": "Contains the full data of this issue, except formId, for inclusion in a list. Any property that was never set on the issue will be omitted from the response.", "additionalProperties": false }
Detailed Error Response
Gives details for an error that occurred while handling the request. Note that clients MUST NOT assume that every failed request will produce an object of this schema, or that all of the properties in the response will be non-null, as the error may have prevented this response from being constructed.
{ "type": "object", "title": "Detailed Error Response", "required": [ "error" ], "properties": { "error": { "$ref": "#/components/schemas/DetailedError", "description": "Error Detailed information." } }, "description": "Gives details for an error that occurred while handling the request. Note that clients MUST NOT assume that every failed request will produce an object of this schema, or that all of the properties in the response will be non-null, as the error may have prevented this response from being constructed.", "additionalProperties": false }
source-entity-links-file
Links to retrieve the related file, and the folder that contains it, from the Storage API.
{ "type": "object", "required": [ "folder", "file" ], "properties": { "file": { "$ref": "#/components/schemas/link" }, "folder": { "$ref": "#/components/schemas/link" } }, "description": "Links to retrieve the related file, and the folder that contains it, from the Storage API.", "additionalProperties": false }
Forward Only Paging Links
URLs for redoing the current request or getting the next page of results, if applicable. Links to the previous page are not available.
{ "type": "object", "title": "Forward Only Paging Links", "properties": { "next": { "$ref": "#/components/schemas/link" }, "self": { "$ref": "#/components/schemas/link" } }, "description": "URLs for redoing the current request or getting the next page of results, if applicable. Links to the previous page are not available.", "additionalProperties": false }
Issues List (Prefer return=representation)
{ "type": "object", "title": "Issues List (Prefer return=representation)", "properties": { "_links": { "$ref": "#/components/schemas/forward-only-paging-links" }, "issues": { "type": "array", "items": { "$ref": "#/components/schemas/issue-representation" } } }, "additionalProperties": false }
source-entity-i-model-element
Represents an element in an iModel about which an issue was created.
ID of the iModel containing the element, as it exists in the iModels API.
ID of the element. Can be a hexadecimal numeric string (space-separated to include multiple elements) or a presentation key.
Name of the model.
ID of the changeset where the issue was created.
{ "type": "object", "nullable": true, "required": [ "iModelElement" ], "properties": { "iModelElement": { "type": "object", "required": [ "modelId", "elementId", "changeSetId", "modelName" ], "properties": { "modelId": { "type": "string", "description": "ID of the iModel containing the element, as it exists in the iModels API." }, "elementId": { "type": "string", "description": "ID of the element. Can be a hexadecimal numeric string (space-separated to include multiple elements) or a presentation key." }, "modelName": { "type": "string", "description": "Name of the model." }, "changeSetId": { "type": "string", "description": "ID of the changeset where the issue was created." } }, "description": "The info about the element.", "additionalProperties": false } }, "description": "Represents an element in an iModel about which an issue was created.", "additionalProperties": false }
source-entity-links-i-model-element
Links to retrieve the related element's specific changeset, or iModel in general, from the iModels API.
{ "type": "object", "nullable": true, "required": [ "iModel", "iModelChangeset" ], "properties": { "iModel": { "$ref": "#/components/schemas/link" }, "iModelChangeset": { "$ref": "#/components/schemas/link" } }, "description": "Links to retrieve the related element's specific changeset, or iModel in general, from the iModels API.", "additionalProperties": false }
Was this page helpful?