npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

songclip

v1.0.4

Published

Songclip API module for NodeJS

Downloads

6

Readme

Songclip Library for Songclip API v2.4.4

Audiobyte This library uses the Songclip Music API v2.4.4: a RESTful API with JSEND response format for social and digital companies to offer fully-licensed popular music as a feature.

Overview

Songclip shares with its partners this NodeJS library module to facilitate its integration. It wraps the Songclip API function calls with a class named "Songclip" with the following member functions:

  1. search
  2. getCollections
  3. getCollection
  4. getRelated
  5. postAppOpenEvent
  6. postPlayEvent
  7. postShareEvent
  8. postAddEvent

Usage

$ npm install 'songclip' --save

Sample code:

const Songclip = require('songclip')
const songclip = new Songclip({
  apiKey: 'APS...',
  authorization: 'bearer ...',
})

async test() {
  try {
    const clips = await songclip.search({
      q: 'Ed Sheeran',
      minLength: 10, // seconds
      context: {
        uniqueId: 'anoymizedUniqueUserID',
      },
    })
    const first = clips[0]
  } catch (error) {
    console.error(error)
  }
}

Songclip class

Constructor

  /**
   * Configuration settings for all calls.
   * 
   * @param {Object} config                Configuration object.
   * @param {string} config.apiKey         Partner's API key to use Songclip API.
   * @param {string} config.authorization  Authorization string, for example: 'Bearer asfasdfa...'.
   * @param {number} config.timeout        Timeout of axios calls in milliseconds, default: 0.
   * @param {Object} config.proxy          Proxy axios configuration object proxy, for example: {
   *    host: '127.0.0.1',
   *    port: 9000,
   *    auth: {
   *      username: 'mikeymike',
   *      password: 'rapunz3l'
   *    }
   *  } 
   */

Sample code:

const Songclip = require('songclip')

const songclip = new Songclip({
  apiKey: process.env.SNGCLP_API_KEY,
  authorization: `bearer ${process.env.SNGCLP_AUTHORIZATION}`,
})

Search

  /**
   * Search for songclips.
   *
   * Search for clips with a query string or tags. Optional: minLength & maxLength, shuffle, page and limit
   *
   * @link https://songclip.docs.apiary.io/#reference/0/songclip-audio-files/search-songclip-audio-files
   *
   * @param {Object} params                 Parameters for call
   * @param {string} params.q               Query string to search (either "q" and/or "context.tags" must be provided)
   * @param {number} params.limit           Max. number of elements to be retrieved (default: 20)
   * @param {number} params.page            Page (default: 1)
   * @param {boolean} params.shuffle        Shuffle contents in current page (default: false)
   * @param {number} params.minLength       Minimum length in seconds (including value provided, default: 0)
   * @param {number} params.maxLength       Max length in seconds (included value provided, default: infinite)
   * @param {Object} params.context         Context for call
   * @param {string} params.sourcePlatform  Source platform, default 'web', other: 'iOS', 'Android', etc.
   * @param {string} params.uniqueId        Anonimized ID for user, to keep context for future calls. If not set, one is generated.
   * @param {string} params.sessionId       ID for current session (identifier to group calls done from a user in a period of time defined by partner) 
   *                                        If not set, will use one coming from the first response.
   * @param {Array of String} params.tags   Tags to match search, for example: ['love', 'flirt']
   *
   * @return {Array} Clips (each clip is an object with: id, artist, title, lyrics[if available], coverUrl, audioUrl and duration) found.
   */

Sample code:

const Songclip = require('songclip')

const songclip = new Songclip({
  apiKey: process.env.SNGCLP_API_KEY,
  authorization: `bearer ${process.env.SNGCLP_AUTHORIZATION}`,
})

async function test() {
  const clips = await songclip.search({
    q: 'hey',
    limit: 10,
    page: 1,
  })
  console.log(clips)
}

test()

getCollections

 /**
   * Get all available collections.
   *
   * Get collections curated for corresponding partner. Each collection has an object with the following
   * fields: {term, color, backgroundGifUrl, backgroundWebpUrl}
   *
   * @link https://songclip.docs.apiary.io/#reference/0/songclip-audio-files/list-songclips-collections
   *
   * @param {Object} params                 Parameters for call
   * @param {Object} params.context         Context for call
   * @param {string} params.sourcePlatform  Source platform, default 'web', other: 'iOS', 'Android', etc.
   * @param {string} params.uniqueId        Anonimized ID for user, to keep context for future calls. If not set, one is generated.
   * @param {string} params.sessionId       ID for current session (identifier to group calls done from a user in a period of time defined by partner) 
   *                                        If not set, will use one coming from the first response.
   * @param {minLength}
   *
   * @return {Array} collections, each with {term, color, backgroundGifUrl, backgroundWebpUrl}
   */

Sample code:

const Songclip = require('songclip')

const songclip = new Songclip({
  apiKey: process.env.SNGCLP_API_KEY,
  authorization: `bearer ${process.env.SNGCLP_AUTHORIZATION}`,
})

async function test() {
  const limit = 5
  const collections = await songclip.getCollections()
  for (const collection of collections) {
    const { term } = collection
    const clips = await songclip.getCollection({
      term,
      limit,
    })
    console.log('term', term, 'clips', clips)
  }
}

test()

getCollection

  /**
   * Retrieve clips from collection identified by 'term'.
   *
   * Get clips for given collection identified by 'term'. Optional: minLength & maxLength, shuffle, page and limit
   *
   * @link https://songclip.docs.apiary.io/#reference/0/songclip-audio-files/search-songclip-audio-files
   *
   * @param {Object} params                 Parameters for call
   * @param {string} params.term            Identifier for collection, default 'trending'
   * @param {number} params.limit           Max. number of elements to be retrieved (default: 20)
   * @param {number} params.page            Page (default: 1)
   * @param {boolean} params.shuffle        Shuffle contents in current page (default: false)
   * @param {number} params.minLength       Minimum length in seconds (including value provided, default: 0)
   * @param {number} params.maxLength       Max length in seconds (included value provided, default: infinite)
   * @param {Object} params.context         Context for call
   * @param {string} params.sourcePlatform  Source platform, default 'web', other: 'iOS', 'Android', etc.
   * @param {string} params.uniqueId        Anonimized ID for user, to keep context for future calls. If not set, one is generated.
   * @param {string} params.sessionId       ID for current session (identifier to group calls done from a user in a period of time defined by partner) 
   *                                        If not set, will use one coming from the first response.
   * @param {Array of String} params.tags   Tags to match search, for example: ['love', 'flirt']
   *
   * @return {Array} Clips (each clip is an object with: id, artist, title, lyrics[if available], coverUrl, audioUrl and duration) found.
   */

Sample code:

const Songclip = require('songclip')

const songclip = new Songclip({
  apiKey: process.env.SNGCLP_API_KEY,
  authorization: `bearer ${process.env.SNGCLP_AUTHORIZATION}`,
})

async function test() {
  const limit = 5
  const collections = await songclip.getCollections()
  for (const collection of collections) {
    const { term } = collection
    const clips = await songclip.getCollection({
      term,
      limit,
    })
    console.log('term', term, 'clips', clips)
  }
}

test()

getRelated

  /**
   * Search for songclips related to given clip (identified by id).
   *
   * Search for clips related to a given clip (identified by id)
   *
   * @link https://songclip.docs.apiary.io/#reference/0/songclip-audio-files/related-songclip-audio-files-for-songclip-audio-file
   *
   * @param {Object} params                 Parameters for call
   * @param {string} params.id              Clip ID to find related clips for (Mandatory)
   * @param {number} params.limit           Max. number of elements to be retrieved (default: 20)
   * @param {number} params.page            Page (default: 1)
   * @param {boolean} params.shuffle        Shuffle contents in current page (default: false)
   * @param {number} params.minLength       Minimum length in seconds (including value provided, default: 0)
   * @param {number} params.maxLength       Max length in seconds (included value provided, default: infinite)
   * @param {Object} params.context         Context for call
   * @param {string} params.sourcePlatform  Source platform, default 'web', other: 'iOS', 'Android', etc.
   * @param {string} params.uniqueId        Anonimized ID for user, to keep context for future calls. If not set, one is generated.
   * @param {string} params.sessionId       ID for current session (identifier to group calls done from a user in a period of time defined by partner) 
   *                                        If not set, will use one coming from the first response.
   * @param {Array of String} params.tags   Tags to match search, for example: ['love', 'flirt']
   *
   * @return {Array} Related clips found (each clip is an object with: id, artist, title, lyrics[if available], coverUrl, audioUrl and duration).
   */

Sample code:

const Songclip = require('songclip')

const songclip = new Songclip({
  apiKey: process.env.SNGCLP_API_KEY,
  authorization: `bearer ${process.env.SNGCLP_AUTHORIZATION}`,
})

async function test() {
  const limit = 5
  const clips = await songclip.getCollection({ limit: 1 }) // trending
  const clip = clips[0]

  const relatedClips = await songclip.getRelated({
    id: clip.id,
    limit,
  })
  console.log('Related clips', clips)
}

test()

postAppOpenEvent

  /**
   * Sends an open "App" event.
   *
   * Sends an open "App" event when the "Songclip" content is first used in the user's session.
   * It is usually related to a button that enables the songclip content to be surfaced in the current user's session.
   *
   * @link https://songclip.docs.apiary.io/#reference/0/events/send-app-open-event
   *
   * @param {Object} params.context         Context for call
   * @param {string} params.sourcePlatform  Source platform, default 'web', other: 'iOS', 'Android', etc.
   * @param {string} params.uniqueId        Anonimized ID for user, to keep context for future calls. If not set, one is generated.
   * @param {string} params.sessionId       ID for current session (identifier to group calls done from a user in a period of time defined by partner) 
   *                                        If not set, will use one coming from the first response.
   * @return {Object|boolean} response object { status: string } or false if unsuccessful call, status = 'success' if call is OK
   */

Sample code:

const Songclip = require('songclip')

const songclip = new Songclip({
  apiKey: process.env.SNGCLP_API_KEY,
  authorization: `bearer ${process.env.SNGCLP_AUTHORIZATION}`,
})

async function test() {
  const { status } = await songclip.postAppOpen()
  if (status === 'success' ) {
    // ...
  }
}

test()

postPlayEvent

  /**
   * Sends a play clip/gifnote (identified by ID) event.
   *
   * POSTs a play event for clip/gifnote (identified by ID). It is used for music reporting services to Labels/Publishers/PRO.
   *
   * @link https://songclip.docs.apiary.io/#reference/0/songclip-audio-files/send-a-songclip-audio-file-play-event
   * @link https://songclip.docs.apiary.io/#reference/0/songclip-gif-videos/send-a-songclip-gif-video-play-event
   *
   * @param {Object} params                 Parameters for call
   * @param {Number} params.id              Clip/Gifnote identifier
   * @param {string} params.assetType       Type of asset ('songclip' or 'gifnote'). Default is 'songclip'
   * @param {Object} params.context         Context for call
   * @param {string} params.sourcePlatform  Source platform, default 'web', other: 'iOS', 'Android', etc.
   * @param {string} params.uniqueId        Anonimized ID for user, to keep context for future calls. If not set, one is generated.
   * @param {string} params.sessionId       ID for current session (identifier to group calls done from a user in a period of time defined by partner) 
   *                                        If not set, will use one coming from the first response.
   * @return {Object|boolean} response object { status: string } or false if unsuccessful call, status = 'success' if call is OK
   */

Sample code:

const Songclip = require('songclip')

const songclip = new Songclip({
  apiKey: process.env.SNGCLP_API_KEY,
  authorization: `bearer ${process.env.SNGCLP_AUTHORIZATION}`,
})

async function test() {
  const clips = await songclip.getCollection({ limit: 1 }) // trending
  const clip = clips[0]

  const { status } = await songclip.postPlayEvent({ id: clip.id })
  if (status === 'success' ) {
    // ...
  }
}

test()

postShareEvent

  /**
   * Sends a share clip/gifnote (identified by ID) event.
   *
   * POSTs a share event for clip/gifnote (identified by ID). It is used for music reporting services to Labels/Publishers/PRO.
   *
   * @link https://songclip.docs.apiary.io/#reference/0/songclip-audio-files/send-a-songclip-audio-file-share-event
   * @link https://songclip.docs.apiary.io/#reference/0/songclip-gif-videos/send-a-songclip-gif-video-share-event
   *
   * @param {Object} params                 Parameters for call
   * @param {Number} params.id              Clip/Gifnote identifier
   * @param {string} params.assetType       Type of asset ('songclip' or 'gifnote'). Default is 'songclip'
   * @param {Object} params.context         Context for call
   * @param {string} params.sourcePlatform  Source platform, default 'web', other: 'iOS', 'Android', etc.
   * @param {string} params.uniqueId        Anonimized ID for user, to keep context for future calls. If not set, one is generated.
   * @param {string} params.sessionId       ID for current session (identifier to group calls done from a user in a period of time defined by partner) 
   *                                        If not set, will use one coming from the first response.
   * @return {Object|boolean} response object { status: string } or false if unsuccessful call, status = 'success' if call is OK
   */

Sample code:

const Songclip = require('songclip')

const songclip = new Songclip({
  apiKey: process.env.SNGCLP_API_KEY,
  authorization: `bearer ${process.env.SNGCLP_AUTHORIZATION}`,
})

async function test() {
  const clips = await songclip.getCollection({ limit: 1 }) // trending
  const clip = clips[0]

  const { status } = await songclip.postShareEvent({ id: clip.id })
  if (status === 'success' ) {
    // ...
  }
}

test()

postAddEvent

  /**
   * Sends an Add clip (identified by ID) event.
   *
   * POSTs an add event for given clip (identified by ID). It is used to notify that the user is actually merging the content into 
   * some other type of asset. It is used for music reporting services to Labels/Publishers/PRO.
   *
   * @link https://songclip.docs.apiary.io/#reference/0/songclip-audio-files/send-a-songclip-audio-file-add-event
   *
   * @param {Object} params                 Parameters for call
   * @param {Number} params.id              Clip identifier
   * @param {string} params.assetType       Type of asset ('songclip' or 'gifnote'). Default is 'songclip' (not implemented for 'gifnote' in Songclip API v2.4.4)
   * @param {Object} params.context         Context for call
   * @param {string} params.sourcePlatform  Source platform, default 'web', other: 'iOS', 'Android', etc.
   * @param {string} params.uniqueId        Anonimized ID for user, to keep context for future calls. If not set, one is generated.
   * @param {string} params.sessionId       ID for current session (identifier to group calls done from a user in a period of time defined by partner) 
   *                                        If not set, will use one coming from the first response.
   * @return {Object|boolean} response object { status: string } or false if unsuccessful call, status = 'success' if call is OK
   */

Sample code:

const Songclip = require('songclip')

const songclip = new Songclip({
  apiKey: process.env.SNGCLP_API_KEY,
  authorization: `bearer ${process.env.SNGCLP_AUTHORIZATION}`,
})

async function test() {
  const clips = await songclip.getCollection({ limit: 1 }) // trending
  const clip = clips[0]

  const { status } = await songclip.postAddEvent({ id: clip.id })
  if (status === 'success' ) {
    // ...
  }
}

test()

Songclip API v2.4.4

This library uses the Songclip API v2.4.4 which is defined as follows.

Introduction to full API

A Songclip is a 5-30 second fully-licensed popular song clip audio file.

A Songclip GIF (previously known as a Gifnote) is the audio-visual result of merging an audio song clip ("Songclip") and a visual asset such as a GIF, photo, or video into a music video asset.

The Songclip Music API delivers services for both Songclip audio files and Songclip GIF videos.

In order to request access to the Songclip Music API, please email [email protected] with the following information

  1. Business Name.
  2. Use-case(s). Describe the use-case(s) for your app(s) and how you will use the Songclip Partner Platform.
  3. Metrics. Please provide the number of daily and monthly users you expect at the end of your first three months after launching your app with the Songclip API. This information will help the Songclip team prepare for your launch, delivering the best performance for your end-users.
  4. Contact. Provide your main contact details for future communication.

Overview

The Songclip Music API includes the following entities:

Authorization

Please include the following headers in your request:

  • Authorization: Bearer ACCESS_TOKEN
  • apikey: API_KEY

Events

Songclip Music API Terms include sending the following events to the Songclip API:

  1. When a user accesses Songclip for the first time in the session, POST /events/open
  2. When you create a new user, POST /users
  3. When a Songclip GIF video is played, POST /gifnotes/:id/events/play
  4. When a Songclip audio file is played, POST /songclips/:id/events/play
  5. When a Songclip GIF video is shared, POST /gifnotes/:id/events/share
  6. When a Songclip audio file is shared, POST /songclips/:id/events/share
  7. When a Songclip audio file is created, POST /songclips

To review how events reporting must be implemented see here.

Description API Responses:

  • 200 OK - the request was successful (some API calls may return 201 instead).
  • 201 Created - the request was successful and a resource was created.
  • 400 Bad Request - the request could not be understood or was missing required parameters.
  • 401 Unauthorized - authentication failed or user doesn't have permissions for requested operation.
  • 403 Forbidden - access denied.
  • 404 Not Found - resource was not found.
  • 405 Method Not Allowed - requested method is not supported for resource.

Context object

The context object used in API calls gives additional information required for proper reporting to the music industry. The "context" is a JSON object comprising the following -fields-:

Songclip Audio Files [/songclips]

Search Songclip audio files [GET /songclips{?q,context,minLength,maxLength,page,limit,shuffle}]

Search for Songclip audio files. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Parameters

    • q (required, String) ... query string to search Songclips.
    • context (required, JSON) ... { "uniqueId":"111-asf_123", "sourcePlatform": "example_app_platform", "tags":["happy","funny"] }
    • minLength (optional, Number) ... minimum length in seconds
    • maxLength (optional, Number) ... max length in seconds
    • page (optional, Number) ... page requested, default is 1
    • limit (optional, Number) ... limit per page, default is 20
    • shuffle (optional, Boolean) ... shuffle results of corresponding page, default is false
  • Request

    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
              
  • Response 200 (application/json)

      {  
         "status":"success",
         "data":{  
            "songclips":[  
               {  
                  "id":"64423325966796605",
                  "artist":"Elton John",
                  "title":"Rocket Man",
                  "lyrics":"Burnin' out his fuse\nUp here alone",
                  "coverUrl":"https://dev-c.rdnt.us/5890b1b1405c7b34340848b9.jpg",
                  "audioUrl":"https://dev-c.rdnt.us/5890b1a38b03f233ff5bcef3.mp3",
                  "duration": 12.3
               }
            ]
         }
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Get Songclip autocomplete suggestions [GET /songclips/autocomplete{?q,context}]

Up to 10 recommendations for searched terms on Songclips. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Parameters

    • q (required, String) ... query string to search autocomplete suggestions for Songclips
    • context (required, JSON) ... { "uniqueId": "111-asf_123", "sourcePlatform": "example_app_platform" }
  • Request

    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status": "success",
        "data": {
          "suggestions": [
            {
              "text": "hey baby (drop it to the floor)",
              "searchType": "title"
            },
            {
              "text": "hey joe",
              "searchType": "title"
            },
            {
              "text": "hey violet",
              "searchType": "artist"
            }
          ]
        }
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Related Songclip audio files for Songclip audio file [GET /songclips/{id}/related{?context,page,limit,shuffle}]

Get related Songclip audio files for a given Songclip audio file.

  • Parameters

    • context (required, JSON) ... { "uniqueId": "111-asf_123", "sourcePlatform": "example_app_platform", "tags": ["hello", "funny"] }
    • page (optional, Number) ... page requested, default is 1
    • limit (optional, Number) ... limit per page, default is 20
    • shuffle (optional, Boolean) ... shuffle results of corresponding page, default is false
  • Request

    • Attributes

      • id: "63802520203429395" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
          
  • Response 200 (application/json)

      {  
         "status":"success",
         "data":{  
            "songclips":[  
               {  
                  "id":"63842667183736466",
                  "artist":"Fifth Harmony feat. Ty Dolla Sign",
                  "title":"Work From Home",
                  "lyrics":"You don't gotta go to work, work, work, work, work, work, work",
                  "coverUrl":"https://dev-c.rdnt.us/57ed02a8579b4c0003fed9d3.jpg",
                  "audioUrl":"https://dev-c.rdnt.us/572512b094fabf0f00100fbb.mp3",
                  "duration": 12.3
               }
            ]
         }
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Related Songclip GIF videos for a Songclip audio file [GET /songclips/{id}/related/gifnotes{?context,page,limit,shuffle}]

Get related Songclip GIF videos for a given Songclip audio file.

  • Parameters

    • context (required, JSON) ... { "uniqueId": "111-asf_123", "sourcePlatform": "example_app_platform", "tags": ["hello", "funny"] }
    • page (optional, Number) ... page requested, default is 1
    • limit (optional, Number) ... limit per page, default is 20
    • shuffle (optional, Boolean) ... shuffle results of corresponding page, default is false
  • Request

    • Attributes

      • id: "63802520203429395" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
              
  • Response 200 (application/json)

      {  
         "status":"success",
         "data":{  
            "gifnotes":[  
               {  
                  "id":"229097616418276943",
                  "songclip":{  
                     "id":"63843291765933741",
                     "artist":"Prince",
                     "title":"Little Red Corvette ",
                     "lyrics":"Little red corvette, baby you're much too fast",
                     "coverUrl":"https://dev-c.rdnt.us/57ed0052579b4c0003fec700.jpg",
                     "audioUrl":"https://dev-c.rdnt.us/572e0bac4eb5650f00328683.mp3",
                     "duration": 15.3
                  },
                  "gifUrl":"https://dev-i.gifnote.co/3TqIFQpomY761kXlCsJnYpVYUQWudFOa.gif",
                  "gifnoteUrl": "https://i.gifnote.co/UdfaPOprtaRRD3454.mp4",
                  "gifnoteThumbnailUrl": "https://i.gifnote.co/UdfadsfsdfdsfsdPOprtaRRD3454.jpg",
                  "gifMp4Url": "https://i.gifnote.co/hfdks36842yhkjhds89.mp4",
                  "dims":[  
                     150,
                     150
                  ],
                  "gifId":"229097586261231182"
               }
            ]
         }
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Get Songclip audio file information [GET /songclips/{id}]

Get Songclip audio file information.

  • Request

    • Attributes

      • id: "63802520203429395" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
              
  • Response 200 (application/json)

      {  
         "status":"success",
         "data":{  
            "songclip":{  
               "id":"63802520203429395",
               "artist":"BORns",
               "title":"Electric Love",
               "lyrics":"And every night my mind is running around her",
               "coverUrl":"https://s3.amazonaws.com/.../57ecffa1579b4c0003fec138.jpg",
               "audioUrl":"https://s3.amazonaws.com/.../56f3fa6968fd6c0f0014cc48.mp3",
               "duration": 18.5
            }
         }
      }
        
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

List Songclips collections [GET /songclips/collections]

List available Songclip featured collections.

  • Request

    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status": "success",
        "data": {
          "collections": [
            {
              "term": "TRENDING",
              "color": "#33D4FF",
              "backgroundGifUrl": "https://i.gifnote.co/fVFHQsg6d7hAcF7jRbsi47vddEyatH2x.gif",
              "backgroundWebpUrl": "https://i.gifnote.co/lRUaXAiaqbA2zsiERvTAjMkYjUg0xCRf.webp"
            },
            {
              "term": "LOVE",
              "color": "#00B359",
              "backgroundGifUrl": "https://i.gifnote.co/ABuwS6kCdwJifn5vId7nQqcOkEplSK8c.gif",
              "backgroundWebpUrl": "https://i.gifnote.co/TuS8DpaPDZubpX9sSRU1zgK3oi2BxQzJ.webp"
            }
          ]
        }
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Get Songclips trending collection [GET /songclips/collections/trending{?page,limit,context,minLength,maxLength,shuffle}]

List Songclips in the trending collection. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Parameters

    • page (optional, Number) ... page from 1 to 999
    • limit (optional, Number) ... maximum number of Songclip records expected by client.
    • context (required, JSON) ... { "uniqueId": "111-asf_123", "sourcePlatform": "example_app_platform" }
    • minLength (optional, Number) ... minimum length in seconds
    • maxLength (optional, Number) ... max length in seconds
    • shuffle (optional, Boolean) ... shuffle results of corresponding page, default is false
  • Request

    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status": "success",
        "data": {
          "gifnotes": [
            {
              "id": "241457717300954205",
              "artist": "The Offspring",
              "title": "Pretty Fly (For A White Guy)",
              "lyrics": "Give it to me baby\nGive it to me baby",
              "coverUrl": "https://c.rdnt.us/nvieQaIDJeAkblk7KIpNwVnQd5EsdOYJ.jpg",
              "audioUrl": "https://c.rdnt.us/xZmz7Ho9Hf6VxygwnlhwIvkIYJz4XV52.mp3",
              "duration": 18.5
            },
            {
              "id": "236316737899857272",
              "artist": "Fergie",
              "title": "Fergalicious",
              "lyrics": "So delicious aye aye aye(It's hot, hot)\nIt's so delicious aye aye aye(I put them boys on rock, rock)\nIt's so delicious",
              "coverUrl": "https://c.rdnt.us/odYkoANRqShwh688Han0owUZfJFmg71C.jpg",
              "audioUrl": "https://c.rdnt.us/ZQn5JUeyIq2725RnUXAJi0iYGMDItUvb.mp3",
              "duration": 20.1
            }
          ]
        }
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Get a single Songclip collection [GET /songclips/collections/{term}{?q,page,limit,context,shuffle}]

List Songclips for {term} collection. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Parameters

    • page (optional, Number) ... page from 1 to 999
    • limit (optional, Number) ... maximum number of Songclip records expected by client.
    • context (required, JSON) ... { "uniqueId": "111-asf_123", "sourcePlatform": "example_app_platform" }
    • shuffle (optional, Boolean) ... shuffle results of corresponding page, default is false
  • Request

    • Attributes

      • term: "LOVE" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status": "success",
        "data": {
          "songclips": [
            {
              "id": "482098784763905236",
              "artist": "The Supremes",
              "title": "Baby Love",
              "lyrics": "Baby love, my baby love, I need you oh how I need you",
              "coverUrl": "https://c.rdnt.us/yPXaqI3oSn08I1S7XfOFn3xbfyKl0dif.jpg",
              "audioUrl": "https://c.rdnt.us/I3S0fUD5WfKmntAJ8Zs8tZao2VnT8uS3.mp3",
              "duration": 18.5
            },
            {
              "id": "482117252368303361",
              "artist": "Celine Dion",
              "title": "The Power of Love",
              "lyrics": "'Cause I am your lady\nAnd you are my man",
              "coverUrl": "https://c.rdnt.us/iTe1WHVndGJs1KgaZPoqOMI0ZroTXXKf.jpg",
              "audioUrl": "https://c.rdnt.us/IcQTRmMTqVd58a1WDdI94Ru0B0XKMY4D.mp3",
              "duration": 21.5
            }
          ]
        }
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Send a Songclip audio file play event [POST /songclips/:id/events/play]

Send a play event for a given Songclip audio file. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Request (application/json)

    • Body

        {
            "context": {"uniqueId":"111-asf_123", "sourcePlatform": "example_app_platform"}
        }
      
                      
    • Attributes

      • id: "476350871664330462" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status":"success"
      }
        
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Send a Songclip audio file share event [POST /songclips/:id/events/share]

Send a share event for a given Songclip audio file. Context is a JSON object including a "uniqueId" field identifying the user to allow customized responses based on user's behavior.

  • Request (application/json)

    • Body

        {
            "context": {"uniqueId":"111-asf_123"}
        }
      
                      
    • Attributes

      • id: "476350871664330462" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status":"success"
      }

Send a Songclip audio file favoriting event [POST /songclips/:id/events/favoriting]

Send a -favoriting- (when a user likes or adds to a personal collection) event for a given Songclip audio file. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Request (application/json)

    • Body

        {
            "context": {"uniqueId":"111-asf_123"}
        }
      
                      
    • Attributes

      • id: "476350871664330462" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status":"success"
      }
        

Send a Songclip audio file create event [POST /songclips]

Send a -create- event for a given Songclip audio file. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry. For parameters start, end, fadeIn, fadeOut, pass milliseconds as format.

  • Request (application/json)

    • Body

        {
            "context": {"uniqueId":"111-asf_123"},
            "start": 1000,
            "end": 3000,
            "fadeIn": 500,
            "fadeOut": 300,
            "tags": ["happy"],
            "songId": "5958929698"
        }
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status":"success"
      }
        

Send a Songclip audio file unfavoriting event [POST /songclips/:id/events/unfavoriting]

Send an -unfavoriting- (when a user unlikes or removes the given songclip ID from a personal collection) event for a given Songclip audio file. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Request (application/json)

    • Body

        {
            "context": {"uniqueId":"111-asf_123"}
        }
      
                      
    • Attributes

      • id: "476350871664330462" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status":"success"
      }

Send a Songclip audio file add event [POST /songclips/:id/events/add]

Send an -add- event for a given Songclip audio file. This event must be posted when a new asset is created using a songclip. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Request (application/json)

    • Body

        {
            "context": {"uniqueId":"111-asf_123", "sourcePlatform": "example_app_platform"}
        }
      
                      
    • Attributes

      • id: "476350871664330462" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status":"success"
      }
        
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Songclip GIF Videos [/gifnotes]

Search Songclip GIF videos [GET /gifnotes{?q,page,limit,context}]

Retrieve Songclip GIF videos matching a query string "q" with a required "context". Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Parameters

    • q (required, String) ... query string to search Songclip GIF videos
    • page (optional, Number) ... page from 1 to 999
    • limit (optional, Number) ... maximum number of Songclip GIF video records expected by client.
    • context (required, JSON) ... { "uniqueId": "111-asf_123", "sessionId": "112312132123", "sourcePlatform": "example_app_platform", "tags": ["hello","funny"] }
  • Request

    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status": "success",
        "data": {
          "gifnotes": [
            {
              "id": "263997365411644435",
              "songclip": {
                "id": "132769474188150024",
                "artist": "Off Bloom",
                "title": "Hey Bae",
                "lyrics": "Hey bae, let's do it your way\nHey bae, let's do it your way, way",
                "coverUrl": "https://c.rdnt.us/https://c.rdnt.us/Zva9Ls2EvrJiaZDP5gs4PFApE0rpZ7Xj.jpg",
                "audioUrl": "https://c.rdnt.us/U9lXZcitaPkXywcYHP2vnocdGWZxKuEN.mp3",
                "duration": 18.5
              },
              "gifUrl": "https://i.gifnote.co/U4IYAXeqk7JJW8GjXegOqM0um5emAkgw.gif",
              "gifnoteUrl": "https://i.gifnote.co/UdfaPOprtaRRD3454.mp4",
              "gifnoteThumbnailUrl": "https://i.gifnote.co/UdfadsfsdfdsfsdPOprtaRRD3454.jpg",
              "gifMp4Url": "https://i.gifnote.co/hfdks36842yhkjhds89.mp4",
              "dims": [
                250,
                189
              ],
              "gifId": "263997365059322898"
            }
          ]
        }
      }
        
  • Response 400 (application/json)

      {  
         "status":"failed",
         "data":{  
            "message":"Validation Failed",
            "code":"INVALID_PARAM",
            "errors":[  
               {  
                  "message":"\"q\" parameter is missing",
                  "code":"invalid",
                  "field":"q"
               }
            ]
         }
      }

Get Songclip GIF video autocomplete suggestions [GET /gifnotes/autocomplete{?q,context}]

Up to 10 recommendations for searched terms on Songclip GIF Videos. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Parameters

    • q (required, String) ... query string to search autocomplete suggestions for Songclip GIF videos
    • context (required, JSON) ... { "uniqueId": "111-asf_123", "sourcePlatform": "example_app_platform" }
  • Request

    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status": "success",
        "data": {
          "suggestions": [
            {
              "text": "hey",
              "searchType": "gif"
            },
            {
              "text": "hey arnold",
              "searchType": "gif"
            },
            {
              "text": "hey baby",
              "searchType": "gif"
            },
            {
              "text": "hey baby",
              "searchType": "title"
            },
            {
              "text": "hey baby ",
              "searchType": "title"
            },
            {
              "text": "hey baby (uhh ahh) [radio mix]",
              "searchType": "title"
            },
            {
              "text": "hey bae",
              "searchType": "title"
            },
            {
              "text": "hey boy",
              "searchType": "gif"
            },
            {
              "text": "hey bulldog",
              "searchType": "title"
            },
            {
              "text": "hey violet",
              "searchType": "artist"
            }
          ]
        }
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Related Songclip audio files for Songclip GIF video [GET /gifnotes/{id}/related/songclips{?context}]

Get related Songclip audio files for a given Songclip GIF video.

  • Parameters

    • context (required, JSON) ... { "uniqueId": "111-asf_123", "sourcePlatform": "example_app_platform", "tags":["hello","funny"] }
  • Request

    • Attributes

      • id: "287781293196837947" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {  
         "status":"success",
         "data":{  
            "songclips":[  
               {  
                  "id":"63802520203429395",
                  "artist":"BORns",
                  "title":"Electric Love",
                  "lyrics":"And every night my mind is running around her",
                  "coverUrl":"https://dev-c.rdnt.us/57ecffa1579b4c0003fec137.jpg",
                  "audioUrl":"https://dev-c.rdnt.us/56f3fa6968fd6c0f0014cc48.mp3",
                  "duration": 18.5
               }
            ]
         }
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Related Songclip GIF videos for a Songclip GIF video [GET /gifnotes/{id}/related{?context}]

Get related Songclip GIF videos for a given Songclip GIF video.

  • Parameters

    • context (required, JSON) ... { "uniqueId": "111-asf_123", "sourcePlatform": "example_app_platform", "tags":["hello","funny"] }
  • Request

    • Attributes

      • id: "287781293196837947" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {  
         "status":"success",
         "data":{
             "gifnotes": [  
                 {  
                   "id":"258664555951949276",
                   "songclip":{  
                      "id":"63812403208390588",
                      "artist":"Luke Bryan",
                      "title":"Kick The Dust Up",
                      "lyrics":"We go way out where there aint nobody\nWe turn this cornfield into a party",
                      "coverUrl":"https://dev-c.rdnt.us/57ed0442579b4c0003fee4a0.jpg",
                      "audioUrl":"https://dev-c.rdnt.us/5707c520bda4090f0042da6e.mp3",
                      "duration": 18.5
                   },
                   "gifUrl":"https://dev-i.gifnote.co/1Q3dnFP7j66vxKfpy8tvpv4YFQaOiWIt.gif",
                   "gifnoteUrl": "https://i.gifnote.co/UdfaPOprtaRRD3454.mp4",
                   "gifnoteThumbnailUrl": "https://i.gifnote.co/UdfadsfsdfdsfsdPOprtaRRD3454.jpg",
                   "gifMp4Url": "https://i.gifnote.co/hfdks36842yhkjhds89.mp4",
                   "dims":[  
                      250,
                      187
                   ],
                   "gifId":"258604378426967514"
                 }
             ]
          }
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Get Songclip GIF video information [GET /gifnotes/{id}]

Retrieve information from a Songclip GIF video with ID.

  • Request

    • Attributes

      • id: "287781293196837947" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {  
         "status":"success",
         "data":[  
            {  
               "id":"258664555951949276",
               "songclip":{  
                  "id":"63812403208390588",
                  "artist":"Luke Bryan",
                  "title":"Kick The Dust Up",
                  "lyrics":"We go way out where there aint nobody\nWe turn this cornfield into a party",
                  "coverUrl":"https://dev-c.rdnt.us/57ed0442579b4c0003fee4a0.jpg",
                  "audioUrl":"https://dev-c.rdnt.us/5707c520bda4090f0042da6e.mp3",
                  "duration": 18.5
               },
               "gifUrl":"https://dev-i.gifnote.co/1Q3dnFP7j66vxKfpy8tvpv4YFQaOiWIt.gif",
               "gifnoteUrl": "https://i.gifnote.co/UdfaPOprtaRRD3454.mp4",
               "gifnoteThumbnailUrl": "https://i.gifnote.co/UdfadsfsdfdsfsdPOprtaRRD3454.jpg",
               "gifMp4Url": "https://i.gifnote.co/hfdks36842yhkjhds89.mp4",
               "dims":[  
                  250,
                  187
               ],
               "gifId":"258604378426967514"
            }
         ]
        
        
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

List Songclip GIF video collections [GET /gifnotes/collections]

List available Songclip GIF video collections.

  • Request

    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status": "success",
        "data": {
          "collections": [
            {
              "term": "TRENDING",
              "color": "#33D4FF",
              "backgroundGifUrl": "https://i.gifnote.co/fVFHQsg6d7hAcF7jRbsi47vddEyatH2x.gif",
              "backgroundWebpUrl": "https://i.gifnote.co/lRUaXAiaqbA2zsiERvTAjMkYjUg0xCRf.webp"
            },
            {
              "term": "LOVE",
              "color": "#00B359",
              "backgroundGifUrl": "https://i.gifnote.co/ABuwS6kCdwJifn5vId7nQqcOkEplSK8c.gif",
              "backgroundWebpUrl": "https://i.gifnote.co/TuS8DpaPDZubpX9sSRU1zgK3oi2BxQzJ.webp"
            }
          ]
        }
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Get Songclip GIF video trending collection [GET /gifnotes/collections/trending{?page,limit,context}]

List Songclip GIF videos in the trending collection. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Parameters

    • page (optional, Number) ... page from 1 to 999
    • limit (optional, Number) ... maximum number of Songclip GIF video records expected by client.
    • context (required, JSON) ... { "uniqueId": "111-asf_123", "sourcePlatform": "example_app_platform" }
  • Request

    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status": "success",
        "data": {
          "gifnotes": [
            {
              "id": "476350871664330462",
              "songclip": {
                "id": "264542780892644813",
                "artist": "Europe",
                "title": "The Final Countdown",
                "lyrics": "It's the final countdown",
                "coverUrl": "https://c.rdnt.us/tJa0hXLvhKqAwhi9PSDsWW4882jp5XUe.jpg",
                "audioUrl": "https://c.rdnt.us/oLslZDqvVoPAbVh2RhXEjSyIml6AiUxp.mp3",
                "duration": 18.5
              },
              "gifUrl": "https://i.gifnote.co/fVFHQsg6d7hAcF7jRbsi47vddEyatH2x.gif",
              "gifnoteUrl": "https://i.gifnote.co/UdfaPOprtaRRD3454.mp4",
              "gifnoteThumbnailUrl": "https://i.gifnote.co/UdfadsfsdfdsfsdPOprtaRRD3454.jpg",
              "gifMp4Url": "https://i.gifnote.co/hfdks36842yhkjhds89.mp4",
              "dims": [
                220,
                220
              ],
              "gifId": "476350871664330462",
              "type": "curated-1445"
            }
          ]
        }
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Get a single Songclip GIF video collection [GET /gifnotes/collections/{term}{?q,page,limit,context}]

List Songclip GIF videos for {term} collection. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Parameters

    • page (optional, Number) ... page from 1 to 999
    • limit (optional, Number) ... maximum number of Songclip GIF video records expected by client.
    • context (required, JSON) ... { "uniqueId": "111-asf_123", "sourcePlatform": "example_app_platform" }
  • Request

    • Attributes

      • term: "LOVE" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status": "success",
        "data": {
          "gifnotes": [
            {
              "id": "476350871664330462",
              "songclip": {
                "id": "264542780892644813",
                "artist": "Europe",
                "title": "The Final Countdown",
                "lyrics": "It's the final countdown",
                "coverUrl": "https://c.rdnt.us/tJa0hXLvhKqAwhi9PSDsWW4882jp5XUe.jpg",
                "audioUrl": "https://c.rdnt.us/oLslZDqvVoPAbVh2RhXEjSyIml6AiUxp.mp3",
                "duration": 18.5
              },
              "gifUrl": "https://i.gifnote.co/fVFHQsg6d7hAcF7jRbsi47vddEyatH2x.gif",
              "gifnoteUrl": "https://i.gifnote.co/UdfaPOprtaRRD3454.mp4",
              "gifnoteThumbnailUrl": "https://i.gifnote.co/UdfadsfsdfdsfsdPOprtaRRD3454.jpg",
              "gifMp4Url": "https://i.gifnote.co/hfdks36842yhkjhds89.mp4",
              "dims": [
                220,
                220
              ],
              "gifId": "476350871664330462",
              "type": "curated-1445"
            }
          ]
        }
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Send a Songclip GIF video play event [POST /gifnotes/{id}/events/play]

Post a "play" event for given {id} Songclip GIF video. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Request (application/json)

    • Body

       {
           "context": {"uniqueId":"111-asf_123", "sourcePlatform": "example_app_platform"}
       }
      
                      
    • Attributes

      • id: "476350871664330462" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status": "success",
      }

Send a Songclip GIF video share event [POST /gifnotes/{id}/events/share]

Post a "share" event for a given {id} Songclip GIF video. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Request (application/json)

    • Body

        {
            "context": {"uniqueId":"111-asf_123", "sourcePlatform": "example_app_platform"}
        }
      
                      
    • Attributes

      • id: "476350871664330462" (string, required)

    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status": "success",
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Send a Songclip GIF video favoriting event [POST /gifnotes/{id}/events/favoriting]

Post a "favoriting" event for a given {id} Songclip GIF video. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Request (application/json)

    • Body

        {
            "context": {"uniqueId":"111-asf_123", "sourcePlatform": "example_app_platform"}
        }
      
                      
    • Attributes

      • id: "476350871664330462" (string, required)

    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status": "success",
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Send a Songclip GIF video unfavoriting event [POST /gifnotes/{id}/events/unfavoriting]

Post an "unfavoriting" event for a given {id} Songclip GIF video. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Request (application/json)

    • Body

        {
            "context": {"uniqueId":"111-asf_123", "sourcePlatform": "example_app_platform"}
        }
      
                      
    • Attributes

      • id: "476350871664330462" (string, required)

    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status": "success",
      }
  • Response 400 (application/json)

      {
          "status": "error",
          "message": "apikey parameter is missing"
      }

Events [/events]

Send app open event [POST /events/open]

Send an app-open event whenever the partner's application first initiates any Songclip API call for the user. Context is a JSON object that must include an anonymized "uniqueId" field identifying the user to allow proper activity reporting to the music industry.

  • Request (application/json)

    • Body

        {
            "context": {"uniqueId":"111-asf_123", "sourcePlatform": "example_app_platform"}
        }
          
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
        "status":"success"
      }

Users [/users]

List Users [GET /users{?q}]

List Users created by Partner

  • Parameters

    • q (required, String) ... query string to search between username, email, uniqueId
  • Request

    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      [{
          "status":"success",
          "data": {
              users: {
                  "uniqueId": "1234",
                  "username": "jordan23",
                  "email":"[email protected]"
              }
          }
      }]

Get a User [GET /users/{uniqueId}]

Get User's profile.

  • Request

    • Attributes

      • uniqueId: "A01AF899-227A-4E01-9729-9B4EA3DC7DA5" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
          "status":"success",
          "data": {
              users: {
                  "uniqueId": "1234",
                  "username": "jordan23",
                  "email":"[email protected]"
              }
          }
      }

Delete User [DELETE /users/{uniqueId}]

Remove a User's profile.

  • Request

    • Attributes

      • uniqueId: "A01AF899-227A-4E01-9729-9B4EA3DC7DA5" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
          "status":"success"
      }

Update User [PUT /users/{uniqueId}]

Update a User's profile.

  • Request

    • Attributes

      • uniqueId: "A01AF899-227A-4E01-9729-9B4EA3DC7DA5" (string, required)
      • username: "jordan23" (string, required)
      • email: "[email protected]" (string, required)
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
          "status":"success"
      }

Create User [POST /users]

Create a User's profile.

  • Request

    • Body

        {
            "uniqueId": "A01AF899-227A-4E01-9729-9B4EA3DC7DA-5" (string, required)
            "username": "jordan23" (string, required)
            "email": "[email protected]" (string, optional)  
        }
          
    • Headers

        Authorization: Bearer YOUR_ACCESS_TOKEN
        apikey: YOUR_API_KEY
        Accept: */*
  • Response 200 (application/json)

      {
          "status":"success",
          "data":"uniqueId"
      }