Make Games,
Earn Money ^_^

Breezer has 120,000 players, and there is —currently— very little competition for their attention. That gives you a rare chance right now to get noticed. No more making games that no one will see!

Game dev with Breezer isn't just fun—it's meaningful. You'll help people lead healthier lives, earn appreciation and recognition from our community, and make money doing it!

We reward you 1 cent for every player who opens your game each day. So just 1,000 daily players will net you $300 a month in perpetuity. You can make as many games as you like.

What you need

  • The skills to make a game that runs in a web browser (frameworks like Phaser are fast, free, and easy-to-learn)
  • A RESTful API key (request one from here)

What you get

  • Direct access to an appreciative and engaged community.
  • 1 cent per player, per day. No cap!
  • A simple stats panel so you can see how many people are playing your game.

What kind of game can I make?

Anything you can imagine! Games that feature some form of currency tend to work particularly well, since they naturally tie into Breezer's calorie-based mechanics. But there are no creative limits — if it meets the rules, you're good to go.

Rules:

To be accepted, your game must:

  • Run in a standard web browser
  • Be designed for mobile devices
  • Work in portrait orientation (landscape support coming soon!)

The following content is not allowed:

  • Graphic nudity
  • Graphic violence
  • Gambling (real or simulated)
  • Offensive material (mild swearing is okay, but hate speech is not)
  • Strong political statements (general commentary on current issues is fine)

Additionally, you may only upload games you've created yourself—unless you've received explicit permission from the author, and from us.


Browser API

URL Parameters

This is where it all starts. When a player first loads your game in Breezer's browser the URL will be appended with the following query string parameters:

user_identifier

User's unique identifier.

Example: ?user_identifier=w5h06r354u2sjee

public_key

Users unique public key.

Example: &public_key=p4kzbm[…]pzj1i99

refresh

This is how your game knows when to collect updated user information about the user from the RESTful API. It happens on new sessions, or when user has made a Gold purchase. In both cases you should check the API for new calories and gold.

Example: &refresh=yes

os

The OS running on the device: ios or android

Example: ios

Javascript API

You can control the Breezer app from within your game, by changing the following window object values with Javascript:

window.app_exit_game

yes to exit the game and return the user to the Breezer main menu.

Example: window.app_exit_game='yes'

window.app_request_notifications

Set as yes to show a popup requesting permission to send the user push notifications.

Example: window.app_request_notifications='yes'

window.app_open_page

Open a page in the Breezer app. Accepts:

  • user_details
  • avatar
  • checkin_streak_protection
  • notifications
  • settings
  • activity_data_import

Example: window.app_open_page='settings'

window.app_open_url

Open the user's default browser (eg: Safari), and load this URL.

Example: window.app_open_url='http://google.com'

window.app_open_share

yes to show a popup window containing a share link and share options.

Example: window.app_open_share='yes'

window.app_play_music

Support coming soon.
Pass the URL of a piece of music to play. Music will persist, even as webpages change

Example: window.app_play_music='http[...]tune.mp3'


RESTful API

To access Breezer's RESTful API you must get a property identifier and private key (one combination per game). You can request these from us by requesting one.

Endpoint: Users (GET)

URL:

Parameters:

Pass these via GET.

private_key

Required. String (64)

Your API key.

Example: 539eec[…]cbed0e

identifier

Required. String (15)

User's unique identifier.

Example: w5h06r354u2sjee

public_key

Required. String (32)

User's unique public key.

Example: p4kzbm[…]pzj1i99

Return Values:

The following key/value pairs will be returned in JSON format.

success

Boolean

false on error, else true.

Example: true

time

Integer (13)

Unix timestamp, including decimals to the millisecond.

Example: 1745072456.668

message

String

Description of the response. If success is false then this will show the error.

Example: Please pass a Private Key to use GET users (v1) endpoint.

user

Array

An array of the following user data:

user[status]

String

Whether the user's account is active or closed.

Example: active

user[forename]

String / null

The user's forename

Example: Harry

user[surname]

String / null

The user's surname

Example: Potter

user[surname]

String / null

The user's surname

Example: Potter

user[country]

String (2)

2-character ISO country code

Example: US

user[timezone]

String

ISO timezone code

Example: America/New_York

user[dim_flashing]

String

yes if the user does not want to see flashing lights, else no

Example: no

user[avatar]

String / null

Value to be appended to the avatar URL, if avatar exists.

Example: jpeg?9357

user[referrals]

Integer

Number of people the user has brought to Breezer. Can be used to unlock special items in your game.

Example: 0

user[notifications]

String

subscribed if the user wants notifications from your game, else unsubscribed.

Example: subscribed

user[calories_available]

Integer

The number of calories stored in Breezer will be updated every time the user does some exercise. Therefore in most/all cases you should treat the number of calories returned by this endpoint as the official amount — not the number help by your game/database..

Example: 394

user[calories_spent]

Integer

The number of calories the user has spent in your game

Example: 7845

Endpoint: Users (PUT)

Every time your game changes the number of calories, you should inform Breezer via this endpoint.

URL:

Parameters:

Pass these via PUT

private_key

Required. String (64)

Your API key.

Example: 539eec[…]cbed0e

update_all

String

yes to update all users, or omit to update a single user with their identifier and public_key below.

Example: yes

identifier

String (15)

A specific user's unique identifier. Required if update_all is set to yes.

Example: w5h06r354u2sjee

public_key

String (32)

A specific user's unique public key. Required if update_all is set to yes.

Example: p4kzbm[…]pzj1i99

set_calories

Integer

Set a precise number of available calories.

Example: 400

add_calories

Integer

Add to the current number of available calories.

Example: 24

deduct_calories

Integer

Deduct from the current number of available calories.

Example: 24

get_user

String

yes, with an identifier and public_key to return details of that user.

Example: yes

Endpoint: Notifications (POST)

Instructs notifications to be sent to one or multiple users.

URL:

Parameters:

Pass these in the POST body.

private_key

Required. String (64)

Your API key.

Example: 539eec[…]cbed0e

recipients

Required. String. JSON

A JSON-encoded array of up to 250 recipients. Each recipient (a sub-array) can contain the following parameters...

recipients > i

Required. String (15)

The recipient user's unique identifier.

Example: w5h06r354u2sjee

recipients > p

Required. String (32)

The recipient user's unique public key.

Example: p4kzbm[…]pzj1i99

recipients > b

Required, unless passed in mail_merge array. String

The body of the notification. Can include mail_merge find/replace values, such as ~1~.

Example: Hi James, ~1~

recipients > in

String

no to NOT send inapp notification, else one will be sent.

Example: no

recipients > pn

String

no to NOT send push notification, else one will be sent.

Example: no

recipients > pp

String

  • low = send push notification midday, local time.
  • high = send push notification immediately (default)
  • highest = send push notification immediately, and priortised ahead of any high priority notifications.
Not applicable if pn is set to no.

Example: low

recipients > pv

String

off to NOT vibrate the user's device on receipt of the push notification, else it will. Not applicable if pn is set to no.

Example: off

recipients > ps

String

off to NOT make a sound on the user's device on receipt of the push notification, else it will. Not applicable if pn is set to no.

Example: off

recipients > pb

String

off to NOT show a badge against the Breezer app icon, on receipt of the push notification, else one will show. Not applicable if pn is set to no.

Example: off

mail_merge

String. JSON

JSON encoded array of mail merge data to be applied to all push notifications. This can drastically reduce the size of your request payload when sending multiple notifications.

mail_merge > ~1~

to

mail_merge > ~99~

String

Find/replaces the corresponding value in the body. Multiple values can be passed via ~1~ to ~99~. All values must be a number surrounded by a tilde symbol.

Example: your castle has been upgraded!

mail_merge > pp

String

Push priority. Used if recipients > pp is not set.

Example: low

mail_merge > pv

String

Push vibration. Used if recipients > pv is not set.

Example: off

mail_merge > ps

String

Push sound. Used if recipients > ps is not set.

Example: off

mail_merge > pb

String

Push badge. Used if recipients > pb is not set.

Example: off

Return Values:

The following key/value pairs will be returned in JSON format.

successes

Integer

The number of successful notifications sent.

Example: 100

failures

Integer

The number of failed notifications not sent.

Example: 0


Webhook

When you apply for a RESTful API key you will be asked for a URL to your game's webhook endpoint. Breezer will send the following user data payload to this address, whenever user data is updated:

private_key

String (64)

Key only known by you and Breezer. Ensure this matches the one you have on record before trusting the webhook.

Example: 539eec[…]cbed0e

users

String. JSON.

JSON-encoded array of users. Each user is a sub-array containing the following user data:

users > user_identifier

String (15)

Unique identifier of the user being updated.

Example: w5h06r354u2sjee

users > status

String

Status of the user's account: active or close.

Example: Active

users > forename

String / null

Forename of the user, if known.

Example: Harry

users > surname

String / null

Surname of the user, if known.

Example: Potter

users > country

String (2)

2-character ISO country code.

Example: US

users > timezone

String

ISO timezone code.

Example: America/New_York

users > dim_flashing

String

yes if the user does not want to see flashing lights, else no.

Example: no

users > avatar

String / null

Value to be appended to the avatar URL, if avatar exists.

Example: jpeg?9357

users > referrals

Integer

Number of people the user has brought to Breezer. Can be used to unlock special items in your game.

Example: 0

users > notifications

String

subscribed if the user wants notifications from your game, else unsubscribed.

Example: subscribed

Note: Updated calorie data is not sent by webhook. This should be collected via the API when the user loads your game.


Avatar URL

Each user's avatar URL can be constructed by concatinating the following values:

  1. https://breezer-avatars-eu-west-1.s3.eu-west-1.amazonaws.com
  2. A /, followed by characters 1 and 2 of the user's identifier
  3. A /, followed by characters 3 and 4 of the user's identifier
  4. A /, followed by the entire user's identifier
  5. A /, followed by the size of image you want: 's'mall, 'm'edium or 'l'arge
  6. A dot
  7. The avatar field returned by the RESTful API

Example

For a user with identifier w5h06r354u2sjee and the avatar jpeg?9357 your avatar URL would look something like this:

https://breezer-avatars-eu-west-1.s3.eu-west-1.amazonaws.com/w5/h0/w5h06r354u2sjee/s.jpeg?9357