# Explore AI Experience Resources (Flattened) GET /api/v1/community/explore/experiences/flattened/ **GET:** List all public AI experience resources in a flattened format. Each resource (AI Note, AI Expert, Quest) gets its own item in the response with the experience data repeated. This makes it easier for frontend to handle multiple resources per experience. Each item includes: - experience_id, experience_uid, experience_title, experience_description - resource_type, resource_id, resource_uid, resource_title - publication_title, publication_logo (if applicable) - metrics, creator, tags, trending_score **Filtering and sorting work the same as the regular experience endpoint.** Reference: https://docs.aisquare.studio/api-reference/ai-square-studio-api/community/explore-experiences-flattened-list ## OpenAPI Specification ```yaml openapi: 3.1.0 info: title: AISquare Studio API version: 1.0.0 paths: /api/v1/community/explore/experiences/flattened/: get: operationId: explore-experiences-flattened-list summary: Explore AI Experience Resources (Flattened) description: >- **GET:** List all public AI experience resources in a flattened format. Each resource (AI Note, AI Expert, Quest) gets its own item in the response with the experience data repeated. This makes it easier for frontend to handle multiple resources per experience. Each item includes: - experience_id, experience_uid, experience_title, experience_description - resource_type, resource_id, resource_uid, resource_title - publication_title, publication_logo (if applicable) - metrics, creator, tags, trending_score **Filtering and sorting work the same as the regular experience endpoint.** tags: - subpackage_community parameters: - name: category in: query description: Filter by category ID required: false schema: type: integer - name: category_name in: query description: Filter by category name (case-insensitive partial match) required: false schema: type: string - name: ordering in: query description: Sort results. Use '-' prefix for descending order. required: false schema: $ref: >- #/components/schemas/ApiV1CommunityExploreExperiencesFlattenedGetParametersOrdering - name: page in: query description: A page number within the paginated result set. required: false schema: type: integer - name: page_size in: query description: Number of results to return per page. required: false schema: type: integer - name: search in: query description: Free text search across title, focus area, tags, and categories required: false schema: type: string - name: subcategory in: query required: false schema: type: integer - name: subcategory_name in: query required: false schema: type: string - name: tag in: query required: false schema: type: string - name: tags in: query required: false schema: type: string - name: type in: query description: Filter by experience type(s). Supports multiple values. required: false schema: $ref: >- #/components/schemas/ApiV1CommunityExploreExperiencesFlattenedGetParametersType - name: visibility in: query description: |- * `public` - Public * `private` - Private * `team` - Team * `org` - Organization required: false schema: $ref: >- #/components/schemas/ApiV1CommunityExploreExperiencesFlattenedGetParametersVisibility responses: '200': description: List of experience resources in flattened format content: application/json: schema: $ref: '#/components/schemas/PaginatedFlattenedExperienceResourceList' components: schemas: ApiV1CommunityExploreExperiencesFlattenedGetParametersOrdering: type: string enum: - '-newest' - '-popular' - '-trending' - '-updated' - newest - popular - trending - updated title: ApiV1CommunityExploreExperiencesFlattenedGetParametersOrdering ApiV1CommunityExploreExperiencesFlattenedGetParametersType: type: string enum: - AI_EXPERT - AI_NOTE - QUEST title: ApiV1CommunityExploreExperiencesFlattenedGetParametersType ApiV1CommunityExploreExperiencesFlattenedGetParametersVisibility: type: string enum: - org - private - public - team title: ApiV1CommunityExploreExperiencesFlattenedGetParametersVisibility FlattenedExperienceResource: type: object properties: experience_id: type: integer experience_uid: type: string experience_title: type: string experience_description: type: string resource_type: type: - string - 'null' resource_id: type: - integer - 'null' resource_uid: type: - string - 'null' resource_title: type: - string - 'null' cover_image: type: - string - 'null' experience_type_logo: type: - string - 'null' experience_type_cover: type: - string - 'null' publication_id: type: - integer - 'null' publication_title: type: - string - 'null' publication_logo: type: - string - 'null' publication_custom_url: type: - string - 'null' metrics: type: object additionalProperties: description: Any type creator: type: object additionalProperties: description: Any type description: Get creator info from experience. tags: type: array items: description: Any type description: Get list of tag names from the experience. trending_score: type: number format: double description: Calculate trending score using AIStudiosService. reading_time: type: - integer - 'null' duration: type: - string - 'null' audio_url: type: - string - 'null' video_url: type: - string - 'null' thumbnail: type: - string - 'null' created_at: type: string format: date-time updated_at: type: string format: date-time required: - experience_id - experience_uid - experience_title - experience_description - resource_type - resource_id - resource_uid - resource_title - cover_image - experience_type_logo - experience_type_cover - publication_id - publication_title - publication_logo - publication_custom_url - metrics - creator - tags - trending_score - reading_time - duration - audio_url - video_url - thumbnail - created_at - updated_at description: >- Flattened serializer for experience-resource combinations in aistudios. Each resource gets its own item with experience data repeated. Makes it easier for frontend to handle multiple resources per experience. title: FlattenedExperienceResource PaginatedFlattenedExperienceResourceList: type: object properties: count: type: integer next: type: - string - 'null' format: uri previous: type: - string - 'null' format: uri results: type: array items: $ref: '#/components/schemas/FlattenedExperienceResource' required: - count - results title: PaginatedFlattenedExperienceResourceList ``` ## SDK Code Examples ```python Example flattened resources response import requests url = "https://api.example.com/api/v1/community/explore/experiences/flattened/" payload = {} headers = {"Content-Type": "application/json"} response = requests.get(url, json=payload, headers=headers) print(response.json()) ``` ```javascript Example flattened resources response const url = 'https://api.example.com/api/v1/community/explore/experiences/flattened/'; const options = {method: 'GET', headers: {'Content-Type': 'application/json'}, body: '{}'}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go Example flattened resources response package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.example.com/api/v1/community/explore/experiences/flattened/" payload := strings.NewReader("{}") req, _ := http.NewRequest("GET", url, payload) req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby Example flattened resources response require 'uri' require 'net/http' url = URI("https://api.example.com/api/v1/community/explore/experiences/flattened/") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Content-Type"] = 'application/json' request.body = "{}" response = http.request(request) puts response.read_body ``` ```java Example flattened resources response import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.example.com/api/v1/community/explore/experiences/flattened/") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php Example flattened resources response request('GET', 'https://api.example.com/api/v1/community/explore/experiences/flattened/', [ 'body' => '{}', 'headers' => [ 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp Example flattened resources response using RestSharp; var client = new RestClient("https://api.example.com/api/v1/community/explore/experiences/flattened/"); var request = new RestRequest(Method.GET); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift Example flattened resources response import Foundation let headers = ["Content-Type": "application/json"] let parameters = [] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.example.com/api/v1/community/explore/experiences/flattened/")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```