# Get MAU usage

GET https://app.launchdarkly.com/api/v2/usage/mau

Get a time-series array of the number of monthly active users (MAU) seen by LaunchDarkly from your account. The granularity is always daily.<br/><br/>Endpoints for retrieving monthly active users (MAU) do not return information about active context instances. After you have upgraded your LaunchDarkly SDK to use contexts instead of users, you should not rely on this endpoint. To learn more, read [Account usage metrics](https://launchdarkly.com/docs/home/account/metrics).

Reference: https://launchdarkly.com/docs/api/account-usage-beta/get-mau-usage

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: LaunchDarkly REST API
  version: 1.0.0
paths:
  /api/v2/usage/mau:
    get:
      operationId: get-mau-usage
      summary: Get MAU usage
      description: >-
        Get a time-series array of the number of monthly active users (MAU) seen
        by LaunchDarkly from your account. The granularity is always
        daily.<br/><br/>Endpoints for retrieving monthly active users (MAU) do
        not return information about active context instances. After you have
        upgraded your LaunchDarkly SDK to use contexts instead of users, you
        should not rely on this endpoint. To learn more, read [Account usage
        metrics](https://launchdarkly.com/docs/home/account/metrics).
      tags:
        - subpackage_accountUsageBeta
      parameters:
        - name: from
          in: query
          description: >-
            The series of data returned starts from this timestamp. Defaults to
            30 days ago.
          required: false
          schema:
            type: string
            format: string
        - name: to
          in: query
          description: >-
            The series of data returned ends at this timestamp. Defaults to the
            current time.
          required: false
          schema:
            type: string
            format: string
        - name: project
          in: query
          description: >-
            A project key to filter results to. Can be specified multiple times,
            one query parameter per project key, to view data for multiple
            projects.
          required: false
          schema:
            type: string
            format: string
        - name: environment
          in: query
          description: >-
            An environment key to filter results to. When using this parameter,
            exactly one project key must also be set. Can be specified multiple
            times as separate query parameters to view data for multiple
            environments within a single project.
          required: false
          schema:
            type: string
            format: string
        - name: sdktype
          in: query
          description: >-
            An SDK type to filter results to. Can be specified multiple times,
            one query parameter per SDK type. Valid values: client, server
          required: false
          schema:
            type: string
            format: string
        - name: sdk
          in: query
          description: >-
            An SDK name to filter results to. Can be specified multiple times,
            one query parameter per SDK.
          required: false
          schema:
            type: string
            format: string
        - name: anonymous
          in: query
          description: >-
            If specified, filters results to either anonymous or nonanonymous
            users.
          required: false
          schema:
            type: string
            format: string
        - name: groupby
          in: query
          description: >-
            If specified, returns data for each distinct value of the given
            field. Can be specified multiple times to group data by multiple
            dimensions (for example, to group by both project and SDK). Valid
            values: project, environment, sdktype, sdk, anonymous, contextKind,
            sdkAppId
          required: false
          schema:
            type: string
            format: string
        - name: aggregationType
          in: query
          description: >-
            If specified, queries for rolling 30-day, month-to-date, or daily
            incremental counts. Default is rolling 30-day. Valid values:
            rolling_30d, month_to_date, daily_incremental
          required: false
          schema:
            type: string
            format: string
        - name: contextKind
          in: query
          description: >-
            Filters results to the specified context kinds. Can be specified
            multiple times, one query parameter per context kind. If not set,
            queries for the user context kind.
          required: false
          schema:
            type: string
            format: string
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Usage response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SeriesListRep'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidRequestErrorRep'
        '401':
          description: Invalid access token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorRep'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorRep'
        '429':
          description: Rate limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitedErrorRep'
servers:
  - url: https://app.launchdarkly.com
  - url: https://app.launchdarkly.us
components:
  schemas:
    SeriesMetadataRep:
      type: object
      additionalProperties:
        description: Any type
      title: SeriesMetadataRep
    SeriesTimeSliceRep:
      type: object
      additionalProperties:
        type: integer
      title: SeriesTimeSliceRep
    SeriesListRep:
      type: object
      properties:
        _links:
          type: object
          additionalProperties:
            description: Any type
          description: The location and content type of related resources
        metadata:
          type: array
          items:
            $ref: '#/components/schemas/SeriesMetadataRep'
          description: Metadata about each series
        series:
          type: array
          items:
            $ref: '#/components/schemas/SeriesTimeSliceRep'
          description: >-
            An array of data points with timestamps. Each element of the array
            is an object with a 'time' field, whose value is the timestamp, and
            one or more key fields. If there are multiple key fields, they are
            labeled '0', '1', and so on, and are explained in the
            <code>metadata</code>.
      required:
        - _links
        - metadata
        - series
      title: SeriesListRep
    InvalidRequestErrorRep:
      type: object
      properties:
        code:
          type: string
          description: Specific error code encountered
        message:
          type: string
          description: Description of the error
      required:
        - code
        - message
      title: InvalidRequestErrorRep
    UnauthorizedErrorRep:
      type: object
      properties:
        code:
          type: string
          description: Specific error code encountered
        message:
          type: string
          description: Description of the error
      required:
        - code
        - message
      title: UnauthorizedErrorRep
    ForbiddenErrorRep:
      type: object
      properties:
        code:
          type: string
          description: Specific error code encountered
        message:
          type: string
          description: Description of the error
      required:
        - code
        - message
      title: ForbiddenErrorRep
    RateLimitedErrorRep:
      type: object
      properties:
        code:
          type: string
          description: Specific error code encountered
        message:
          type: string
          description: Description of the error
      required:
        - code
        - message
      title: RateLimitedErrorRep
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: Authorization

```

## SDK Code Examples

```python
import requests

url = "https://app.launchdarkly.com/api/v2/usage/mau"

headers = {"Authorization": "<apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://app.launchdarkly.com/api/v2/usage/mau';
const options = {method: 'GET', headers: {Authorization: '<apiKey>'}};

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"
	"net/http"
	"io"
)

func main() {

	url := "https://app.launchdarkly.com/api/v2/usage/mau"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "<apiKey>")

	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://app.launchdarkly.com/api/v2/usage/mau")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://app.launchdarkly.com/api/v2/usage/mau")
  .header("Authorization", "<apiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://app.launchdarkly.com/api/v2/usage/mau', [
  'headers' => [
    'Authorization' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://app.launchdarkly.com/api/v2/usage/mau");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://app.launchdarkly.com/api/v2/usage/mau")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

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()
```