Example: ```jsonc { "runOnStartup": true, "cronSchedule": "0 0,6,12,18 * * *", "logLevel": "info", "webPortalConfig": { "baseUrl": "https://epic.example.com", }, "accounts": [ { "email": "example@gmail.com", }, ], "notifiers": [ // You may configure as many of any notifier as needed // Here are some examples of each type { "type": "email", "smtpHost": "smtp.gmail.com", "smtpPort": 587, "emailSenderAddress": "hello@gmail.com", "emailSenderName": "Epic Games Free Games", "emailRecipientAddress": "hello@gmail.com", "secure": false, "auth": { "user": "hello@gmail.com", "pass": "abc123", }, }, { "type": "discord", "webhookUrl": "https://discord.com/api/webhooks/123456789123456789/A-abcdefghijklmn-abcdefghijklmnopqrst12345678-abcdefghijklmnop123456", }, { "type": "telegram", "token": "644739147:AAGMPo-Jz3mKRnHRTnrPEDi7jUF1vqNOD5k", "chatId": "-987654321", }, { "type": "apprise", "apiUrl": "http://192.168.1.2:8000", "urls": "mailto://user:pass@gmail.com", }, ], } ```

Properties

accountConcurrency: number = ...

How many accounts can be processed at the same time

Example

1

Default

3

Env

ACCOUNT_CONCURRENCY

accounts: AccountConfig[]

A list of accounts to work with

blacklistedGames: string[] = []

A list of excluded game titles to skip during processing.

Example

['Gigabash Demo', 'Another Blacklisted Game']

Env

BLACKLISTED_GAMES (comma separated)

browserLaunchRetryAttempts: number = ...

How many times to attempt retry attempts to launch a browser after it times out

Example

2

Default

5

Env

BROWSER_LAUNCH_RETRY_ATTEMPTS

browserLaunchTimeout: number = ...

In seconds, how long before a stuck Chromium process times out and gets restarted

Example

30

Default

15

Env

BROWSER_LAUNCH_TIMEOUT

browserNavigationTimeout: number = ...

How long in milliseconds the browser navigation will wait before timing out. 0 disables timeout (not recommended). See: https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagesetdefaulttimeouttimeout

Example

120000

Default

30000

Env

BROWSER_NAVIGATION_TIMEOUT

countryCode: undefined | string = process.env.COUNTRY_CODE

The 2 character country code associated with your account. Used when determining if a game is blacklisted for your account. Commonly blacklisted countries: "MO","HK","RU","BY","CN"

Example

RU

Default

blacklisting is not checked

Env

COUNTRY_CODE

cronSchedule: string = ...

Cron string of when to run the process. It is recommended to run every 6 hours, otherwise the refresh tokens will expire after 8 hours and a new login will be prompted every run. If you want the check to occur immediately after the new free game is released, you can offset the cron schedule. For example in a timezone where the free games release at 11:00am: 0 5,11,17,23 * * *

Example

0 5,11,17,23 * * *

Default

0 0,6,12,18 * * * (every six hours)

Env

CRON_SCHEDULE

deviceAuthClientId: string = ...

The Epic Games application client ID used for device code authorization to check your account's ownership of a game List of available clients here.

Example

b070f20729f84693b5d621c904fc5bc2 (Diesel - Dauntless)

Example

e645e4b96298419cbffbfa353ebf8b82 (wexAndroidGameClient)

Default

98f7e42c2e3a4f86a74eb43fbb41ed39 (fortniteNewSwitchGameClient client ID)

Env

DEVICE_AUTH_CLIENT_ID

deviceAuthPollRateSeconds: number = ...

After redirecting to a device authorization verification URL, how often the Epic Games API is polled for a successful login.

Example

20

Default

10

Env

DEVICE_AUTH_POLL_RATE_SECONDS

deviceAuthSecret: string = ...

The Epic Games application secret used for device code authorization to check your account's ownership of a game. List of available clients here.

Example

HG@XE&TGCxEJsgT#&_p2]=aRo#~>=>+c6PhR)zXP (Diesel - Dauntless)

Example

d03089fd-628a-448a-ac39-0e8c5b022a11 (wexAndroidGameClient)

Default

0a2449a2-001a-451e-afec-3e812901c4d7 (fortniteNewSwitchGameClient client secret)

Env

DEVICE_AUTH_SECRET

errorsDir: string = ...

The full path where the browser automation error screenshots will be output

Example

/errors

Default

${CONFIG_DIR}/errors

Env

ERRORS_DIR

intervalTime: number = ...

The delay interval between runs of each account in seconds. (Only effective when multiple accounts are configured)

Example

30

Default

60

Env

INTERVAL_TIME

logLevel: string = ...

Log level in lower case. Can be [silent, error, warn, info, debug, trace]

Example

debug

Default

info

Env

LOG_LEVEL

notifiers?: AnyNotifierConfig[]

Global default notification configuration.

You may configure multiple notifiers, and they will all be triggered simultaneously.

runOnStartup: boolean = ...

If true, the process will run on startup in addition to the scheduled time.

Example

true

Default

false

Env

RUN_ON_STARTUP

runOnce: boolean = ...

If true, don't schedule runs. Use with RUN_ON_STARTUP to run once and shutdown.

Example

true

Default

false

Env

RUN_ONCE

searchStrategy: string = ...

The search criteria for finding free games. Either the weekly promotion, and free promotion, or all free products.

Example

weekly

Default

all

Env

SEARCH_STRATEGY

skipVersionCheck: boolean = ...

Skip the call to api.github.com that checks for the latest version on launch

Example

true

Default

false

Env

SKIP_VERSION_CHECK

testNotifiers: boolean = ...

When true, the process will send test notifications with a test redirect to example.com for all configured accounts. Be sure to disable this after a successful test. This test will block normal operation until the test link is accessed by one account. The test page can only be used once.

Example

true

Default

false

Env

TEST_NOTIFIERS

timezone: string = ...

Example

America/Chicago

Default

UTC

Env

TZ

webPortalConfig?: WebPortalConfig

Web server configurations for the remote web portal

Methods

Generated using TypeDoc