> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.ollang.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Retrieve All Folders

> Get a paginated list of all folders with optional search and sorting functionality

Retrieve a paginated list of all folders associated with your account. Folders are used to organize your projects. You can use folder IDs when uploading files to place projects into specific folders.

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://api-integration.ollang.com/integration/folder?page=1&take=10&orderBy=createdAt&orderDirection=desc&search=marketing" \
    -H "X-Api-Key: <your-api-key>"
  ```

  ```javascript JavaScript theme={null}
  const queryParams = new URLSearchParams({
    page: "1",
    take: "10",
    orderBy: "createdAt",
    orderDirection: "desc",
    search: "marketing",
  });

  const response = await fetch(
    `https://api-integration.ollang.com/integration/folder?${queryParams}`,
    {
      method: "GET",
      headers: {
        "X-Api-Key": "<your-api-key>",
      },
    }
  );

  const folders = await response.json();
  console.log("Folders:", folders);
  ```

  ```python Python theme={null}
  import requests

  params = {
      'page': 1,
      'take': 10,
      'orderBy': 'createdAt',
      'orderDirection': 'desc',
      'search': 'marketing'
  }

  headers = {
      'X-Api-Key': '<your-api-key>'
  }

  response = requests.get(
      'https://api-integration.ollang.com/integration/folder',
      headers=headers,
      params=params
  )

  folders = response.json()
  print("Folders:", folders)
  ```

  ```php PHP theme={null}
  $queryParams = http_build_query([
      'page' => 1,
      'take' => 10,
      'orderBy' => 'createdAt',
      'orderDirection' => 'desc',
      'search' => 'marketing'
  ]);

  $curl = curl_init();

  curl_setopt_array($curl, array(
      CURLOPT_URL => 'https://api-integration.ollang.com/integration/folder?' . $queryParams,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_HTTPHEADER => array(
          'X-Api-Key: <your-api-key>'
      ),
  ));

  $response = curl_exec($curl);
  $folders = json_decode($response, true);
  curl_close($curl);

  echo "Folders: " . json_encode($folders);
  ```

  ```go Go theme={null}
  package main

  import (
      "encoding/json"
      "fmt"
      "io"
      "net/http"
      "net/url"
  )

  func main() {
      baseURL := "https://api-integration.ollang.com/integration/folder"

      params := url.Values{}
      params.Add("page", "1")
      params.Add("take", "10")
      params.Add("orderBy", "createdAt")
      params.Add("orderDirection", "desc")
      params.Add("search", "marketing")

      fullURL := baseURL + "?" + params.Encode()

      req, _ := http.NewRequest("GET", fullURL, nil)
      req.Header.Set("X-Api-Key", "<your-api-key>")

      client := &http.Client{}
      resp, _ := client.Do(req)
      defer resp.Body.Close()

      body, _ := io.ReadAll(resp.Body)

      var folders map[string]interface{}
      json.Unmarshal(body, &folders)

      fmt.Println("Folders:", folders)
  }
  ```

  ```java Java theme={null}
  String baseUrl = "https://api-integration.ollang.com/integration/folder";
  String queryParams = "?page=1&take=10&orderBy=createdAt&orderDirection=desc&search=marketing";

  HttpResponse<String> response = Unirest.get(baseUrl + queryParams)
    .header("X-Api-Key", "<your-api-key>")
    .asString();

  JSONObject folders = new JSONObject(response.getBody());
  System.out.println("Folders: " + folders.toString());
  ```
</RequestExample>

## Authorizations

This endpoint requires API key authentication. Include your API key in the request header:

* **Header name**: `X-Api-Key`
* **Header value**: Your API key from the Ollang dashboard
* **Format**: `X-Api-Key: your-api-key-here`

You can obtain your API key from your [Ollang dashboard](https://lab.ollang.com).

## Query Parameters

<ParamField query="page" type="number" default="1">
  The page number to retrieve. Must be a positive integer starting from 1.
</ParamField>

<ParamField query="take" type="number" default="10">
  The number of items per page. Must be between 1 and 50.
</ParamField>

<ParamField query="orderBy" type="string" default="id">
  The field to sort the results by. Common values include `id`, `name`,
  `createdAt`.
</ParamField>

<ParamField query="orderDirection" type="string" default="desc">
  The direction to sort the results. Must be either `asc` (ascending) or `desc`
  (descending).
</ParamField>

<ParamField query="search" type="string">
  A search term to filter folders by name. The search is case-insensitive and
  supports partial matches.
</ParamField>

## Response

The response contains a paginated list of folders with metadata about the pagination.

<ResponseField name="data" type="array">
  Array of folder objects containing detailed information about each folder.

  <Expandable title="Folder Object Properties">
    <ResponseField name="id" type="string">
      Unique identifier of the folder. Use this ID when uploading files to place
      projects into this folder.
    </ResponseField>

    <ResponseField name="name" type="string">
      Name of the folder.
    </ResponseField>

    <ResponseField name="hexColor" type="string">
      Hex color code associated with the folder for visual identification (e.g., "#B6B6B6").
    </ResponseField>

    <ResponseField name="type" type="string">
      Type of the folder. Common values include `default` and `api`.
    </ResponseField>

    <ResponseField name="createdAt" type="string">
      The date and time when the folder was created in ISO 8601 format.
    </ResponseField>

    <ResponseField name="projectCount" type="number">
      The number of projects contained in this folder.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="meta" type="object">
  Pagination metadata providing information about the current page and total results.

  <Expandable title="Pagination Metadata">
    <ResponseField name="page" type="number">
      The current page number of the pagination.
    </ResponseField>

    <ResponseField name="take" type="number">
      The number of items per page.
    </ResponseField>

    <ResponseField name="itemCount" type="number">
      The total number of items across all pages.
    </ResponseField>

    <ResponseField name="pageCount" type="number">
      The total number of pages available.
    </ResponseField>

    <ResponseField name="hasPreviousPage" type="boolean">
      Boolean flag indicating if there is a previous page relative to the current page.
    </ResponseField>

    <ResponseField name="hasNextPage" type="boolean">
      Boolean flag indicating if there is a next page relative to the current page.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": [
      {
        "id": "60b8d6f1e1b9b1d8c6c0d8e2",
        "name": "Marketing Videos",
        "hexColor": "#6148f9",
        "type": "default",
        "createdAt": "2024-01-10T08:15:30.511Z",
        "projectCount": 12
      },
      {
        "id": "60b8d6f1e1b9b1d8c6c0d8e5",
        "name": "API Uploads",
        "hexColor": "#B6B6B6",
        "type": "api",
        "createdAt": "2024-01-05T14:22:10.211Z",
        "projectCount": 45
      },
      {
        "id": "60b8d6f1e1b9b1d8c6c0d8e7",
        "name": "Training Materials",
        "hexColor": "#34D399",
        "type": "default",
        "createdAt": "2024-01-03T11:45:22.847Z",
        "projectCount": 8
      }
    ],
    "meta": {
      "page": 1,
      "take": 10,
      "itemCount": 3,
      "pageCount": 1,
      "hasPreviousPage": false,
      "hasNextPage": false
    }
  }
  ```

  ```json 400 theme={null}
  {
    "error": "Invalid query parameters",
    "message": "The 'take' parameter must be between 1 and 50",
    "code": "INVALID_PAGINATION"
  }
  ```

  ```json 401 theme={null}
  {
    "error": "Unauthorized",
    "message": "Invalid or missing API key",
    "code": "UNAUTHORIZED"
  }
  ```

  ```json 500 theme={null}
  {
    "error": "Internal server error",
    "message": "An unexpected error occurred while retrieving folders",
    "code": "INTERNAL_ERROR"
  }
  ```
</ResponseExample>
