# Search Feedback

Conversations are used to track feedback on existing events for example feedback on incorrect attendance or start and end dates for an event. Each piece of feedback submitted by a user is tracked as a conversation and will be returned by this endpoint. You can use this to display a list of event feedback conversations submitted with Loop Links by users in your application.

## GET /v1/loop/feedback/conversations

> Search Feedback

````json
{"openapi":"3.1.0","info":{"title":"PredictHQ Loop API","version":"1.0.0"},"tags":[{"name":"Loop Feedback"}],"servers":[{"url":"https://api.predicthq.com"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"$API_KEY","description":"Enter your PredictHQ API key. The Bearer prefix is added automatically.\n\nWhen calling the API directly, send: `Authorization: Bearer <YOUR_API_KEY>` as documented at [https://docs.predicthq.com/api/overview/authenticating](https://docs.predicthq.com/api/overview/authenticating)\n"}},"parameters":{"LimitParam":{"name":"limit","in":"query","description":"Limit the number of results.","required":false,"schema":{"type":"integer","default":10}},"OffsetParam":{"name":"offset","in":"query","description":"Offset the results.","required":false,"schema":{"type":"integer","default":0}}},"schemas":{"HTTPValidationError":{"type":"object","properties":{"detail":{"type":"array","items":{"$ref":"#/components/schemas/ValidationError"},"title":"Detail"}},"title":"HTTPValidationError"},"ValidationError":{"type":"object","properties":{"loc":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/loop/feedback/conversations":{"get":{"operationId":"list_feedback_conversations","summary":"Search Feedback","parameters":[{"name":"conversation_id","in":"query","description":"Comma separated list of conversation IDs.\n\n\nE.g `?conversation_id=Eeh4ahnohghah0deeshahda`","required":false,"schema":{"type":"array","items":{"type":"string"}},"explode":false,"style":"form"},{"name":"q","in":"query","description":"Full-text search over conversations.\n\n\nE.g. `?q=event+a+cancelled`","required":false,"schema":{"type":"string"}},{"name":"link_id","in":"query","description":"Comma separated list of Loop Link IDs through which conversations were created.\n\n\nE.g `?link_id=m4Dk4g4DRA8Yqbp2PC54`","required":false,"schema":{"type":"array","items":{"type":"string"}},"explode":false,"style":"form"},{"name":"user_id","in":"query","description":"Comma separated list of User IDs.\n\n\nE.g. `?user_id=hw8Dsmv4Djg`","required":false,"schema":{"type":"array","items":{"type":"string"}},"explode":false,"style":"form"},{"name":"record_id","in":"query","description":"Comma separated list of Record IDs.\n\n\nRecord IDs can refer to either an Event ID (record type `event-public`) or a Loop Submission (record type `event-loop`).\n\n\nE.g `?record_id=5uRg7CqGu7DTtu4Rfk`","required":false,"schema":{"type":"array","items":{"type":"string"}},"explode":false,"style":"form"},{"name":"record_type","in":"query","description":"Comma separated list of record types for which to filter on.\n\n\nE.g `?record_type=event-public`","required":false,"schema":{"type":"array","items":{"type":"string","enum":["event-public","event-loop"]}},"explode":false,"style":"form"},{"name":"feedback_type","in":"query","description":"Comma separated list of feedback types.\n\n\nE.g `?feedback_type=general`","required":false,"schema":{"type":"array","items":{"type":"string","enum":["attendance_or_rank","category","dates","general","polygon","venue"]}},"explode":false,"style":"form"},{"name":"status","in":"query","description":"Comma separated list of feedback status.\n\n\nE.g. `?status=open`","required":false,"schema":{"type":"array","items":{"type":"string","enum":["open","closed"]}},"explode":false,"style":"form"},{"name":"created.gt","in":"query","description":"The date when the feedback was created: greater than.\n\n\nE.g. `?created.gt=2023-03`","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"created.gte","in":"query","description":"The date when the feedback was created: greater than or equal.\n\n\nE.g. `?created.gte=2023-03`","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"created.lt","in":"query","description":"The date when the feedback was created: less than.\n\n\nE.g. `?created.lt=2023-03`","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"created.lte","in":"query","description":"The date when the feedback that was created: less than or equal.\n\n\nE.g. `?created.lte=2023-03`","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"updated.gt","in":"query","description":"The date when the feedback was last updated: greater than.\n\n\nE.g. `?created.gt=2023-03`","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"updated.gte","in":"query","description":"The date when the feedback was last updated: greater than or equal.\n\n\nE.g. `?created.gte=2023-03`","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"updated.lt","in":"query","description":"The date when the feedback was last updated: less than.\n\n\nE.g. `?created.lt=2023-03`","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"updated.lte","in":"query","description":"The date when the feedback was last updated: less than or equal.\n\n\nE.g. `?created.lte=2023-03`","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"sort","in":"query","description":"Comma-separated list of sort options. Prefix a field name with `-` to reverse the default direction (sort descending instead of ascending).\n\n- `created`: oldest first (ascending)\n- `-created`: newest first (descending)\n- `updated`: oldest first (ascending)\n- `-updated`: newest first (descending)\n- `relevance`: most relevant first (descending)\n- `-relevance`: least relevant first (ascending)\n\nExample: `?sort=-updated`","required":false,"schema":{"type":"array","items":{"type":"string","enum":["created","-created","updated","-updated","relevance","-relevance"]},"default":["relevance","created"]},"explode":false,"style":"form"},{"$ref":"#/components/parameters/LimitParam"},{"$ref":"#/components/parameters/OffsetParam"}],"responses":{"200":{"description":"A list of feedback conversations with count.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"description":"Total number of results found.","type":"integer"},"conversations":{"description":"List of results where each item is a Conversation.","type":"array","items":{"type":"object","properties":{"conversation_id":{"description":"The unique identifier of the conversation.\n\n\nE.g. `Eeh4ahnohghah0deeshahda`","type":"string"},"create_dt":{"description":"The creation date time for the conversation in [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601).\n\n\nE.g. `2022-04-26T11:46:24+00:00`","type":"string","format":"date-time"},"update_dt":{"description":"The last update date time for the conversation in [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601).\n\n\nE.g. `2022-04-26T11:46:24+00:00`","type":"string","format":"date-time"},"record_id":{"description":"Record ID this feedback is in reference to.\n\n\nThis could be either an Event ID (record type event-public) or a Loop Submission (record type event-loop). The record_type value defines what type of Record ID this is.\n\n\nE.g. `5uRg7CqGu7DTtu4Rfk`","type":"string"},"link_id":{"description":"Loop Link ID that was used to submit this feedback.\n\n\nWill only be available on feedback created with a Loop Link.\n\n\nE.g. `m4Dk4g4DRA8Yqbp2PC54`","type":"string"},"record_type":{"description":"Record type this feedback is in reference to.\n\n\nE.g. `event-public`","type":"string","enum":["event-public","event-loop"]},"feedback":{"description":"Feedback can be provided for different fields.\n\n\n**E.g.**\n  ```json\n  {\n    \"feedback\": {\n      \"type\": \"submitted\"\n    }\n  }","type":"object","properties":{"type":{"type":"string","enum":["attendance_or_rank","category","dates","duplicate","general","polygon","submitted","venue"]}},"required":["type"]},"log":{"description":"Log of actions taken with the feedback.\n\n\n**E.g.**\n  ```json\n  {\n    \"log\": [\n      {\n        \"action\": {\n          \"type\": \"comment\"\n        },\n        \"timestamp\": \"2023-05-30T02:59:11+00:00\",\n        \"creator\": {\n          \"type\": \"user\",\n          \"user_id\": \"hw8Dsmv4Djg\"\n        },\n        \"note\": \"Thank you for your feedback. Someone from PredictHQ will pick this up.\"\n      }\n    ]\n  }\n  ```","type":"array","items":{"type":"object","properties":{"action":{"type":"object","properties":{"type":{"description":"Type of action, e.g. comment.","type":"string"}},"required":["type"]},"timestamp":{"description":"Timestamp of the log entry in ISO 8601 format.","type":"string","format":"date-time"},"creator":{"type":"object","properties":{"type":{"description":"Type of creator, e.g. user.","type":"string"},"user_id":{"description":"User ID of the creator.","type":"string"}},"required":["type","user_id"]},"note":{"description":"Additional note or comment.","type":"string"}},"required":["action","timestamp","creator","note"]}},"status":{"description":"Status of the feedback.\n\n\nE.g. `open`","type":"string","enum":["open","closed"]}},"required":["conversation_id","record_id","link_id","record_type","feedback","create_dt","update_dt","log","status"]}}},"required":["count","conversations"]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"tags":["Loop Feedback"]}}}}
````

## Examples

{% tabs %}
{% tab title="curl" %}

```bash
curl -X GET "https://api.predicthq.com/v1/loop/feedback/conversations?link_id=m4Dk4g4DRA8Yqbp2PC54" \
     -H "Accept: application/json" \
     -H "Authorization: Bearer $API_TOKEN"
```

{% endtab %}

{% tab title="python" %}

```python
import requests

response = requests.get(
    url="https://api.predicthq.com/v1/loop/events",
    headers={
      "Authorization": "Bearer $API_TOKEN",
      "Accept": "application/json"
    },
    params={
        "link_id": "m4Dk4g4DRA8Yqbp2PC54"
    }
)

print(response.json())
```

{% endtab %}
{% endtabs %}

## OpenAPI Spec

The OpenAPI spec for Loop API can be [found here](https://api.predicthq.com/docs/?urls.primaryName=Loop+API).

## Guides

ow are some guides relevant to this API:

* [Integrate with Loop Links](/integrations/integration-guides/integrate-with-loop-links.md)


---

# 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.predicthq.com/api/loop/loop-feedback/search-feedback.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.
