appStore Context

Registry Context: Using storekey

  1. Go to Meroku App Home

  2. Go to your .appStore

  3. Go to "context" tab

  4. You will see a "storekey". This storekey will be used as a parameter in all search and listing calls to ensure that only .apps from your context are used.

Example: If your storekey is my-app-store then the following Search API is to be made.

curl --request GET \
  --url '' \
  --header 'Accept: application/json' \
  --header 'apikey: YOUR_API_KEY'

Once you have them defined, you can retrieve them using the API call below.

For each featured section, you will see a "Section Key" in the UI. Once you have the section key, you can use that in the storekey param in the featured sections API calls.



Right now, there's no API to get a list of all featured sections for a .appstore. So you would need to note down the section keys from UI and use them in your .appstore UI at the places you want.


You can specify your own categories. That way, any .app listing from the Meroku .apps registry will be shown with your category and subcategory instead of Meroku's.

Overriding default images

When we don't have any banner or screenshots of an app, we provide a default image. This default image is Meroku branded. Sometime you would want to override this with your own image. You can do this by checking if the default image URL is one of the following. If they are, then you can override it with your own image.

We serve the CDN urls on our APIs but the registry on chain has IPFS and CDN both. Hence we are sharing both the image urls.

Default Image URLs


  1. Banner -

  2. Screenshot -

  3. Logo -


  1. Banner -

  2. Screenshot -

  3. Logo -

A following code will work

import axios from 'axios';

const options = {
  method: 'GET',
  url: '',
  headers: {Accept: 'application/json', apikey: 'YOUR_API_KEY'}

// If you are fetching from contract, then use the IPFS URLs here
// instead of the CDN urls.
const DEFAULT_LOGO = "";
const DEFAULT_SSHOT = "";

try {
  const { data } = await axios.request(options);
  if (data.images) {
    if (data.images.logo === DEFAULT_LOGO) {
      add any custom logic to update the logo image here.
    if (data.images.banner === DEFAULT_BANNER) {
    add any custom logic to update the banner image here.
    if (data.images.screenshots && data.images.screenshots.length > 0 ) {
      for (img of data.images.screenshots) {
        if (img === DEFAULT_SSHOT) {
          add any custom logic to update the screenshot image here.
} catch (error) {

Last updated