SkillAgentSearch skills...

Destiny

A client for Bungie's Destiny API.

Install / Use

/learn @waltfy/Destiny
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

:warning: I do not intend to maintain this project any longer — feel free to ask for contributor privilege.

Destiny-Client npm version Gitter

A simple client for interacting with Bungie's Destiny API.

The intent is to implement more and more end-points as time allows.

Please feel free submit issues and requests, or get in touch.

Getting Started

NOTE: As of Desiny 2.0, The Taken King, Bungie is deeming some items as "Classified", therefore all requests now require the X-API-Key HTTP header. The Destiny constructor should now be called as below:

var destiny = Destiny('your_api_key');

Proxy Server

Unfortunately you cannot "hit" https://bungie.net directly. So if you plan to use this library in client-side code, due to CORS you'll have to run your own proxy server to handle your requests to Bungie for you. I have added an example proxy server (proxy.js). Simply run node proxy.js. Credit to @phuu.

Node

npm install destiny-client

Note that if you wish, you may override the default host (https://bungie.net/) with your own. i.e. If you have a proxy server to handle your requests. See proxy-server instructions above. Also works with React Native.

var destiny = require('destiny-client')(API_KEY);

destiny
  .Search({
    membershipType: 1,
    name: 'waltercarvalho'
  })
  .then(users => {
    console.debug('users', users);
  });

Web

Simply include destiny.js on your page. You will most likely need a proxy server due to CORS. See proxy-server instructions above.

<script src='destiny.js' type='text/javascript'></script>
<script type="text/javascript">

    var destiny = Destiny(API_KEY, 'http://{{ host }}:{{ yourport }}/platform/Destiny/'); // this is your proxy server

    destiny
        .Search({
            membershipType: 1,
            name: 'waltercarvalho'
        })
        .then(users => {
            console.debug('users', users);
        });
</script>

Acquiring Cookies

TODO: Working on automating this, for now simply inspect your resources to find cookies. Guides can be found online.

API Overview

In all requests membershipType is a Number representing the account type, or what network you are in. The network types are:

  • 1: XBox Live.
  • 2: PlayStation Network (PSN).

Destiny::Search(params)

Returns an Array of accounts.

params (Object)

  • membershipType - Number
  • name - String, the name of your account.

Sample Usage:

var destiny = require('destiny-client')(API_KEY);

destiny
    .Search({
        membershipType: 1,
        name: 'waltercarvalho'
    })
    .then(res => { /* deal with response */ })
    .catch(err => { /* handle error */ });

Sample Response:

[
    {
        iconPath: '/img/theme/destiny/icons/icon_xbl.png',
        membershipType: 1,
        membershipId: '4611686018439937004',
        displayName: 'waltercarvalho'
    }
]

Spec

As per defined in endpoints.js.

{ name: 'Search', url: 'SearchDestinyPlayer/${ membershipType }/${ name }/', required: ['membershipType', 'name'] }


Destiny::Account(params)

Returns an Object with details about an account.

params (Object)

  • membershipType - Number
  • membershipId - String, your membership id.

Sample Usage:

var destiny = require('destiny-client')(API_KEY);

destiny
    .Account({
        membershipType: 1,
        membershipId: '4611686018439937004'
    })
    .then(res => { /* deal with response */ })
    .catch(err => { /* handle error */ });

Sample Response:

{ membershipId: '4611686018439937000',
  membershipType: 1,
  characters:
   [ { characterBase: [Object],
       levelProgression: [Object],
       emblemPath: '/common/destiny_content/icons/117285c72a9c89626cd7b3fa3d7226ee.jpg',
       backgroundPath: '/common/destiny_content/icons/2c73bcd2e874e640f158197bb9f2c55d.jpg',
       emblemHash: 776529032,
       characterLevel: 2,
       baseCharacterLevel: 2,
       isPrestigeLevel: false,
       percentToNextLevel: 50.1219521 } ],
  inventory:
   { buckets: { Invisible: [], Item: [], Currency: [] },
     currencies: [ [Object] ] },
  grimoireScore: 85 }

Spec

As per defined in endpoints.js.

{ name: 'Account', url: '${ membershipType }/Account/${ membershipId }', required: ['membershipType', 'membershipId'] },


Destiny::Character(params)

Returns an Object with details about a character.

params (Object)

  • membershipType - Number
  • membershipId - String, your membership id.
  • characterId - String, your character id.

Sample Usage:

var destiny = require('destiny-client')(API_KEY);

destiny
    .Character({
        membershipType: 1,
        membershipId: '4611686018439937004',
        characterId: '2305843009244228629'
    })
    .then(res => { /* deal with response */ })
    .catch(err => { /* handle error */ });

Sample Response:

{ characterBase:
   { membershipId: '4611686018439937004',
     membershipType: 1,
     characterId: '2305843009244228629',
     dateLastPlayed: '2015-05-24T14:31:37Z',
     minutesPlayedThisSession: '87',
     minutesPlayedTotal: '6130',
     powerLevel: 32,
     raceHash: 2803282938,
     genderHash: 3111576190,
     classHash: 2271682572,
     currentActivityHash: 0,
     lastCompletedStoryHash: 0,
     stats:
      { STAT_DEFENSE: [Object],
        STAT_INTELLECT: [Object],
        STAT_DISCIPLINE: [Object],
        STAT_STRENGTH: [Object],
        STAT_LIGHT: [Object],
        STAT_ARMOR: [Object],
        STAT_AGILITY: [Object],
        STAT_RECOVERY: [Object],
        STAT_OPTICS: [Object] },
     customization:
      { personality: 2166136261,
        face: 820889531,
        skinColor: 2542514575,
        lipColor: 1328348389,
        eyeColor: 1511637748,
        hairColor: 2001723931,
        featureColor: 2166136261,
        decalColor: 233897108,
        wearHelmet: false,
        hairIndex: 10,
        featureIndex: 0,
        decalIndex: 0 },
     grimoireScore: 2100,
     peerView: { equipment: [Object] },
     genderType: 0,
     classType: 2,
     buildStatGroupHash: 1997970403 },
  levelProgression:
   { dailyProgress: 4032,
     weeklyProgress: 196282,
     currentProgress: 1091453,
     level: 13,
     step: 0,
     progressToNextLevel: 51453,
     nextLevelAt: 80000,
     progressionHash: 2030054750 },
  emblemPath: '/common/destiny_content/icons/a9ac444de02308d1410af8a0c201d177.jpg',
  backgroundPath: '/common/destiny_content/icons/ee90656ee23ceabf4fe6c4b34234d3ca.jpg',
  emblemHash: 3656150982,
  characterLevel: 32,
  baseCharacterLevel: 20,
  isPrestigeLevel: true,
  percentToNextLevel: 25 }

Spec

As per defined in endpoints.js.

{ name: 'Character', url: '${ membershipType }/Account/${ membershipId }/Character/${ characterId }/', required: ['membershipType', 'membershipId', 'characterId'] }

Destiny::Activities(params)

Returns an Object with details about a character's activities.

params (Object)

  • membershipType - Number
  • membershipId - String, your membership id.
  • characterId - String, your character id.

Sample Usage:

var destiny = require('destiny-client')(API_KEY);

destiny
    .Character({
        membershipType: 1,
        membershipId: '4611686018439937004',
        characterId: '2305843009244228629'
    })
    .then(res => { /* deal with response */ })
    .catch(err => { /* handle error */ });

Spec

As per defined in endpoints.js.

{ name: 'Activities', url: '${ membershipType }/Account/${ membershipId }/Character/${ characterId }/Activities', required: ['membershipType', 'membershipId', 'characterId'] }


Destiny::Inventory(params)

Returns an Object with details about character's inventory.

params (Object)

  • membershipType - Number
  • membershipId - String, your membership id.
  • characterId - String, your character id.

Sample Usage:

var destiny = require('destiny-client')(API_KEY);

destiny
    .Inventory({
        membershipType: 1,
        membershipId: '4611686018439937004',
        characterId: '2305843009244228629'
    })
    .then(res => { /* deal with response */ })
    .catch(err => { /* handle error */ });

Spec

As per defined in endpoints.js.

{ name: 'Inventory', url: '${ membershipType }/Account/${ membershipId }/Character/${ characterId }/Inventory', required: ['membershipType', 'membershipId', 'characterId'] }


Destiny::Progression(params)

Returns an Object with details about character's progression.

params (Object)

  • membershipType - Number
  • membershipId - String, your membership id.
  • characterId - String, your character id.

Sample Usage:

var destiny = require('destiny-client')(API_KEY);

destiny
    .Inventory({
        membershipType: 1,
        membershipId: '4611686018439937004',
        characterId: '2305843009244228629'
    })
    .then(res => { /* deal with response */ })
 
View on GitHub
GitHub Stars120
CategoryDevelopment
Updated9mo ago
Forks28

Languages

JavaScript

Security Score

72/100

Audited on Jun 24, 2025

No findings