NAV
shell javascript

Introduction

echo "Hello, world!"
console.log("Hello, world!");

Welcome to the JAPI documentation website! Here you can find out how to use our API to the best of your needs!

Some of our routes require a JAPI Key to be passed in the header of the request. They are used to identify the user and to restrict access to certain routes. You can register your own key here.

Discord

Discord User

curl "https://japi.rest/discord/v1/user/:userId"
const data = fetch("https://japi.rest/discord/v1/user/:userId").then(res => res.json()).then(data => console.log(data));

The above command returns JSON structured like this:

{
  "cache_expiry": 3600,
  "cached": false,
  "data": {
    "id": "209796601357533184",
    "username": "compiles",
    "avatar": "e1d1b1f8fbb78de3cb4dd6349c5b1b8a",
    "discriminator": "0",
    "public_flags": 4325632,
    "flags": 4325632,
    "banner": "f0e8349cea9efe849fca257109d96e95",
    "accent_color": 4369109,
    "global_name": "Dan",
    "avatar_decoration_data": null,
    "banner_color": "#42aad5",
    "clan": null,
    "tag": "compiles#0",
    "createdAt": "2016-08-01T22:16:47.596Z",
    "createdTimestamp": 1470089807596,
    "public_flags_array": [
      "HOUSE_BALANCE",
      "EARLY_VERIFIED_BOT_DEVELOPER",
      "ACTIVE_DEVELOPER",
      "NITRO"
    ],
    "defaultAvatarURL": "https://cdn.discordapp.com/embed/avatars/0.png",
    "avatarURL": "https://cdn.discordapp.com/avatars/209796601357533184/e1d1b1f8fbb78de3cb4dd6349c5b1b8a.png",
    "bannerURL": "https://cdn.discordapp.com/banners/209796601357533184/f0e8349cea9efe849fca257109d96e95.png"
  },
  "presence": {
    "status": "online",
    "activities": [
      {
        "name": "Custom Status",
        "type": 4,
        "url": null,
        "details": null,
        "state": "Hello!",
        "applicationId": null,
        "timestamps": null,
        "party": null,
        "syncId": null,
        "assets": null,
        "flags": 0,
        "emoji": {
          "animated": null,
          "name": "👋",
          "id": null,
          "createdTimestamp": null,
          "url": null,
          "identifier": "%F0%9F%91%8B"
        },
        "buttons": [],
        "createdTimestamp": 1721030968928
      }
    ],
    "clientStatus": [
      "desktop"
    ]
  },
  "connections": {
    "error": "Get connections via the endpoint: '/discord/v1/user/:userId/connections'"
  }
}

This endpoint retrieves a user's information.

HTTP Request

GET https://japi.rest/discord/v1/user/:userId

Path Parameters

Parameter Required Description
userId true The user's ID.

Discord User Avatar

curl "https://japi.rest/discord/v1/user/:userId/avatar"
const data = fetch("https://japi.rest/discord/v1/user/:userId/avatar").then(res => res.url)

console.log(data);

This endpoint is designed for web pages and uses client-side redirection.

This endpoint retrieves a user's avatar.

HTTP Request

GET https://japi.rest/discord/v1/user/:userId/avatar

Path Parameters

Parameter Required Description
userId true The user's ID.

Query Parameters

Parameter Required Default Description
animated false false Returns the avatar as gif if available.
size false 128 Changes the size of the image, same as discord.

Discord User Banner

curl "https://japi.rest/discord/v1/user/:userId/banner"
const data = fetch("https://japi.rest/discord/v1/user/:userId/banner").then(res => res.url)

console.log(data);

This endpoint is designed for web pages and uses client-side redirection.

This endpoint retrieves a user's banner.

HTTP Request

GET https://japi.rest/discord/v1/user/:userId/banner

Path Parameters

Parameter Required Description
userId true The user's ID.

Query Parameters

Parameter Required Default Description
animated false false Returns the avatar as gif if available.
size false 128 Changes the size of the image, same as discord.

Discord Template

curl "https://japi.rest/discord/v1/template/:code" \
  -H "Authorization: {API KEY}"
const data = fetch("https://japi.rest/discord/v1/template/:code", {
  headers: { "Authorization": "{API KEY}" }
}).then(res => res.json()).then(data => console.log(data));

The above command returns JSON structured like this:

{
  "cache_expiry": 3600,
  "cached": false,
  "data": {
    "code": "czqrGhSefaXQ",
    "name": "aaaaa",
    "description": "aaaa",
    "usage_count": 0,
    "creator_id": "209796601357533184",
    "creator": {
      "id": "209796601357533184",
      "username": "DanPlayz",
      "avatar": "49e7de8406d75a012d9add3b0383d428",
      "discriminator": "7757",
      "public_flags": 131328
    },
    "created_at": "2021-07-19T17:45:48+00:00",
    "updated_at": "2021-07-19T17:45:48+00:00",
    "source_guild_id": "856626398558027776",
    "serialized_source_guild": {
      "name": "Dust Test",
      "description": null,
      "region": "us-west",
      "verification_level": 0,
      "default_message_notifications": 1,
      "explicit_content_filter": 0,
      "preferred_locale": "en-US",
      "afk_timeout": 300,
      "roles": [],
      "channels": [],
      "afk_channel_id": null,
      "system_channel_id": 2,
      "system_channel_flags": 0
    },
    "is_dirty": null
  }
}

This endpoint retrieves a template's information.

HTTP Request

GET https://japi.rest/discord/v1/template/:code

Path Parameters

Parameter Required Description
code true The template code.

Discord Application

curl "https://japi.rest/discord/v1/application/:applicationId"
const data = fetch("https://japi.rest/discord/v1/application/:applicationId").then(res => res.json()).then(data => console.log(data));

The above command returns JSON structured like this:

{
  "cache_expiry": 14400,
  "cached": false,
  "data": {
    "application": {
      "id": "587152333519978559",
      "name": "Primo",
      "icon": "747655dc3da9f544a87bb85d616e4520",
      "description": "Primo was crafted to be useable by anyone, so you never have a boring moment on discord with (or without) your friends!\n\nWebsite: https://primo.enx.so\nSupport: https://discord.gg/KkS6yP8",
      "summary": "",
      "type": null,
      "is_monetized": false,
      "hook": true,
      "guild_id": "658086225441456128",
      "storefront_available": false,
      "bot_public": true,
      "bot_require_code_grant": false,
      "terms_of_service_url": "https://primo.enx.so/terms",
      "privacy_policy_url": "https://primo.enx.so/privacy",
      "install_params": {
        "scopes": [
          "applications.commands",
          "bot"
        ],
        "permissions": "1642824465655"
      },
      "integration_types_config": {
        "0": {}
      },
      "verify_key": "9553417d309f6fce0b84a761c14b9a9a4694ba6834bb0e3533385b6ab14ba81a",
      "flags": 323584,
      "tags": [
        "fun",
        "logging",
        "moderation",
        "social",
        "utility"
      ],
      "assets": [],
      "flags_array": [
        "GATEWAY_PRESENCE",
        "GATEWAY_PRESENCE_LIMITED",
        "GATEWAY_GUILD_MEMBERS",
        "GATEWAY_GUILD_MEMBERS_LIMITED",
        "GATEWAY_MESSAGE_CONTENT"
      ],
      "iconURL": "https://cdn.discordapp.com/app-icons/587152333519978559/747655dc3da9f544a87bb85d616e4520.png",
      "coverURL": null,
      "createdAt": "2019-06-09T05:33:45.074Z",
      "createdTimestamp": 1560058425074,
      "installURL": "https://discord.com/api/oauth2/authorize?client_id=587152333519978559&permissions=1642824465655&scope=applications.commands%20bot"
    },
    "bot": {
      "id": "587152333519978559",
      "username": "Primo",
      "global_name": null,
      "avatar": "068c34bbc2357ee9c742c4c38ead9d4e",
      "avatar_decoration_data": null,
      "discriminator": "5049",
      "public_flags": 65536,
      "clan": null,
      "bot": true,
      "approximate_guild_count": 411,
      "createdAt": "2019-06-09T05:33:45.074Z",
      "createdTimestamp": 1560058425074,
      "public_flags_array": [
        "VERIFIED_BOT"
      ],
      "defaultAvatarURL": "https://cdn.discordapp.com/embed/avatars/4.png",
      "avatarURL": "https://cdn.discordapp.com/avatars/587152333519978559/068c34bbc2357ee9c742c4c38ead9d4e.png"
    },
    "app_discovery": {
      "id": "587152333519978559",
      "name": "Primo",
      "icon": "747655dc3da9f544a87bb85d616e4520",
      "description": "Primo was crafted to be useable by anyone, so you never have a boring moment on discord with (or without) your friends!\n\nWebsite: https://primo.enx.so\nSupport: https://discord.gg/KkS6yP8",
      "summary": "",
      "type": null,
      "is_monetized": false,
      "bot": {
        "id": "587152333519978559",
        "username": "Primo",
        "global_name": null,
        "avatar": "068c34bbc2357ee9c742c4c38ead9d4e",
        "avatar_decoration_data": null,
        "discriminator": "5049",
        "public_flags": 65536,
        "clan": null,
        "bot": true,
        "banner": "e29ebf9f6fde2fbaaed38c523873365e",
        "banner_color": null,
        "accent_color": null
      },
      "hook": true,
      "guild_id": "658086225441456128",
      "storefront_available": false,
      "bot_public": true,
      "bot_require_code_grant": false,
      "terms_of_service_url": "https://primo.enx.so/terms",
      "privacy_policy_url": "https://primo.enx.so/privacy",
      "install_params": {
        "scopes": [
          "applications.commands",
          "bot"
        ],
        "permissions": "1642824465655"
      },
      "integration_types_config": {
        "0": {}
      },
      "verify_key": "9553417d309f6fce0b84a761c14b9a9a4694ba6834bb0e3533385b6ab14ba81a",
      "flags": 323584,
      "guild": {
        "id": "658086225441456128",
        "name": "Attendant.gg",
        "icon": "241b17c8c70851e0b6567c09d5422a48",
        "description": null,
        "home_header": null,
        "splash": null,
        "discovery_splash": null,
        "features": [
          "AUTOMOD_TRIGGER_USER_PROFILE",
          "GUILD_ONBOARDING_EVER_ENABLED",
          "DEVELOPER_SUPPORT_SERVER",
          "THREADS_ENABLED",
          "PREVIEW_ENABLED",
          "GUESTS_ENABLED",
          "GUILD_ONBOARDING_HAS_PROMPTS",
          "NEWS",
          "COMMUNITY",
          "MEMBER_VERIFICATION_GATE_ENABLED",
          "AUTO_MODERATION",
          "GUILD_ONBOARDING",
          "SOUNDBOARD",
          "NEW_THREAD_PERMISSIONS",
          "CHANNEL_ICON_EMOJIS_GENERATED"
        ],
        "approximate_member_count": 301,
        "approximate_presence_count": 39
      },
      "tags": [
        "fun",
        "logging",
        "moderation",
        "social",
        "utility"
      ],
      "categories": [
        {
          "id": 8,
          "name": "Moderation and Tools"
        }
      ],
      "directory_entry": {
        "guild_count": 414,
        "detailed_description": "**Primo Bot**\n=============\n\n**About Primo**\n-----------\n\nPrimo was crafted to be use-able by anyone, whether you have knowledge of discord or not. It has a easy to use prefix and command layout. Primo's commands are fun so you'll never have a boring moment on discord with your friends!\n\n**Features**\n-----------\n\n• Moderation Commands  \n• Reaction Commands  \n• Wordscan Command Scan users custom status for words.  \n• Chat Games  \n• Social Media Commands\n• Translate command  \n• Dashboard\n• All commands can be disabled/enabled!\n\n  \n  \n\n[Invite](http://primo.enx.so/invite) • [Commands](http://primo.enx.so/commands) • [Dashboard](http://primo.enx.so/dashboard)",
        "detailed_description_localizations": null,
        "supported_locales": [
          "en-US"
        ],
        "external_urls": [
          {
            "name": "Website",
            "url": "https://primo.enx.so"
          },
          {
            "name": "Commands",
            "url": "https://primo.enx.so/commands"
          },
          {
            "name": "Dashboard",
            "url": "https://primo.enx.so/dashboard"
          }
        ],
        "short_description": "Primo is a multi-purpose bot that was created to be useable by anyone, whether you have knowledge of discord or not.",
        "short_description_localizations": null
      }
    }
  }
}

This endpoint retrieves a user's information.

HTTP Request

GET https://japi.rest/discord/v1/application/:applicationId

Path Parameters

Parameter Required Description
applicationId true The application's ID. (A bot ID is a valid application ID)

JAPI Fetcher

Discord User Presence

curl "https://japi.rest/discord/v1/user/:userId/presence"
const data = fetch("https://japi.rest/discord/v1/user/:userId/presence").then(res => res.json()).then(data => console.log(data));

The above command returns JSON structured like this:

{
  "cache_expiry": 3600,
  "cached": false,
  "data": {
    "id": "209796601357533184",
    "username": "DanPlayz",
    "avatar": "49e7de8406d75a012d9add3b0383d428",
    "discriminator": "7757",
    "public_flags": 131328,
    "banner": null,
    "banner_color": "#19b9e6",
    "accent_color": 1685990,
    "avatarURL": "https://cdn.discordapp.com/avatars/209796601357533184/49e7de8406d75a012d9add3b0383d428.png",
    "bannerURL": null,
  }
}

This endpoint retrieves a user's information.

HTTP Request

GET https://japi.rest/discord/v1/user/:userId/presence

Path Parameters

Parameter Required Description
userId true The user's ID.

Discord Guild

curl "https://japi.rest/discord/v1/guild/733135938347073576" \
  -H "Authorization: {API KEY}"
const data = fetch("https://japi.rest/discord/v1/guild/733135938347073576", {
  headers: { "Authorization": "{API KEY}" }
}).then(res => res.json()).then(data => console.log(data));

The above command returns JSON structured like this:

{
  "cache_expiry": 3600,
  "cached": false,
  "data": {
    "id": "733135938347073576",
    "name": "Void Bots",
    "icon": "a_aa6362876672e26c01edbe2cfb3f0dd5",
    "features": [
      "COMMUNITY",
      "VANITY_URL",
    ],
    "commands": [],
    "members": [
      "209796601357533184",
    ],
    "channels": [
      "733135938741600361",
    ],
    "bans": [],
    "roles": [
      "733135938351398956",
    ],
    "stageInstances": [],
    "invites": [],
    "deleted": false,
    "shardId": 0,
    "splash": "a9aa17893e693998c39b3c9f5c79d249",
    "banner": "b0217bdf6bb7dd2cebb47ffb59b13ea8",
    "description": "Void Bots. Here you can find the perfect bot for your server, or add your bot!",
    "verificationLevel": "HIGH",
    "vanityURLCode": "voidbots",
    "nsfwLevel": "DEFAULT",
    "discoverySplash": "bf283eb880fd266fb74eb164b066cbcd",
    "memberCount": 2029,
    "large": true,
    "applicationId": null,
    "afkTimeout": 900,
    "afkChannelId": null,
    "systemChannelId": "749432519681900576",
    "premiumTier": "TIER_3",
    "premiumSubscriptionCount": 14,
    "explicitContentFilter": "ALL_MEMBERS",
    "mfaLevel": "ELEVATED",
    "joinedTimestamp": 1633366124703,
    "defaultMessageNotifications": "ONLY_MENTIONS",
    "systemChannelFlags": 5,
    "maximumMembers": 250000,
    "maximumPresences": null,
    "approximateMemberCount": null,
    "approximatePresenceCount": null,
    "vanityURLUses": null,
    "rulesChannelId": "761339128343167057",
    "publicUpdatesChannelId": "733135939127345227",
    "preferredLocale": "en-US",
    "ownerId": "726243005438099577",
    "emojis": [
      "733147957188362310",
    ],
    "stickers": [
      "859875867144224818",
    ],
    "createdTimestamp": 1594863628709,
    "nameAcronym": "VB",
    "iconURL": "https://cdn.discordapp.com/icons/733135938347073576/a_aa6362876672e26c01edbe2cfb3f0dd5.webp",
    "splashURL": "https://cdn.discordapp.com/splashes/733135938347073576/a9aa17893e693998c39b3c9f5c79d249.webp",
    "discoverySplashURL": "https://cdn.discordapp.com/discovery-splashes/733135938347073576/bf283eb880fd266fb74eb164b066cbcd.webp",
    "bannerURL": "https://cdn.discordapp.com/banners/733135938347073576/b0217bdf6bb7dd2cebb47ffb59b13ea8.webp"
  }
}

This endpoint retrieves a guild's information.

HTTP Request

GET https://japi.rest/discord/v1/guild/:guildid

Path Parameters

Parameter Required Description
guildid true The guild id.

Discord Guild Member

curl "https://japi.rest/discord/v1/guild/733135938347073576/members/209796601357533184" \
  -H "Authorization: {API KEY}"
const data = fetch("https://japi.rest/discord/v1/guild/733135938347073576/members/209796601357533184", {
  headers: { "Authorization": "{API KEY}" }
}).then(res => res.json()).then(data => console.log(data));

The above command returns JSON structured like this:

{
  "cache_expiry": 300,
  "cached": false,
  "data": {
    "guildId": "733135938347073576",
    "joinedTimestamp": 1594863628713,
    "premiumSinceTimestamp": 1627077775719,
    "deleted": false,
    "nickname": null,
    "pending": false,
    "userId": "209796601357533184",
    "displayName": "DanPlayz",
    "roles": [
      {
        "id": "743980331274600459",
        "name": "👑",
        "color": "#000000",
        "hoist": false,
        "rawPosition": 86,
        "managed": false,
        "mentionable": false,
        "deleted": false,
        "tags": null,
        "createdTimestamp": 1597449133462
      },
      {
        "id": "735302323835764767",
        "name": "Nitro Booster",
        "color": "#ff73fa",
        "hoist": true,
        "rawPosition": 58,
        "managed": true,
        "mentionable": false,
        "deleted": false,
        "createdTimestamp": 1595380135259
      },
      {
        "id": "733884613578981376",
        "name": "Member",
        "color": "#b9bbbe",
        "hoist": false,
        "rawPosition": 40,
        "managed": false,
        "mentionable": false,
        "deleted": false,
        "tags": null,
        "createdTimestamp": 1595042126794
      },
      {
        "id": "733135938347073576",
        "name": "@everyone",
        "color": "#000000",
        "hoist": false,
        "rawPosition": 0,
        "managed": false,
        "mentionable": false,
        "deleted": false,
        "tags": null,
        "createdTimestamp": 1594863628709
      }
    ]
  }
}

This endpoint retrieves a guild member's information.

HTTP Request

GET https://japi.rest/discord/v1/guild/:guildid/members/:memberid

Path Parameters

Parameter Required Description
guildid true The guild id.
memberid true The member id.

WikiHow

curl "https://japi.rest/wikihow/v1/search?q=How+to+eat+food" \
  -H "Authorization: {API KEY}"
const search = 'How to eat food';
const data = fetch(`https://japi.rest/wikihow/v1/search/?q=${search}`, {
  headers: { "Authorization": "{API KEY}" }
}).then(res => res.json()).then(data => console.log(data));

The above command returns JSON structured like this:

{
  "cache_expiry": 3600,
  "cached": false,
  "data": [
    {
      "title": "How to Write Software Documentation",
      "link": "https://www.wikihow.com/Write-Software-Documentation",
      "thumbnail": "https://www.wikihow.com/images/thumb/f/fd/Write-Software-Documentation-Step-8.jpg/-crop-250-145-193px-Write-Software-Documentation-Step-8.jpg",
      "stats": {
        "views": 303499,
        "last_updated": "Updated 6 months ago"
      }
    },
    {
      "title": "How to Write a Business Process Document",
      "link": "https://www.wikihow.com/Write-a-Business-Process-Document",
      "thumbnail": "https://www.wikihow.com/images/thumb/4/4e/Apply-for-Unemployment-Compensation-in-Florida-Step-18.jpg/-crop-250-145-193px-Apply-for-Unemployment-Compensation-in-Florida-Step-18.jpg",
      "stats": {
        "views": 347086,
        "last_updated": "Updated 1 year ago"
      }
    },
    {
      "title": "How to Write a Requirements Document",
      "link": "https://www.wikihow.com/Write-a-Requirements-Document",
      "thumbnail": "https://www.wikihow.com/images/thumb/2/20/Write-a-Requirements-Document-Step-10.jpg/-crop-250-145-193px-Write-a-Requirements-Document-Step-10.jpg",
      "stats": {
        "views": 202132,
        "last_updated": "Updated 1 year ago"
      }
    }
  ]
}

This endpoint retrieves the search results from wikihow.

HTTP Request

GET https://japi.rest/wikihow/v1/search?q=

Query Parameters

Parameter Required Description
q true The search query

Information

curl "https://japi.rest/wikihow/v1/info/Write-Software-Documentation" \
  -H "Authorization: {API KEY}"
const pageName = 'Write-Software-Documentation';
const data = fetch(`https://japi.rest/wikihow/v1/info/${pageName}`, {
  headers: { "Authorization": "{API KEY}" }
}).then(res => res.json()).then(data => console.log(data));

The above command returns JSON structured like this:

{
  "cache_expiry": 3600,
  "cached": false,
  "data": {
    "title": "How to Write Software Documentation",
    "description": "Good software documentation, whether a specifications document for programmers and testers, a technical document for internal users, or software manuals and help files for end users, helps the person working with the software understand its features and functions. Good software documentation is specific, concise, and relevant, providing all the information important to the person using the software.[1] X Research source Following are instructions on how to write software documentation for technical users and end users. ",
    "byline": {
      "name": "Author Info",
      "href": null
    },
    "last_updated": "January 19, 2021",
    "references": [
      { "ref_num": 1, "refrence": "https://clickhelp.com/software-documentation-glossary/software-documentation/" },
      { "ref_num": 2, "refrence": "https://www.gnu.org/software/emacs/manual/html_node/elisp/Documentation-Tips.html" },
      { "ref_num": 3, "refrence": "https://formidableforms.com/4-steps-to-creating-great-end-user-documentation/" },
      { "ref_num": 4, "refrence": "https://www.divio.com/blog/documentation/" },
      { "ref_num": 5, "refrence": "https://www.divio.com/blog/documentation/" },
      { "ref_num": 6, "refrence": "http://www.techscribe.co.uk/ta/how-to-write-user-documentation.htm" },
      { "ref_num": 7, "refrence": "http://www.techscribe.co.uk/ta/how-to-write-instructions.htm" },
      { "ref_num": 8, "refrence": "Rodney Ruff, Omaha, NE; experience as technical writer/help file author since 1997" }
    ],
    "sections": [
      {
        "prefix": "Method 1 of 2:",
        "headline": "Writing Software Documentation for Technical Users",
        "steps": [
          {
            "num": 1,
            "image": {
              "link": "https://www.wikihow.com/images/thumb/5/57/Write-Software-Documentation-Step-1.jpg/aid1568971-v4-728px-Write-Software-Documentation-Step-1.jpg",
              "alt": "Image titled Write Software Documentation Step 1"
            },
            "content": "Determine what information needs to be included. Software specification documents serve as reference manuals for designers of the user interface programmers who write the code, and testers who verify that the software works as intended. The exact information depends on the program in question but may include any of the following:\n\nKey files within the application. This may include files created by the development team, databases accessed during the program's operation, and third-party utility programs.\nFunctions and subroutines. This includes an explanation of what each function or subroutine does, including its range of input values and output values.\nProgram variables and constants, and how they're used in the application.\nThe overall program structure. For a disc-based application, this may mean describing the program's individual modules and libraries, while for a Web application, this may mean describing which pages use which files."
          },
          {
            "num": 2,
            "image": {
              "link": "https://www.wikihow.com/images/thumb/6/6f/Write-Software-Documentation-Step-2.jpg/aid1568971-v4-728px-Write-Software-Documentation-Step-2.jpg",
              "alt": "Image titled Write Software Documentation Step 2"
            },
            "content": "Decide how much of the documentation should be within the program code and how much should be separate from it. The more technical documentation is developed within the program's source code to begin with, the easier it will be to update and maintain along with the code, as well as to document various versions of the original application. At a minimum, documentation within the source code needs to explain the purpose of functions, subroutines, variables, and constants.[2]\n\tX\n\t\tResearch source\n\t\t\n\t\t\t\t\n\n\n\n\nIf the source code is particularly lengthy, it can be documented in the form of a help file, which can be indexed or searched with keywords. This is a particular advantage for applications where the program logic is fragmented over many pages and includes a number of supplemental files, as with certain Web applications.\nSome programming languages, such as Java and the .NET Framework (Visual Basic.NET, C #), have their own standards for documenting code. In these cases, follow the standards as to how much of the documentation should be included with the source code."
          },
          {
            "num": 3,
            "image": {
              "link": "https://www.wikihow.com/images/thumb/8/85/Write-Software-Documentation-Step-3.jpg/aid1568971-v4-728px-Write-Software-Documentation-Step-3.jpg",
              "alt": "Image titled Write Software Documentation Step 3"
            },
            "content": "Choose the appropriate documentation tool. To some extent, this is determined by the language the code is written in, be it C++, C#, Visual Basic, Java, or PHP, as specific tools exist for these and other languages. In other cases, the tool to use is determined by the type of documentation required.\n\nWord-processing programs for Microsoft Word are adequate for creating separate text files of documentation, as long as the documentation is fairly short and simple. For long, complex text files, many technical writers prefer a documentation tool such as Adobe FrameMaker.\nHelp files for documenting source code can be produced with any help authoring tool, such as RoboHelp, Help and Manual, Doc-To-Help, MadCap Flare, or HelpLogix."
          }
        ]
      },
      {
        "prefix": "Method 2 of 2:",
        "headline": "Writing Software Documentation for End Users",
        "steps": [
          {
            "num": 1,
            "image": {
              "link": "https://www.wikihow.com/images/thumb/8/85/Write-Software-Documentation-Step-4.jpg/aid1568971-v4-728px-Write-Software-Documentation-Step-4.jpg",
              "alt": "Image titled Write Software Documentation Step 4"
            },
            "content": "Determine the business reasons for your documentation. Although the functional reason for documenting software is to help users understand how to use the application, there are other reasons as well, such as assisting in marketing the software, enhancing the company image, and most notably, reducing technical support costs.[3]\n\tX\n\t\tResearch source\n\t\t\n\t\t\t\t\n\n\n In some cases, documentation is necessary to comply with certain regulations or other legal requirements.\nIn no case, however, should software documentation substitute for poor interface design. If an application screen requires reams of documentation to explain it, better to change the screen design to something more intuitive."
          },
          {
            "num": 2,
            "image": {
              "link": "https://www.wikihow.com/images/thumb/3/35/Write-Software-Documentation-Step-5.jpg/aid1568971-v4-728px-Write-Software-Documentation-Step-5.jpg",
              "alt": "Image titled Write Software Documentation Step 5"
            },
            "content": "Understand the audience you're writing the documentation for. In most cases, software users have little knowledge of computers outside of the applications they use. There are several ways to determine how to address their needs with your documentation.\n\nLook at the job titles your prospective users hold. A system administrator is likely expert with a number of software applications, while a data entry clerk is more likely to know only the application he or she currently uses to enter data.\nLook at the users themselves. Although job titles generally indicate what people do, there can be considerable variation in how certain titles are used within a given organization. By interviewing prospective users, you can get a feel for whether your impressions of what their job title indicates are accurate or not.\nLook at existing documentation. Documentation for previous versions of software, as well as functional specifications, provide some indication as to what the user will need to know to use the program. Keep in mind, however, that end users are not as interested in how the program works as they are in what it can do for them.\nIdentify the tasks needed to do the job, and what tasks need to be done before those tasks can be done."
          },
          {
            "num": 3,
            "image": {
              "link": "https://www.wikihow.com/images/thumb/5/5b/Write-Software-Documentation-Step-6.jpg/aid1568971-v4-728px-Write-Software-Documentation-Step-6.jpg",
              "alt": "Image titled Write Software Documentation Step 6"
            },
            "content": "Determine the appropriate format(s) for the documentation. Software documentation can be structured in 1 of 2 formats, the reference manual and the user guide. Sometimes, a combination of formats is the best approach.\n\nA reference manual format is devoted to explaining the individual features of a software application (button, tab, field, and dialog box) and how they work. Many help files are written in this format, particularly context-sensitive help that displays a relevant topic whenever a user clicks the Help button on a particular screen.[4]\n\tX\n\t\tResearch source\n\t\t\n\t\t\t\t\n\n\n\n\nA user guide format explains how to use the software to perform a particular task. User guides are often formatted as printed guides or PDFs, although some help files include topics on how to perform particular tasks. (These help topics are usually not context-sensitive, although they may be hyperlinked to from topics that are.) User guides often take the form of tutorials, with a summary of the tasks to be performed in the introduction and instructions given in numbered steps.[5]\n\tX\n\t\tResearch source"
          },
          {
            "num": 4,
            "image": {
              "link": "https://www.wikihow.com/images/thumb/d/d9/Write-Software-Documentation-Step-7.jpg/aid1568971-v4-728px-Write-Software-Documentation-Step-7.jpg",
              "alt": "Image titled Write Software Documentation Step 7"
            },
            "content": "Decide what form(s) the documentation should take. Software documentation for end users can take 1 or several of many forms: printed manuals, PDF documents, help files, or online help. Each form is designed to show the user how to use each of the program's functions, whether in the form of a walkthrough or a tutorial; in the case of help files and online help, this may include demonstration videos as well as text and still graphics.\nHelp files and online help should be indexed and keyword-searchable to allow users to quickly find the information they're looking for. Although help file authoring tools can generate indexes automatically, it is often better to create the index manually, using terms users are likely to search for."
          },
          {
            "num": 5,
            "image": {
              "link": "https://www.wikihow.com/images/thumb/f/fd/Write-Software-Documentation-Step-8.jpg/aid1568971-v4-728px-Write-Software-Documentation-Step-8.jpg",
              "alt": "Image titled Write Software Documentation Step 8"
            },
            "content": "Choose the appropriate documentation tool. Printed or PDF user manuals can be written with a word-processing program like Word or a sophisticated text editor like FrameMaker, depending on their length and complexity. Help files can be written with a help authoring tool like RoboHelp, Help and Manual, Doc-To-Help, Flare, HelpLogix, or HelpServer."
          }
        ]
      }
    ]
  }
}

This endpoint retrieves a article's information.

HTTP Request

GET https://japi.rest/wikihow/v1/info/:title

Path Parameters

Parameter Required Description
title true The page title

JAPI Presence

Get Presence

curl "https://japi.rest/presence/v1/get?id=209796601357533184"
const data = fetch("https://japi.rest/presence/v1/get?id=209796601357533184").then(res => res.json()).then(data => console.log(data));

The above command returns JSON structured like this:

{
  "cache_expiry": 300,
  "cached": true,
  "data": {
    "presenceVersion": "0.3.0",
    "sessionType": "vscode",
    "workspaceFolder": "void",
    "dirName": "includes",
    "file": {
      "path": "/void/beta/JAPI-Docs/source/includes/_japipresence.md",
      "name": "_japipresence.md",
      "extension": ".md",
      "extensionImage": "https://github.com/vscode-icons/vscode-icons/blob/master/icons/file_type_md.svg",
      "size": "1.33kb",
      "totalLines": "54",
      "currentLine": "20",
      "currentColumn": "17"
    },
    "git": {
      "repoName": "",
      "branch": "main"
    }
  }
}

This endpoint retrieves a user's presence who is using the JAPI Presence Visual Studio Code Extension.

HTTP Request

GET https://japi.rest/presence/v1/get?id=:identifier

Path Parameters

Parameter Required Description
identifier true The user's JAPI identifier.

BombParty

List Information

curl "https://japi.rest/bombparty/v1/search?limit=5&sort=lenlow&q=dan" \
  -H "Authorization: {API KEY}"
const word = 'dan';
const data = fetch(`https://japi.rest/bombparty/v1/search?limit=5&sort=lenlow&q=${word}`, {
  headers: { "Authorization": "{API KEY}" }
}).then(res => res.json()).then(data => console.log(data));

The above command returns JSON structured like this:

{
  "words": [
    "dan",
    "dang",
    "dank",
    "dans",
    "dant"
  ]
}

This endpoint retrieves a list of words based on the query.

HTTP Request

GET https://japi.rest/bombparty/v1/search

Query Parameters

Parameter Required Default Description
q true null The word to search for
limit false 20 The number of words to return
sort false null The sort order of the words
lowerCase false false Whether to return the words in lowercase

Minecraft

UUID from MC Username

curl "https://japi.rest/minecraft/v1/username/DanPlayz" \
  -H "Authorization: {API KEY}"
const username = 'DanPlayz';
const data = fetch(`https://japi.rest/minecraft/v1/username/${username}`, {
  headers: { "Authorization": "{API KEY}" }
}).then(res => res.json()).then(data => console.log(data));

The above command returns JSON structured like this:

{
  "cache_expiry": 10800,
  "cached": false,
  "data": {
    "name": "DanPlayz",
    "id": "41f9049d58204631b8aa18f8397ba5c1"
  }
}

This endpoint retrieves the uuid for a username from mojang.

HTTP Request

GET https://japi.rest/minecraft/v1/username/:username

Path Parameters

Parameter Required Description
username true The username of the player to get the UUID of

MC Username from UUID

curl "https://japi.rest/minecraft/v1/uuid/41f9049d58204631b8aa18f8397ba5c1" \
  -H "Authorization: {API KEY}"
const username = '41f9049d58204631b8aa18f8397ba5c1';
const data = fetch(`https://japi.rest/minecraft/v1/uuid/${username}`, {
  headers: { "Authorization": "{API KEY}" }
}).then(res => res.json()).then(data => console.log(data));

The above command returns JSON structured like this:

{
  "cache_expiry": 10800,
  "cached": false,
  "data": {
    "id": "41f9049d58204631b8aa18f8397ba5c1",
    "name": "DanPlayz"
  }
}

This endpoint retrieves the username for a uuid from mojang.

HTTP Request

GET https://japi.rest/minecraft/v1/uuid/:uuid

Path Parameters

Parameter Required Description
uuid true The UUID of the player to get the username of

Errors

JAPI uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your API key is wrong.
403 Forbidden -- The endpoint requested is locked to administrators only.
404 Not Found -- The specified endpoint could not be found.
405 Method Not Allowed -- You tried to access an endpoint with an invalid method.
406 Not Acceptable -- You requested a format that isn't json.
410 Gone -- That endpoint requested has been removed from our servers.
429 Too Many Requests -- You're requesting too many requests! Slow down!
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.