We use cookies to ensure you get the best user experience on our website.Find Out More

Shakebug is a mobile application bug reporting and feedback platform. It allows mobile app developers to easily gather feedback and bug reports from their testers and users, Also includes a suite of tools for analyzing crash reports. The platform supports iOS, Android and React-Native platforms.

Some of the features offered by Shakebug:

Bug Reporting: Allows users reports bug and crash directly from within the app which include a screenshot, screen recording, and device information.

Crash reporting: Automatically captures and reports crashes as they happen, with detailed stack traces and device information using our AI.

User sessions: Records and replays user sessions to help developers understand how users are interacting with their app.

Analytics: Along with bugs and crash reporting, Shakebug analyzes the application usage in different ways like session, language, countries etc. It also allows users to check analytics in the form of graphical representation over the selection period of time.

Events: Developers can add custom events and values for each action of the application easily where they want. In addition to this, users can also check the session of each event and value in graphical form as well.

Integrations: Shakebug can be integrated with other tools such as Trello, Asana, Slack, Wrike, Monday and Jira to help streamline the workflow for any software company.

Collaboration: Allows team members to communicate and collaborate in real-time through comments and notifications via email.

SDK: Shakebug also provides a SDK that can be integrated with the app, which can be used to enable the above-mentioned features. Once Shakebug is integrated, it can be easily triggered by users by shaking their device, hence the name Shake to send bug report.

Shakebug’s goal is to provide developers with all the information they need to understand and fix bugs and crashes, it aims to make the debugging process faster and more efficient by providing detailed information and context on the events leading up to the crash.

API

Shakebug provides a RESTful API that allows developers to access and manipulate data on the platform, such as adding bug and crashes. The Shakebug API is a powerful tool that can be used to automate and integrate Shakebug with other applications and services, and to build custom tools and integrations.

First step is to generate APP key using next section.

Managing your APP Key

Shakebug is a mobile application debugging and feedback platform that uses Auth Token for authentication. To access the Shakebug API, developers will need to obtain an APP Key and by using that APP Key developer can generate Access Token. The process of Generating App Key requires several steps:

1. Login to your shakebug account.

2. Find the “Developer” menu by clicking on user icon on right-top icon. See the attached image:



3. Click “CREATE A NEW APP” and create your first app.



4. Give appropriate name




5. Click Generate

6. It will generate key.

Let’s copy your App key and save it at safe place.



Note

This “App Key” will be used for each request you make, to identify who you are. With this App Key, you'll be ready to start calling Shakebug API.



Authentication

In order to access the Shakebug API, developers will need to use an authentication token. The Shakebug API uses a combination of APP key and OAuth tokens for authentication.

OAuth is an open standard for token-based authentication and authorization. This method allows your users to grant your application access to their Shakebug accounts, so you can perform actions on their behalf.

Once you have an access token, you can include it in the Authorization header of your requests to the API.

For implementing Shakebug API in your project, follows below steps:


1. Requesting authorization Token

To start the authorization process, the user should click on the link in your application that will direct him to the following URL:

 https://app.shakebug.com/authorize?key=<APP_Key>&&return_url=<return_url>

Please replace APP_KEY with your secret APP key, which can be found in your Shakebug website -> developer->App_key

PARAMETER REQUIRED DESCRIPTION
key Required The App-Key you obtained in the Initial Setup while create app from developer tab.
return_url Required URL where the response will be redirected. We assume that you have a working web server with a public address that can correctly handle Shakebug requests.
2. Handling authorization Token

After clicking the authorization URL from the first step, the user is redirected to the Shakebug login page (if they aren't already logged in).

The user will be asked to enter the email and password they use to log in to Shakebug and then click Login.

After login, the user should be prompted with the following screen:



If the user grants access on the consent page, then they will be redirected to the redirect_url with the token parameter set to the access token.

Once you click Allow you'll grant your own app (identified via your APP key) access to your account and they will be redirected to the redirect_url with the token parameter set to the access token.

This token along with your API key can be used to read and write for your entire Shakebug account. Make sure Tokens should be kept secret!


Here's an example of how to retrieve a list of projects from your Shakebug account:

Get project

Return list of projects.

 
GET   https://app.shakebug.com/projects?key=<your app key>
Authorization  Bearer <Your access token> 

 
                        
                        

<?php              

  $curl = curl_init();
curl_setopt_array($curl, [ CURLOPT_URL => "https://app.shakebug.com/projects?key=<your App key>", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => [ "Authorization: Bearer <your access token>" ], ]); $response = curl_exec($curl); $err = curl_error($curl);
curl_close($curl);
if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ?>
Response
 
{             
    "status": 200,
    "data": {
        "projects":[
            {
                "id": "ZOqPZJpasBxK5c8MRr5px9rtfg",
                "name": "test ",
                "platform": "iOS"
            }
        ]
    }
}
 

Add Bug

Add bug in specific project.

 
POST             https://app.shakebug.com/bug
Authorization   Bearer <Your access token> 

PARAMETER TYPE PLATFORM REQUIRED DESCRIPTION
project String All Required The ID of the Projet.
description String All Required The Description of bug.
bugtypes String All Required Type of bug(either bug or crashed)
email String All Optional Email of user that you want attach with this bug.
batteryLevel String Ios, Android Optional Battery level of device from which bug is reported.
memory String Ios, Android Optional Memory of device from which bug is reported.
devicemodel String Ios, Android Optional Device model of device from which bug is reported.
batteryLevel String Ios, Android Optional Battery level of device from which bug is reported.
osversion String Ios, Android Optional Os version of device from which bug is reported.
internettype String Ios, Android Optional Type of Mobile network.
browser_name String Web Optional Name of browser from which bug is reported.
browser_full_version String Web Optional Full version of browser.
browser_user_agent String Web Optional User agent of browser.
browser_language String Web Optional Name of browser from which bug is reported.
browser_platform String Web Optional Browser’s platform.
browser_height String Web Optional Height of browser.
browser_width String Web Optional Width of browser.
is_web Int ALL Required Possible value 1 or 0. If your project’s platform is web then value of is_web parameter will be 1 otherwise 0.

                        
                        
<?php

  $curl = curl_init();
curl_setopt_array($curl, [ CURLOPT_URL => "https://app.shakebug.com/bug", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => "{\n \"project\" : \"YWjbqL7xzhFIVBMYvwMJzR-NaQ\",\n \"description\" : \"test bug\",\n \"bugtypes\" : \"bug\"\n}", CURLOPT_HTTPHEADER => [ "Authorization: Bearer <your access token>" "content-type: application/json" ], ]); $response = curl_exec($curl); $err = curl_error($curl);
curl_close($curl);
if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ?>
Response
 
{             
    "status": 200,
    "data": {
        "bug_id": "u9mfXevbBDwyYz9zZ0_dKNhmeC1B"
    }
}

Add Attachment

If you task need any image or video then after adding bug you need to call following /attachment API.

 
POST             https://app.shakebug.com/bug/attachment
Authorization   Bearer <Your access token> 

This request uses multipart/form-data as the content type.

PARAMETER TYPE PLATFORM REQUIRED DESCRIPTION
bug_id String All Required The id of the bug where the file will be added.
attachment File All Required The file to upload..

                        
                        
<?php
  $curl = curl_init();
curl_setopt_array($curl, [ CURLOPT_URL =>'https://app.shakebug.com/bug/attachment', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => array('bug_id' => 'Hlmbb7hsmjfBopiS2t9_WWGK2LXu','attachment'=> new CURLFILE('<Your local image path>')), CURLOPT_HTTPHEADER => [ "Authorization: Bearer <your access token>" ], ]); $response = curl_exec($curl); $err = curl_error($curl);
curl_close($curl);
if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ?>
Response
 
{             
    "status": 200,
    "data": {
        "bug_id": "fcp8ThCjkv3hTE011xvVi0xCAsTfYFLe7kgMEqO2iquyA-PFc_jrOaT0_R8"
    }
}

        

v1.0 API

Shakebug provides a RESTful API that allows developers to access and manipulate data on the platform, such as adding bug and crashes. The Shakebug API is a powerful tool that can be used to automate and integrate Shakebug with other applications and services, and to build custom tools and integrations.

First step is to generate Client ID and Client Secret using next section.

Managing your Client ID and Client Secret

Shakebug uses OAuth 2.0 for authentication. To access the Shakebug API, developers will need to obtain a Client ID and Client Secret. The process of generating these credentials requires several steps:

1. Login to your shakebug account.

2. Find the "Developer" menu by clicking on user icon on right-top icon.

3. Click "CREATE A NEW APP" and create your first app.

4. Give appropriate name and redirect URI

5. Click Generate

6. It will generate your Client ID and Client Secret.

Save your Client ID and Client Secret in a safe place.

Note

These "Client ID" and "Client Secret" will be used for OAuth 2.0 authentication flow. Keep your Client Secret secure and never expose it in client-side code.

OAuth 2.0 Flow

To access the Shakebug API, developers will need to use OAuth 2 .0 for authentication. OAuth 2.0 is an open standard for token-based authentication and authorization. This method allows your users to grant your application access to their Shakebug accounts, so you can perform actions on their behalf.

Here's an overview of the OAuth 2.0 flow:

  1. Redirect user to Shakebug authorization server
  2. User grants permission to your application
  3. Shakebug redirects back to your app with an authorization code
  4. Exchange the authorization code for an access token
  5. Use the access token to make API requests
Step 1: Authorization Request

Direct the user to the following URL to start the authorization process:

https://app.shakebug.com/v1.0/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code&state=RANDOM_STATE&scope=read write

PARAMETER REQUIRED DESCRIPTION
client_id Required The Client ID you obtained from the Developer section in your Shakebug account.
redirect_uri Required URL where the response will be redirected. Must match the URI registered with your application.
response_type Required Must be set to "code" for authorization code flow.
state Recommended A random string to prevent CSRF attacks. You should verify this value matches when the user returns.
scope Optional Space-separated list of scopes. Default: "read write"
Step 2: Exchange Authorization Code for Access Token

After the user grants permission, they will be redirected to your redirect_uri with an authorization code. Exchange this code for an access token:


POST https://app.shakebug.com/v1.0/authorize/token
Content-Type application/x-www-form-urlencoded
PARAMETER REQUIRED DESCRIPTION
grant_type Required Must be "authorization_code"
code Required The authorization code received from the authorization server
redirect_uri Required Must match the redirect_uri used in the authorization request
client_id Required Your application's Client ID
client_secret Required Your application's Client Secret


<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://app.shakebug.com/v1.0/authorize/token",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => http_build_query([
        'grant_type' => 'authorization_code',
        'code' => 'YOUR_AUTHORIZATION_CODE',
        'redirect_uri' => 'YOUR_REDIRECT_URI',
        'client_id' => 'YOUR_CLIENT_ID',
        'client_secret' => 'YOUR_CLIENT_SECRET'
    ]),
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/x-www-form-urlencoded"
    ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);

if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}

?>
Token Response
{
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "token_type": "Bearer",
    "expires_in": 3600,
    "refresh_token": "def502004a8b7e42...",
    "scope": "read write"
}
Refreshing Access Tokens

When your access token expires, use the refresh token to get a new one:



<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://app.shakebug.com/v1.0/authorize/token",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => http_build_query([
        'grant_type' => 'refresh_token',
        'refresh_token' => 'YOUR_REFRESH_TOKEN',
        'client_id' => 'YOUR_CLIENT_ID',
        'client_secret' => 'YOUR_CLIENT_SECRET'
    ]),
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/x-www-form-urlencoded"
    ],
]);

$response = curl_exec($curl);
echo $response;

?>

GET Projects (v1.0)

Return list of projects using your access token.


GET https://app.shakebug.com/v1.0/projects
Authorization Bearer YOUR_ACCESS_TOKEN


<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://app.shakebug.com/v1.0/projects",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer YOUR_ACCESS_TOKEN"
    ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);

if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}

?>
Response
{
"status": 200,
"data": {
    "projects": [
        {
            "id": "ZOqPZJpasBxK5c8MRr5px9rtfg",
            "name": "test",
            "platform": "iOS"
        }
    ]
}
}

Add Bug (v1.0)

Add bug in specific project.


POST https://app.shakebug.com/v1.0/bug
Authorization Bearer YOUR_ACCESS_TOKEN
Content-Type application/json

Below are the input parameters to be sent in the request body:

PARAMETER TYPE PLATFORM REQUIRED DESCRIPTION
project String All Required The ID of the Projet.
description String All Required The Description of bug.
bugtypes String All Required Type of bug(either bug or crashed)
email String All Optional Email of user that you want attach with this bug.
batteryLevel String Ios, Android Optional Battery level of device from which bug is reported.
memory String Ios, Android Optional Memory of device from which bug is reported.
devicemodel String Ios, Android Optional Device model of device from which bug is reported.
batteryLevel String Ios, Android Optional Battery level of device from which bug is reported.
osversion String Ios, Android Optional Os version of device from which bug is reported.
internettype String Ios, Android Optional Type of Mobile network.
browser_name String Web Optional Name of browser from which bug is reported.
browser_full_version String Web Optional Full version of browser.
browser_user_agent String Web Optional User agent of browser.
browser_language String Web Optional Name of browser from which bug is reported.
browser_platform String Web Optional Browser’s platform.
browser_height String Web Optional Height of browser.
browser_width String Web Optional Width of browser.
is_web Int ALL Required Possible value 1 or 0. If your project’s platform is web then value of is_web parameter will be 1 otherwise 0.

                        
                        
<?php

  $curl = curl_init();
curl_setopt_array($curl, [ CURLOPT_URL => "https://app.shakebug.com/v1.0/bug", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => "{\n \"project\" : \"YWjbqL7xzhFIVBMYvwMJzR-NaQ\",\n \"description\" : \"test bug\",\n \"bugtypes\" : \"bug\"\n}", CURLOPT_HTTPHEADER => [ "Authorization: Bearer <your access token>" "content-type: application/json" ], ]); $response = curl_exec($curl); $err = curl_error($curl);
curl_close($curl);
if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ?>
Response
 
{             
    "status": 200,
    "data": {
        "bug_id": "u9mfXevbBDwyYz9zZ0_dKNhmeC1B"
    }
}

Add Attachment

If you task need any image or video then after adding bug you need to call following /attachment API.

 
POST             https://app.shakebug.com/v1.0/bug/attachment
Authorization   Bearer <Your access token> 


This request uses multipart/form-data as the content type.

PARAMETER TYPE PLATFORM REQUIRED DESCRIPTION
bug_id String All Required The id of the bug where the file will be added.
attachment File All Required The file to upload..

                        
                        
<?php
  $curl = curl_init();
curl_setopt_array($curl, [ CURLOPT_URL =>'https://app.shakebug.com/v1.0/bug/attachment', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => array('bug_id' => 'Hlmbb7hsmjfBopiS2t9_WWGK2LXu','attachment'=> new CURLFILE('<Your local image path>')), CURLOPT_HTTPHEADER => [ "Authorization: Bearer <your access token>" ], ]); $response = curl_exec($curl); $err = curl_error($curl);
curl_close($curl);
if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ?>
Response
 
{             
"status": 200,
"data": {
"bug_id": "fcp8ThCjkv3hTE011xvVi0xCAsTfYFLe7kgMEqO2iquyA-PFc_jrOaT0_R8"
}
}