# Explore AI Studios (Publications) GET /api/v1/community/explore/publications/ **GET:** List all public AI studios (publications) for the community explore page. Supports free text search, category filtering via blogs, and sorting. Default sorting is by trending score which considers publication metrics, blog activity, and recent publishing frequency. **Filtering Options:** - **search**: Free text search across publication name, description, owner, and blog content - **category/category_name**: Filter by categories of published blogs - **subcategory/subcategory_name**: Filter by subcategories of published blogs - **tag/tags**: Filter by tags from publications or published blogs - **visibility**: Filter by visibility status - **owner**: Filter by owner username - **is_premium**: Filter by premium status (true/false) - **is_verified**: Filter by verification status (true/false) **Sorting Options:** - **trending** (default): Sort by calculated trending score - **newest**: Sort by creation date (newest first) - **popular**: Sort by total engagement and blog metrics - **updated**: Sort by last update date Reference: https://docs.aisquare.studio/api-reference/ai-square-studio-api/community/explore-publications-list ## OpenAPI Specification ```yaml openapi: 3.1.0 info: title: AISquare Studio API version: 1.0.0 paths: /api/v1/community/explore/publications/: get: operationId: explore-publications-list summary: Explore AI Studios (Publications) description: >- **GET:** List all public AI studios (publications) for the community explore page. Supports free text search, category filtering via blogs, and sorting. Default sorting is by trending score which considers publication metrics, blog activity, and recent publishing frequency. **Filtering Options:** - **search**: Free text search across publication name, description, owner, and blog content - **category/category_name**: Filter by categories of published blogs - **subcategory/subcategory_name**: Filter by subcategories of published blogs - **tag/tags**: Filter by tags from publications or published blogs - **visibility**: Filter by visibility status - **owner**: Filter by owner username - **is_premium**: Filter by premium status (true/false) - **is_verified**: Filter by verification status (true/false) **Sorting Options:** - **trending** (default): Sort by calculated trending score - **newest**: Sort by creation date (newest first) - **popular**: Sort by total engagement and blog metrics - **updated**: Sort by last update date tags: - subpackage_community parameters: - name: category in: query description: Filter by category ID (from published blogs) required: false schema: type: integer - name: category_name in: query description: Filter by category name from blogs (case-insensitive partial match) required: false schema: type: string - name: is_premium in: query description: Filter by premium status required: false schema: type: boolean - name: is_verified in: query description: Filter by verification status required: false schema: type: boolean - name: ordering in: query description: Sort results. Use '-' prefix for descending order. required: false schema: $ref: >- #/components/schemas/ApiV1CommunityExplorePublicationsGetParametersOrdering - name: owner in: query description: Filter by owner username required: false schema: type: string - 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 name, description, owner, and blog content 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 description: Filter by tag names (comma-separated list) required: false schema: type: string - name: visibility in: query description: |- * `public` - Public * `private` - Private * `team` - Team * `org` - Organization required: false schema: $ref: >- #/components/schemas/ApiV1CommunityExplorePublicationsGetParametersVisibility responses: '200': description: List of AI studios (publications) for explore page content: application/json: schema: $ref: '#/components/schemas/PaginatedExplorePublicationList' components: schemas: ApiV1CommunityExplorePublicationsGetParametersOrdering: type: string enum: - '-newest' - '-popular' - '-trending' - '-updated' - newest - popular - trending - updated title: ApiV1CommunityExplorePublicationsGetParametersOrdering ApiV1CommunityExplorePublicationsGetParametersVisibility: type: string enum: - org - private - public - team title: ApiV1CommunityExplorePublicationsGetParametersVisibility 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 ExplorePublication: type: object properties: id: type: integer uid: type: string format: uuid name: type: string description: type: string logo: type: - string - 'null' format: uri cover_image: type: - string - 'null' format: uri creator: $ref: '#/components/schemas/CreatorMinimal' followers_count: type: integer description: Get followers count for publication owner. ai_experiences_count: type: integer description: Get count of AI experiences associated with this publication. trending_score: type: number format: double description: Calculate trending score using CommunityService. is_premium: type: boolean description: Whether this is a premium publication tags: type: array items: description: Any type is_verified: type: boolean description: Whether this publication has been verified created_at: type: string format: date-time updated_at: type: string format: date-time custom_url: type: string subscribers_count: type: integer description: Get subscribers count for publication. co_creators: type: array items: description: Any type description: Get list of co-creators for the publication. subscribed: type: boolean required: - id - uid - name - description - logo - cover_image - creator - followers_count - ai_experiences_count - trending_score - is_premium - is_verified - created_at - updated_at - custom_url - subscribers_count - co_creators - subscribed description: >- Simplified serializer for Publication model in community explore page. Shows title, description, creator info, followers count, and AI experiences count. title: ExplorePublication PaginatedExplorePublicationList: 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/ExplorePublication' required: - count - results title: PaginatedExplorePublicationList ``` ## SDK Code Examples ```python Example API response import requests url = "https://api.example.com/api/v1/community/explore/publications/" payload = {} headers = {"Content-Type": "application/json"} response = requests.get(url, json=payload, headers=headers) print(response.json()) ``` ```javascript Example API response const url = 'https://api.example.com/api/v1/community/explore/publications/'; 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 API response package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.example.com/api/v1/community/explore/publications/" 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 API response require 'uri' require 'net/http' url = URI("https://api.example.com/api/v1/community/explore/publications/") 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 API 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/publications/") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php Example API response request('GET', 'https://api.example.com/api/v1/community/explore/publications/', [ 'body' => '{}', 'headers' => [ 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp Example API response using RestSharp; var client = new RestClient("https://api.example.com/api/v1/community/explore/publications/"); 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 API 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/publications/")! 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() ```