# Feature Requests

## Search or list feature requests

> Returns feature requests matching the given criteria. Supports semantic search, status filtering, and pagination.\
> \
> \*\*Rate limit:\*\* 20 requests per minute

```json
{"openapi":"3.0.1","info":{"title":"Pylon API.","version":"1.0.0"},"servers":[{"url":"https://api.usepylon.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"description":"Authorization: Bearer <token>","scheme":"bearer","type":"http"}},"schemas":{"SearchFeatureRequestsRequest":{"properties":{"account_ids":{"description":"Filter by one or more account IDs. Returns only feature requests with evidence linked to any of the given accounts.","items":{"type":"string"},"type":"array"},"limit":{"description":"The maximum number of feature requests to return. Defaults to 100, max 1000.","format":"int64","type":"integer"},"query":{"description":"A search query string for semantic and keyword matching. If omitted, all feature requests are returned (subject to other filters and limit).","type":"string"},"request_statuses":{"description":"Filter by one or more request statuses. Each value can be a built-in status (new, in_progress, closed, archived) or a custom status slug.","items":{"type":"string"},"type":"array"}},"type":"object"},"SearchFeatureRequestsResponseBody":{"properties":{"data":{"items":{"$ref":"#/components/schemas/FeatureRequestSearchResult"},"type":"array"},"request_id":{"type":"string"}},"type":"object"},"FeatureRequestSearchResult":{"properties":{"account_ids":{"description":"IDs of customer accounts that have requested this feature, resolved via the evidence chain.","items":{"type":"string"},"type":"array"},"created_at":{"description":"The time the feature request was created (RFC3339).","type":"string"},"custom_fields":{"additionalProperties":{"$ref":"#/components/schemas/CustomFieldValue"},"description":"Custom field values associated with the feature request, keyed by custom field slug.","type":"object"},"description":{"description":"The description of the feature request.","type":"string"},"evidence_count":{"description":"The number of evidence items (excluding irrelevant) linked to this feature request.","format":"int64","type":"integer"},"id":{"description":"The ID of the feature request.","type":"string"},"request_status":{"description":"The status of the feature request. Can be a built-in status (new, in_progress, closed, archived) or a custom status slug.","type":"string"},"title":{"description":"The title of the feature request.","type":"string"},"updated_at":{"description":"The time the feature request was last updated (RFC3339).","type":"string"}},"type":"object"},"CustomFieldValue":{"properties":{"slug":{"description":"The slug of the custom field.","type":"string"},"value":{"description":"The value of the custom field. Only to be used for single-valued custom fields. If unset, the custom field will be unset. If the custom field is a select field, the value must be the select option slug, which you can find from the GET /custom-fields endpoint.","type":"string"},"values":{"description":"The values of the custom field. Only to be used for multi-valued custom fields (ex. multiselect). If unset, the custom field will be unset. If the custom field is a multiselect field, the values must be the select option slugs which you can find from the GET /custom-fields endpoint.","items":{"type":"string"},"type":"array"}},"type":"object"},"ErrorApiResponseBody":{"properties":{"errors":{"description":"The list of errors.","items":{"type":"string"},"type":"array"},"exists_id":{"description":"The ID of the object that already exists if this is a duplicate object error.","type":"string"},"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"}}},"paths":{"/feature-requests/search":{"post":{"description":"Returns feature requests matching the given criteria. Supports semantic search, status filtering, and pagination.\n\n**Rate limit:** 20 requests per minute","operationId":"SearchFeatureRequests","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchFeatureRequestsRequest"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchFeatureRequestsResponseBody"}}},"description":""},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""}},"summary":"Search or list feature requests","tags":["feature-requests"]}}}}
```

## Update a feature request

> Updates an existing feature request. Only provided fields are modified.\
> \
> \*\*Rate limit:\*\* 20 requests per minute

```json
{"openapi":"3.0.1","info":{"title":"Pylon API.","version":"1.0.0"},"servers":[{"url":"https://api.usepylon.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"description":"Authorization: Bearer <token>","scheme":"bearer","type":"http"}},"schemas":{"UpdateFeatureRequestRequestBody":{"properties":{"custom_fields":{"description":"An array of custom fields to set. Only passed-in fields will be modified.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array"},"request_status":{"description":"The new request status. Can be a built-in status (new, in_progress, closed, archived) or a custom status slug.","type":"string"}},"type":"object"},"CustomFieldValue":{"properties":{"slug":{"description":"The slug of the custom field.","type":"string"},"value":{"description":"The value of the custom field. Only to be used for single-valued custom fields. If unset, the custom field will be unset. If the custom field is a select field, the value must be the select option slug, which you can find from the GET /custom-fields endpoint.","type":"string"},"values":{"description":"The values of the custom field. Only to be used for multi-valued custom fields (ex. multiselect). If unset, the custom field will be unset. If the custom field is a multiselect field, the values must be the select option slugs which you can find from the GET /custom-fields endpoint.","items":{"type":"string"},"type":"array"}},"type":"object"},"UpdateFeatureRequestResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/FeatureRequest"},"request_id":{"type":"string"}},"type":"object"},"FeatureRequest":{"properties":{"created_at":{"description":"The time the feature request was created (RFC3339).","type":"string"},"custom_fields":{"additionalProperties":{"$ref":"#/components/schemas/CustomFieldValue"},"description":"Custom field values associated with the feature request, keyed by custom field slug.","type":"object"},"description":{"description":"The description of the feature request.","type":"string"},"evidence":{"description":"Evidence items linked to this feature request. Only populated when fetch_evidence=true.","items":{"$ref":"#/components/schemas/FeatureRequestEvidence"},"type":"array"},"evidence_count":{"description":"The number of evidence items (excluding irrelevant) linked to this feature request.","format":"int64","type":"integer"},"id":{"description":"The ID of the feature request.","type":"string"},"request_status":{"description":"The status of the feature request. Can be a built-in status (new, in_progress, closed, archived) or a custom status slug.","type":"string"},"title":{"description":"The title of the feature request.","type":"string"},"updated_at":{"description":"The time the feature request was last updated (RFC3339).","type":"string"}},"type":"object"},"FeatureRequestEvidence":{"properties":{"account_id":{"description":"The ID of the customer account that submitted this evidence (e.g. the account whose issue or call recording is linked), if available.","type":"string"},"external_url":{"description":"The URL of the evidence in the external system (e.g. Fathom, Gong). Only included for call recording evidence when the value is known; omitted for other evidence sources.","type":"string"},"source_id":{"description":"The ID of the linked issue. Only present for issue evidence.","type":"string"},"source_type":{"description":"The source type of the evidence (e.g. 'issue', 'call_recording', 'survey_response', 'manual').","type":"string"},"summary":{"description":"An AI-generated summary of why this evidence supports the feature request.","type":"string"}},"type":"object"},"ErrorApiResponseBody":{"properties":{"errors":{"description":"The list of errors.","items":{"type":"string"},"type":"array"},"exists_id":{"description":"The ID of the object that already exists if this is a duplicate object error.","type":"string"},"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"}}},"paths":{"/feature-requests/{id}":{"patch":{"description":"Updates an existing feature request. Only provided fields are modified.\n\n**Rate limit:** 20 requests per minute","operationId":"UpdateFeatureRequest","parameters":[{"description":"The ID of the feature request to update.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFeatureRequestRequestBody"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFeatureRequestResponseBody"}}},"description":""},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""}},"summary":"Update a feature request","tags":["feature-requests"]}}}}
```

## Delete a feature request

> Permanently deletes a feature request and its associated evidence.\
> \
> \*\*Rate limit:\*\* 20 requests per minute

```json
{"openapi":"3.0.1","info":{"title":"Pylon API.","version":"1.0.0"},"servers":[{"url":"https://api.usepylon.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"description":"Authorization: Bearer <token>","scheme":"bearer","type":"http"}},"schemas":{"DeleteFeatureRequestResponseBody":{"properties":{"request_id":{"type":"string"}},"type":"object"},"ErrorApiResponseBody":{"properties":{"errors":{"description":"The list of errors.","items":{"type":"string"},"type":"array"},"exists_id":{"description":"The ID of the object that already exists if this is a duplicate object error.","type":"string"},"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"}}},"paths":{"/feature-requests/{id}":{"delete":{"description":"Permanently deletes a feature request and its associated evidence.\n\n**Rate limit:** 20 requests per minute","operationId":"DeleteFeatureRequest","parameters":[{"description":"The ID of the feature request to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteFeatureRequestResponseBody"}}},"description":""},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""}},"summary":"Delete a feature request","tags":["feature-requests"]}}}}
```

## Get a feature request by ID

> Returns a single feature request by ID. Optionally includes evidence items when fetch\_evidence is true.\
> \
> \*\*Rate limit:\*\* 60 requests per minute

```json
{"openapi":"3.0.1","info":{"title":"Pylon API.","version":"1.0.0"},"servers":[{"url":"https://api.usepylon.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"description":"Authorization: Bearer <token>","scheme":"bearer","type":"http"}},"schemas":{"GetFeatureRequestResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/FeatureRequest"},"request_id":{"type":"string"}},"type":"object"},"FeatureRequest":{"properties":{"created_at":{"description":"The time the feature request was created (RFC3339).","type":"string"},"custom_fields":{"additionalProperties":{"$ref":"#/components/schemas/CustomFieldValue"},"description":"Custom field values associated with the feature request, keyed by custom field slug.","type":"object"},"description":{"description":"The description of the feature request.","type":"string"},"evidence":{"description":"Evidence items linked to this feature request. Only populated when fetch_evidence=true.","items":{"$ref":"#/components/schemas/FeatureRequestEvidence"},"type":"array"},"evidence_count":{"description":"The number of evidence items (excluding irrelevant) linked to this feature request.","format":"int64","type":"integer"},"id":{"description":"The ID of the feature request.","type":"string"},"request_status":{"description":"The status of the feature request. Can be a built-in status (new, in_progress, closed, archived) or a custom status slug.","type":"string"},"title":{"description":"The title of the feature request.","type":"string"},"updated_at":{"description":"The time the feature request was last updated (RFC3339).","type":"string"}},"type":"object"},"CustomFieldValue":{"properties":{"slug":{"description":"The slug of the custom field.","type":"string"},"value":{"description":"The value of the custom field. Only to be used for single-valued custom fields. If unset, the custom field will be unset. If the custom field is a select field, the value must be the select option slug, which you can find from the GET /custom-fields endpoint.","type":"string"},"values":{"description":"The values of the custom field. Only to be used for multi-valued custom fields (ex. multiselect). If unset, the custom field will be unset. If the custom field is a multiselect field, the values must be the select option slugs which you can find from the GET /custom-fields endpoint.","items":{"type":"string"},"type":"array"}},"type":"object"},"FeatureRequestEvidence":{"properties":{"account_id":{"description":"The ID of the customer account that submitted this evidence (e.g. the account whose issue or call recording is linked), if available.","type":"string"},"external_url":{"description":"The URL of the evidence in the external system (e.g. Fathom, Gong). Only included for call recording evidence when the value is known; omitted for other evidence sources.","type":"string"},"source_id":{"description":"The ID of the linked issue. Only present for issue evidence.","type":"string"},"source_type":{"description":"The source type of the evidence (e.g. 'issue', 'call_recording', 'survey_response', 'manual').","type":"string"},"summary":{"description":"An AI-generated summary of why this evidence supports the feature request.","type":"string"}},"type":"object"},"ErrorApiResponseBody":{"properties":{"errors":{"description":"The list of errors.","items":{"type":"string"},"type":"array"},"exists_id":{"description":"The ID of the object that already exists if this is a duplicate object error.","type":"string"},"request_id":{"description":"The request ID for tracking.","type":"string"}},"type":"object"}}},"paths":{"/feature-requests/{id}":{"get":{"description":"Returns a single feature request by ID. Optionally includes evidence items when fetch_evidence is true.\n\n**Rate limit:** 60 requests per minute","operationId":"GetFeatureRequest","parameters":[{"description":"The ID of the feature request to fetch.","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"Whether to include evidence items in the response. Defaults to false.","in":"query","name":"fetch_evidence","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetFeatureRequestResponseBody"}}},"description":""},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""}},"summary":"Get a feature request by ID","tags":["feature-requests"]}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.usepylon.com/pylon-docs/developer/api/api-reference/feature-requests.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
