# Explore AI Experiences GET /api/v1/community/explore/experiences/ **GET:** List all public AI experiences for the community explore page. Supports free text search, category filtering, type filtering, and sorting. Default sorting is by trending score which considers engagement metrics, publication status, and time decay for recency. **Filtering Options:** - **search**: Free text search across title, focus area, tags, and categories - **category/category_name**: Filter by domain category (ID or name) - **subcategory/subcategory_name**: Filter by domain subcategory (ID or name) - **type**: Filter by experience type (AI_EXPERT, AI_NOTE, QUEST) - supports multiple - **tag/tags**: Filter by tags (single tag or comma-separated list) - **visibility**: Filter by visibility status **Sorting Options:** - **trending** (default): Sort by calculated trending score - **newest**: Sort by creation date (newest first) - **popular**: Sort by total engagement metrics - **updated**: Sort by last update date Reference: https://docs.aisquare.studio/api-reference/ai-square-studio-api/community/explore-experiences-list ## OpenAPI Specification ```yaml openapi: 3.1.0 info: title: AISquare Studio API version: 1.0.0 paths: /api/v1/community/explore/experiences/: get: operationId: explore-experiences-list summary: Explore AI Experiences description: >- **GET:** List all public AI experiences for the community explore page. Supports free text search, category filtering, type filtering, and sorting. Default sorting is by trending score which considers engagement metrics, publication status, and time decay for recency. **Filtering Options:** - **search**: Free text search across title, focus area, tags, and categories - **category/category_name**: Filter by domain category (ID or name) - **subcategory/subcategory_name**: Filter by domain subcategory (ID or name) - **type**: Filter by experience type (AI_EXPERT, AI_NOTE, QUEST) - supports multiple - **tag/tags**: Filter by tags (single tag or comma-separated list) - **visibility**: Filter by visibility status **Sorting Options:** - **trending** (default): Sort by calculated trending score - **newest**: Sort by creation date (newest first) - **popular**: Sort by total engagement metrics - **updated**: Sort by last update date 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/ApiV1CommunityExploreExperiencesGetParametersOrdering - 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/ApiV1CommunityExploreExperiencesGetParametersType - name: visibility in: query description: |- * `public` - Public * `private` - Private * `team` - Team * `org` - Organization required: false schema: $ref: >- #/components/schemas/ApiV1CommunityExploreExperiencesGetParametersVisibility responses: '200': description: List of AI experiences for explore page content: application/json: schema: $ref: '#/components/schemas/PaginatedExploreExperienceList' components: schemas: ApiV1CommunityExploreExperiencesGetParametersOrdering: type: string enum: - '-newest' - '-popular' - '-trending' - '-updated' - newest - popular - trending - updated title: ApiV1CommunityExploreExperiencesGetParametersOrdering ApiV1CommunityExploreExperiencesGetParametersType: type: string enum: - AI_EXPERT - AI_NOTE - QUEST title: ApiV1CommunityExploreExperiencesGetParametersType ApiV1CommunityExploreExperiencesGetParametersVisibility: type: string enum: - org - private - public - team title: ApiV1CommunityExploreExperiencesGetParametersVisibility CreatorMinimal: type: object properties: id: type: integer username: type: string description: >- Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. full_name: type: string profile_picture: type: string description: Get profile picture URL from user details. is_verified: type: boolean required: - id - username - full_name - profile_picture - is_verified description: |- Minimal creator/user serializer for aistudios explore pages. Includes profile picture from user details. title: CreatorMinimal ExploreExperience: type: object properties: id: type: integer uid: type: string format: uuid title: type: - string - 'null' focus_area: type: - string - 'null' creator: $ref: '#/components/schemas/CreatorMinimal' tags: type: array items: description: Any type resources: type: array items: description: Any type description: Get all resources (AI Note, AI Expert, Quest) for this experience. trending_score: type: number format: double description: Calculate trending score using CommunityService. created_at: type: string format: date-time updated_at: type: string format: date-time required: - id - uid - title - focus_area - creator - resources - trending_score - created_at - updated_at description: >- Simplified serializer for Experience model in community explore page. Shows title, tags, description from experience, all resources with metrics, and creator info. title: ExploreExperience PaginatedExploreExperienceList: 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/ExploreExperience' required: - count - results title: PaginatedExploreExperienceList ``` ## SDK Code Examples ```python import requests url = "https://api.example.com/api/v1/community/explore/experiences/" payload = {} headers = {"Content-Type": "application/json"} response = requests.get(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://api.example.com/api/v1/community/explore/experiences/'; 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 package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.example.com/api/v1/community/explore/experiences/" 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 require 'uri' require 'net/http' url = URI("https://api.example.com/api/v1/community/explore/experiences/") 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 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/") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php request('GET', 'https://api.example.com/api/v1/community/explore/experiences/', [ 'body' => '{}', 'headers' => [ 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.example.com/api/v1/community/explore/experiences/"); var request = new RestRequest(Method.GET); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift 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/")! 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() ```