Summary

The viewerOpt() GraphQL query returns the currently authenticated user account, if any — which means it will not return anything if the user is not authenticated,

API Stability Long-Term

Syntax

graphql
viewerOpt(): Account

There is no input for this query field. Specify the data you want returned. You can get the user name associated with the account, whether the user has some sort of root access, and the type of account. See the Returned Values section for more possibilities.

Example

Raw
graphql
query {
  viewerOpt {id, username, fullName, email, 
             company, isCloudProAccount}
}
Mac OS or Linux (curl)
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "query {
  viewerOpt {id, username, fullName, email, 
             company, isCloudProAccount}
}"
}
EOF
Mac OS or Linux (curl) One-line
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "query {
  viewerOpt {id, username, fullName, email, 
             company, isCloudProAccount}
}"
}
EOF
Windows Cmd and curl
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql ^
    -H "Authorization: Bearer $TOKEN" ^
    -H "Content-Type: application/json" ^
    -d @'{"query" : "query { ^
  viewerOpt {id, username, fullName, email,  ^
             company, isCloudProAccount} ^
}" ^
} '
Windows Powershell and curl
powershell
curl.exe -X POST 
    -H "Authorization: Bearer $TOKEN"
    -H "Content-Type: application/json"
    -d '{"query" : "query {
  viewerOpt {id, username, fullName, email, 
             company, isCloudProAccount}
}"
}'
    "$YOUR_LOGSCALE_URL/graphql"
Perl
perl
#!/usr/bin/perl

use HTTP::Request;
use LWP;

my $TOKEN = "TOKEN";

my $uri = '$YOUR_LOGSCALE_URL/graphql';

my $query = "query {
  viewerOpt {id, username, fullName, email, 
             company, isCloudProAccount}
}";
$query =~ s/\n/ /g;
my $json = sprintf('{"query" : "%s"}',$query);
my $req = HTTP::Request->new("POST", $uri );

$req->header("Authorization" => "Bearer $TOKEN");
$req->header("Content-Type" => "application/json");

$req->content( $json );

my $lwp = LWP::UserAgent->new;

my $result = $lwp->request( $req );

print $result->{"_content"},"\n";
Python
python
#! /usr/local/bin/python3

import requests

url = '$YOUR_LOGSCALE_URL/graphql'
mydata = r'''{"query" : "query {
  viewerOpt {id, username, fullName, email, 
             company, isCloudProAccount}
}"
}'''

resp = requests.post(url,
                     data = mydata,
                     headers = {
   "Authorization" : "Bearer $TOKEN",
   "Content-Type" : "application/json"
}
)

print(resp.text)
Node.js
javascript
const https = require('https');

const data = JSON.stringify(
    {"query" : "query {
  viewerOpt {id, username, fullName, email, 
             company, isCloudProAccount}
}"
}
);


const options = {
  hostname: '$YOUR_LOGSCALE_URL',
  path: 'graphql',
  port: 443,
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length,
    Authorization: 'BEARER ' + process.env.TOKEN,
    'User-Agent': 'Node',
  },
};

const req = https.request(options, (res) => {
  let data = '';
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (d) => {
    data += d;
  });
  res.on('end', () => {
    console.log(JSON.parse(data).data);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.write(data);
req.end();
Example Responses
Success (HTTP Response Code 200 OK)
json
{
  "data": {
    "viewerOpt": {
      "email": "bob@company.com",
      "username": "bobnewhart",
      "fullName": "Bob Newhart",
      "company": "Company, Inc.",
      "id": "abc123",
      "isCloudProAccount": true
    }
  }
}

Returned Values

Returns an Account object. The table below lists all fields:

Table: Account Datatype

ParameterTypeRequiredDefaultStabilityAvailabilityDescription
Some input parameters may be required, as indicated in the Required column. For return values, this indicates that you are assured a value if the field is requested for the results. 
Table last updated: Oct 14, 2026 
announcementNotification  Long-Term Any announcements for the account. See Notification.
canCreateCloudTrialRepoBooleanyes Long-Term Whether the account may create a cloud trial repository.
canCreateRepoBooleanyes Long-Term Whether the account can create a repository.
companyString  Long-Term The name of the company for the account.
countryCodeString  Long-Term The two-letter ISO 3166-1 Alpha-2 code for the country of residence (e.g., us).
createdAtDateTimeyes Long-Term The data and time the account was created.
currentOrganizationOrganizationyes Long-Term Information on the Organization. See Organization.
emailString  Long-Term The account's email address for communications from LogScale.
enabledFeaturesForAccountFeatureFlagyes Long-Term Features that are enabled for the account. See FeatureFlag.
externalGroupSynchronizationBooleanyes Long-Term Whether there is group synchronization.
externalPermissionsBooleanyes Long-Term Whether permissions are managed externally.
fieldConfigurations(viewName: String!)FieldConfigurationyes Long-Term The name of the view, as well as fields and how to configure them. See FieldConfiguration.
firstNameString  Long-Term The user's actual first name (e.g., Bob). Don't use with fullName.
fullNameString  Long-Term The user's full name (e.g., Bob Smith). Don't use if using other name parameters.
idStringyes Long-Term The unique identifier for the account.
isCloudProAccountBooleanyes Long-Term Whether the account is a cloud professional account.
isOrganizationRootBooleanyes Long-Term Whether the organization is granted organization ownership.
isRootBooleanyes Long-Term Whether the account is granted root access.
lastNameString  Long-Term The user's actual last name or family name (e.g., Smith). Don't use with fullName.
limitInt):NotificationsResultSetyes Short-Term The amount of results to return.
orderByOrderBy,    Choose the order in which the results are returned.
phoneNumberString  Long-Term The telephone number for LogScale to use for telephone text messages.
pictureString  Long-Term File name of an image file for the account.
settingsUserSettingsyes Long-Term Various default settings for user accounts. See UserSettings.
skipInt,    The number of results to skip or the offset to use. For instance if implementing pagination, set skip = limit * (page - 1)
stateCodeString  Long-Term The two-letter, ISO 3166-2 country sub-division code for the state of residence (e.g., ny).
tokenPersonalUserToken  Long-Term The personal user token table for the account. See PersonalUserToken.
usernameStringyes Long-Term The user name for the account.