NAV undefined
undefined
bash ruby python php javascript go csharp java

Introduction

API Endpoint

https://crime.getupforchange.com/api/

Welcome to the CrimeCheck API! You can use our API to access court cases in our database.

Currently, the API checks for Court Records in all courts across India, including Supreme Court, All High Courts, District Courts and Tribunals. This includes pending and disposed cases. It also searches in important defaulter lists. The total number of records being searched is 17 Crores (17,16,85,644) as on 26-07-2020.

We have provided examples in cURL, Ruby, Python, PHP, JavaScript, Go, C# and Java! You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.

The CrimeCheck API is organized around REST. Our API has predictable, resource-oriented URLs, and uses HTTP response codes to indicate API errors. We support cross-origin resource sharing, allowing you to interact securely with our API from a client-side web application (though you should never expose your secret API key in any public website's client-side code). JSON is returned by all API responses, including errors.

To make the API as explore-able as possible, accounts have test mode and live mode API keys. There is no "switch" for changing between modes, just use the appropriate key to perform a live or test transaction.

Watch this short video to understand more about Report API integration.

Basic API

Authentication

To authorize, use this code:

  curl https://crime.getupforchange.com/api/v3/authenticate \
   -u 'test_apikey:'

Note: curl uses the -u flag to pass basic auth credentials(adding
a colon after your API key prevents cURL from asking for a password).
require 'uri'
require 'net/http'

url = URI("https://crime.getupforchange.com/api/v3/authenticate")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Get.new(url)
request.basic_auth("test_apikey", "")

response = http.request(request)
end
import requests

requests.get('https://crime.getupforchange.com/api/v3/uthenticate', auth=('test_apikey', ''))
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://crime.getupforchange.com/api/v3/authenticate");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");

curl_setopt($ch, CURLOPT_USERPWD, "test_apikey" . ":" . "");

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
var request = require('request');

var options = {
    url: 'https://crime.getupforchange.com/api/v3/authenticate',
    auth: {
        'user': 'test_apikey',
        'pass': ''
    }
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

  req, err := http.NewRequest("GET", "https://crime.getupforchange.com/api/v3/authenticate", nil)
  if err != nil {
    // handle err
  }
  req.SetBasicAuth("test_apikey", "")

  resp, err := http.DefaultClient.Do(req)
  if err != nil {
    // handle err
  }
  defer resp.Body.Close()

var restClient = new RestClient('https://crime.getupforchange.com/api/v3/authenticate')
{
    Authenticator = new HttpBasicAuthenticator('test_apikey', '')
};
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
HttpResponse<String> response = Unirest.get("https://crime.getupforchange.com/api/v3/authenticate")
  .basicAuth("test_apikey", "")
  .asString();

The above command returns JSON structured like this:

  {
    'status': 'OK'
  }

Authenticate your account when using the API by including your secret API key in the request. Your API keys carry many privileges, so be sure to keep them secret! Do not share your secret API keys in publicly accessible areas such GitHub, client-side code, and so forth.

Authentication to the API is performed via HTTP Basic Auth. Provide your API key as the basic auth username value. You do not need to provide a password.

If you need to authenticate via bearer auth (e.g., for a cross-origin request), use -H "Authorization: test_apikey" instead of -u test_apikey:.

CrimeCheck expects for the API key to be included in all API requests to the server. API requests without authentication will fail.

API Status

  curl https://crime.getupforchange.com/api/v3/status \
   -u 'test_apikey:'

Note: curl uses the -u flag to pass basic auth credentials (adding
a colon after your API key prevents cURL from asking for a password).
require 'uri'
require 'net/http'

url = URI("https://crime.getupforchange.com/api/v3/status")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Get.new(url)
request.basic_auth("test_apikey", "")

response = http.request(request)
end
import requests

requests.get('https://crime.getupforchange.com/api/v3/status', auth=('test_apikey', ''))
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://crime.getupforchange.com/api/v3/status");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");

curl_setopt($ch, CURLOPT_USERPWD, "test_apikey" . ":" . "");

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
var request = require('request');

var options = {
    url: 'https://crime.getupforchange.com/api/v3/status',
    auth: {
        'user': 'test_apikey',
        'pass': ''
    }
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);

  req, err := http.NewRequest("GET", "https://crime.getupforchange.com/api/v3/status", nil)
  if err != nil {
    // handle err
  }
  req.SetBasicAuth("test_apikey", "")

  resp, err := http.DefaultClient.Do(req)
  if err != nil {
    // handle err
  }
  defer resp.Body.Close()

var restClient = new RestClient('https://crime.getupforchange.com/api/v3/status')
{
    Authenticator = new HttpBasicAuthenticator('test_apikey', '')
};
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
HttpResponse<String> response = Unirest.get("https://crime.getupforchange.com/api/v3/status")
  .basicAuth("test_apikey", "")
  .asString();

The above command returns JSON structured like this:

  {
    'status': 'OK'
  }

GET https://crime.getupforchange.com/api/v3/status

Check if apiKey is valid using this API.

Errors

CrimeCheck uses conventional HTTP response codes to indicate the success or failure of an API request. In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, invalid API key etc.), and codes in the 5xx range indicate an error with CrimeCheck servers (these are rare).

HTTP status code summary

Status Description
200 OK - Everything worked as expected.
400 INVALID_REQUEST_ERROR - The request was unacceptable, often due to missing a required parameter or invalid value
401 INVALID_API_KEY, API_LIMIT_EXCEEDED - Authorization related
429 Too Many Requests (Rate limit of Max per MINUTE=600, HOUR=3000, DAY=30000)
500 Crimecheck service issue

CrimeReport API

CrimeReport API accepts the profile of a company or individual. After we receive the request, our team of analysts and lawyers will work and provide a report (PDF file) within the agreed Turn Around Time (TAT). There are two APIs available as a part of CrimeReport.

1. Add Report

  curl  -X POST \
   https://crime.getupforchange.com/api/v3/addReport \
   -u 'test_apikey:' \
   -H 'content-type: application/x-www-form-urlencoded' \
   -d 'companyName=Getupforchange Services Private Limited' \
   -d 'cinNumber=U74900KA2014PTC073629' \
   -d 'companyAddress=#L66, First Floor, 9th B Main, Sector 11, LIC colony, HAL 3rd Stage, Jeevan Bheem Nagar Bangalore Bangalore'
  require 'uri'
  require 'net/http'

  url = URI("https://crime.getupforchange.com/api/v3/addReport")

  http = Net::HTTP.new(url.host, url.port)

  request = Net::HTTP::Post.new(url)
  request.basic_auth("test_apikey", "")
  request["content-type"] = 'application/x-www-form-urlencoded'
  request.body = "companyName=Getupforchange%20Services%20Private%20Limited&cinNumber=U74900KA2014PTC073629&companyAddress=%23L66%2C%20First%20Floor%2C%209th%20B%20Main%2C%20Sector%2011%2C%20LIC%20colony%2C%20HAL%203rd%20Stage%2C%20Jeevan%20Bheem%20Nagar%20Bangalore%20Bangalore"

  response = http.request(request)
  puts response.read_body
import requests

headers = {
  'content-type': 'application/x-www-form-urlencoded',
}

data = [
   ('companyName','Getupforchange Services Private Limited'),
   ('cinNumber','U74900KA2014PTC073629'),
   ('companyAddress','#L66, First Floor, 9th B Main, Sector 11, LIC colony, HAL 3rd Stage, Jeevan Bheem Nagar Bangalore Bangalore')
]

requests.post('https://crime.getupforchange.com/api/v3/addReport', headers=headers, data=data, auth=('test_apikey', ''))
  <?php

  $curl = curl_init();

  curl_setopt_array($curl, array(
    CURLOPT_URL => "https://crime.getupforchange.com/api/v3/addReport",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => "companyName=Getupforchange%20Services%20Private%20Limited&cinNumber=U74900KA2014PTC073629&companyAddress=%23L66%2C%20First%20Floor%2C%209th%20B%20Main%2C%20Sector%2011%2C%20LIC%20colony%2C%20HAL%203rd%20Stage%2C%20Jeevan%20Bheem%20Nagar%20Bangalore%20Bangalore",
    CURLOPT_HTTPHEADER => array(
      "content-type: application/x-www-form-urlencoded"
    ),
  ));
  curl_setopt($ch, CURLOPT_USERPWD, "test_apikey" . ":" . "");
  $response = curl_exec($curl);
  $err = curl_error($curl);

  curl_close($curl);

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

  var options = { method: 'POST',
  url: 'https://crime.getupforchange.com/api/v3/addReport',
  auth: {
        'user': 'test_apikey',
        'pass': ''
    }
  headers: {
    'content-type': 'application/x-www-form-urlencoded',
  },

  form: { 'companyName':'Getupforchange Services Private Limited','cinNumber':'U74900KA2014PTC073629','companyAddress':'#L66, First Floor, 9th B Main, Sector 11, LIC colony, HAL 3rd Stage, Jeevan Bheem Nagar Bangalore Bangalore' };
  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });

  body := strings.NewReader(`companyName=Getupforchange%20Services%20Private%20Limited&cinNumber=U74900KA2014PTC073629&companyAddress=%23L66%2C%20First%20Floor%2C%209th%20B%20Main%2C%20Sector%2011%2C%20LIC%20colony%2C%20HAL%203rd%20Stage%2C%20Jeevan%20Bheem%20Nagar%20Bangalore%20Bangalore`)
  req, err := http.NewRequest("POST", "https://crime.getupforchange.com/api/v3/addReport", body)
  if err != nil {
    // handle err
  }
  req.SetBasicAuth("test_apikey", "")
  req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

  resp, err := http.DefaultClient.Do(req)
  if err != nil {
    // handle err
  }
  defer resp.Body.Close()
  var client = new RestClient('https://crime.getupforchange.com/api/v3/addReport'){
      Authenticator = new HttpBasicAuthenticator('test_apikey', '')
  };
  var request = new RestRequest(Method.POST);
  request.AddHeader("content-type", "application/x-www-form-urlencoded");
  request.AddParameter("application/x-www-form-urlencoded", "companyName=Getupforchange%20Services%20Private%20Limited&cinNumber=U74900KA2014PTC073629&companyAddress=%23L66%2C%20First%20Floor%2C%209th%20B%20Main%2C%20Sector%2011%2C%20LIC%20colony%2C%20HAL%203rd%20Stage%2C%20Jeevan%20Bheem%20Nagar%20Bangalore%20Bangalore", ParameterType.RequestBody);
  IRestResponse response = client.Execute(request);
  HttpResponse<String> response = Unirest.post("https://crime.getupforchange.com/api/v3/addReport")
    .basicAuth("test_apikey", "")
    .header("content-type", "application/x-www-form-urlencoded")
    .body("companyName=Getupforchange%20Services%20Private%20Limited&cinNumber=U74900KA2014PTC073629&companyAddress=%23L66%2C%20First%20Floor%2C%209th%20B%20Main%2C%20Sector%2011%2C%20LIC%20colony%2C%20HAL%203rd%20Stage%2C%20Jeevan%20Bheem%20Nagar%20Bangalore%20Bangalore")
    .asString();

AddReport API accepts details of the company, and it will return a unique requestId for each request. This unique requestId is needed to retrieve the report of the company.

HTTP Request

POST https://crime.getupforchange.com/api/v3/addReport

Format of optional directors JSON array
(only name is mandatory, others will increase relevance of results):
----------------------------------------------------------------
 [
  {
    "name" : "...", <-- Mandatory
    "fatherName" : "",
    "dob" : "...",
    "address" : "...",
    "reportMode" : "",
    "priority" : "",
    "panNumber" : "",
    "reqTag" : "",
    "gstNumber" : "",
    "ticketSize" : "",
  }
]
Possible values of companyType
------------------------------
Private Limited => "PvtLtd"
Public Limited => "Limited"
Limited Liability Company => "LLC"
Limited Liability Partnership => "LLP"
Registered Firm => "RegFirm"
Unregistered Firm => "UnregFirm"
Proprietary => "Proprietary"

URL Parameters - For Company

companyName: string
Mandatory
Name of the company
cinNumber: string
Optional
CIN Number of the company
companyAddress: string
Optional
Registered address of the company
directors JSON array
Optional
Director(s)/Owner(s)/Partner(s) of the company
Each object in the array represents one individual (see sidebar)
companyType string
Optional
Type of the company. See sidebar for possible options.
clientRefNo string
Optional
Unique Reference Number which will be included in the report
reportMode string
Optional
If the value realTimeHighAccuracy is passed, generates a Real-time report, compiling all cases returned by highAccuracy mode of Crime Records API. Report will be available in next few mins. There is no manual scrutiny by legal team.
If no value is passed, report generation will happen through usual process of filtering by CrimeCheck's operations team, including manual scrutiny by legal team. Report will be available in agreed TAT (4 - 24 hours usually).
priority string
Optional
Default: normal
If value is set to high, it will be targeted to be finished within 4 hours. If completed within 4 hours, higher charges will be applicable (contact CrimeCheck for details). If not completed within 4 hours, charges will be normal.
callbackUrl: string
Optional
We will do an HTTP POST back to this URL when the report is ready
crimewatch boolean
Optional
Default: false
If set to true, we'll monitor this profile at a regular frequency for any new cases or updates to existing cases, and send you updated reports via callback (more info)
The CrimeWatch callback body will have crimewatch key set to true to indicate that it is a CrimeWatch response. It'll also have an additional crimewatch object inside each case object, which has a flag field indicating the nature of change from previous report (new,modified,nochange), followed by a modified_fields array listing the fields that were changed if any. See sample response below.
Note: Usage of CrimeWatch needs to be enabled for each API key from CrimeCheck side. Request explicitly to enable this before use.
gstNumber: string
Optional
GST Number of Company
reqTag: string
Optional
Any string tag you want to attach to this request. E.g. "Agri Loan", "Auto Loan"
ticketSize: string
Optional
Slab of the monetary value to be delivered to the assessee, based on this request's risk profile. Will be used to determine the risk, comparing with the kind of cases the assessee is involved in. Possible values are: 0 - 1 Lakh ₹, 1 - 10 Lakh ₹, More than 10 lakh ₹

URL Parameters - For Individual

name: string
Mandatory
Name of the Individual
fatherName: string
Optional
Father name
dob: string
Optional
Date of birth
address: string
Optional
Address
panNumber: string
Optional
PAN of the individual
callbackUrl: string
Optional
We will do an HTTP POST back to this URL when the report is ready
crimewatch boolean
Optional
Default: false
If set to true, we'll monitor this profile at a regular frequency for any new cases or updates to existing cases, and send you updated reports via callback (more info)
The CrimeWatch callback body will have crimewatch key set to true to indicate that it is a CrimeWatch response. It'll also have an additional crimewatch object inside each case object, which has a flag field indicating the nature of change from previous report (new,modified,nochange), followed by a modified_fields array listing the fields that were changed if any. See sample response below.
Note: Usage of CrimeWatch needs to be enabled for each API key from CrimeCheck side. Request explicitly to enable this before use.

Response

Response for addReport API
{
    "status": "OK",
    "requestTime": "11/04/2018 12:58:17",
    "requestId": "1523431697863"
}

If successful, Add report API will return a JSON response containing unique id of the request.

If callbackUrl is provided, We will do an HTTP POST to the callbackUrl. Results from callback are bundled and sent through a parameter named data.

Response via callBack
{
"status":"OK",
"uniqueId":"1533629553214",
"requestTime":"01:42 PM - 07/08/2018 ",
"responseTime":"01:43 PM - 07/08/2018 ",
"downloadLink":"https://crime.getupforchange.com/api/v3/downloadReport/1533629553214/test_apikey"
}

In case of failure, API will return error code listed in error section

2. Download PDF Report

Reports uploaded by our team can be retrieved using the download report API.

HTTP Request

GET https://crime.getupforchange.com/api/v3/downloadReport/<requestId>/<apiKey>

URL Parameters

requestId: string
Mandatory
Unique requestId sent by addReport API
apiKey: string
Mandatory
This parameter is mandatory if apiKey is not passed via Authorization header.

Response

{
  "status": "OK",
  "message": "Invalid UniqueId or APIKey"
}

{
  "status": "OK",
  "message": "Report not available. Please try again later."
}

If successful, PDF file blob will be sent which can be saved and opened via PDF readers.

In case of failure, following responses will be sent.

Message Description
Invalid UniqueId or APIKey Invalid Unique ID or APIKey is passed
Report not available. Please try again later. Our team has not uploaded the report. Please try later.

3. Download JSON Report

Report uploaded by our team can be retrieved as a JSON response, which also includes a link to the PDF report described above.

HTTP Request

GET https://crime.getupforchange.com/api/v3/downloadJsonReport/<requestId>/<apiKey>

URL Parameters

requestId: string
Mandatory
Unique requestId sent by addReport API
apiKey: string
Mandatory
This parameter is mandatory if apiKey is not passed via Authorization header.

Response

See sidebar for sample responses on failure and success.

Failure
-------
{
  "status": "failed",
  "message": "Invalid UniqueId or APIKey"
}

Or,

{
  "status": "failed",
  "message": "Report not available. Please try again later."
}

Success
-------
{
  "status": "OK",
  "requestId": "1597298625363",
  "downloadLink": "https://crime.getupforchange.com/api/v3/downloadReport/1597298625363/sample-key",
  "riskType": "Very High Risk",
  "riskSummary": "There is a pending case filed against the subject,the case is filed for Husband or relative of husband of a woman subjecting her to cruelty.",
  "numberOfCases": 1,
  "caseDetails": [
    {
      "slNo": 1,
      "petitioner": "Antophill Police Staion",
      "respondent": "Sanjay Akhilesh Gupta",
      "cinNumber": "MHMM130045422012",
      "caseTypeName": "PW - Police Warrant Trible",
      "courtName": "Additional Chief Metropolitan Magistrate, Kurla,M",
      "state": "MAHARASHTRA",
      "district": "MUMBAI",
      "petitionerAddress": "1) Name: Antophill Police StaionAddress: C.G.S. Colony, Sector No. 6, Kane Nagar Antophill, Mumbai",
      "respondentAddress": "1) Name: Sanjay Akhilesh GuptaAddress: B. NO. B-1 ROOM NO. 18 SARDAR NGR NO. 4 SION KOLIWADA MUMBAI 37gfc_pincode: 400037",
      "caseNumber": "208551015842012",
      "caseYear": "2012",
      "underAct": "U/s 498A406, Indian Penal Code",
      "section": "498A406",
      "caseStatus": "Pending",
      "firLink": "N/A",
      "judgementLink": "https://judgements.getupforchange.com/MHMM130045422012.pdf",
      "caseLink": "https://services.ecourts.gov.in/ecourtindia_v6/",
      "caseType": "Criminal",
      "caseRemarks": "Address: B. NO. B-1 ROOM NO. 18 SARDAR NGR NO. 4 SION KOLIWADA MUMBAI 37",
      "natureOfDisposal": "",
      "final_riskType": null,
      "final_riskSummary": null,
      "courtType": "Magistrate Court",
      "caseDetailsLink": "https://crime.getupforchange.com/getDetails?id=AWK5YCr-aQi7HkqivKOM"
    }
  ]
}
Message Description
Invalid UniqueId or APIKey Invalid Unique ID or APIKey is passed
Report not available. Please try again later. Our team has not uploaded the report. Please try later.

Usage Count

API Endpoint

https://crime.getupforchange.com/api/v3/usage?apiKey=sample-key

The above command returns JSON structured like this:

{
  "usage": 48,
  "limit": 100
}

CrimeCheck APIs work based on credits added to your API Key. To check the balance credits, call this API and pass in your apiKey as a GET parameter.

Appendix

List of States and Union Territories

List of Districts

List of court names

Sample Response

Real-time report

  curl -X POST \
   https://crime.getupforchange.com/api/v3/addReport \
   -u 'test_apikey:' \
   -H 'content-type: application/x-www-form-urlencoded' \
   -d 'name=Ramakant Shankarmal Pilani&address=Plot No 10 Shanti Sadan J B Nagar,near Subhash Hotel,andheri East Mumbai,maharashtra,mumbai,400059' 
  require 'uri'
  require 'net/http'

  url = URI("https://crime.getupforchange.com/api/v3/addReport")

  http = Net::HTTP.new(url.host, url.port)

  request = Net::HTTP::Post.new(url)
  request.basic_auth("test_apikey", "")
  request["content-type"] = 'application/x-www-form-urlencoded'
  request.body = "name=Ramakant Shankarmal Pilani&address=Plot No 10 Shanti Sadan J B Nagar,near Subhash Hotel,andheri East Mumbai,maharashtra,mumbai,400059"

  response = http.request(request)
  puts response.read_body
import requests

headers = {
  'content-type': 'application/x-www-form-urlencoded',
}

data = [
  ('name', 'Ramakant Shankarmal Pilani'),
  ('address', 'Plot No 10 Shanti Sadan J B Nagar,near Subhash Hotel,andheri East Mumbai,maharashtra,mumbai,400059'),
]

requests.post('https://crime.getupforchange.com/api/v3/addReport', headers=headers, data=data, auth=('test_apikey', ''))
  <?php

  $curl = curl_init();

  curl_setopt_array($curl, array(
    CURLOPT_URL => "https://crime.getupforchange.com/api/v3/addReport",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => "name=Ramakant Shankarmal Pilani&address=Plot No 10 Shanti Sadan J B Nagar,near Subhash Hotel,andheri East Mumbai,maharashtra,mumbai,400059",
    CURLOPT_HTTPHEADER => array(
      "content-type: application/x-www-form-urlencoded"
    ),
  ));
  curl_setopt($ch, CURLOPT_USERPWD, "test_apikey" . ":" . "");
  $response = curl_exec($curl);
  $err = curl_error($curl);

  curl_close($curl);

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

  var options = { method: 'POST',
  url: 'https://crime.getupforchange.com/api/v3/addReport',
  auth: {
        'user': 'test_apikey',
        'pass': ''
    }
  headers: {
    'content-type': 'application/x-www-form-urlencoded',
  },
  form: { name: 'Ramakant Shankarmal Pilani', address: 'Plot No 10 Shanti Sadan J B Nagar,near Subhash Hotel,andheri East Mumbai,maharashtra,mumbai,400059' } };
  request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });

  body := strings.NewReader(`name=Ramakant Shankarmal Pilani&address=Plot No 10 Shanti Sadan J B Nagar,near Subhash Hotel,andheri East Mumbai,maharashtra,mumbai,400059`)
  req, err := http.NewRequest("POST", "https://crime.getupforchange.com/api/v3/addReport", body)
  if err != nil {
    // handle err
  }
  req.SetBasicAuth("test_apikey", "")
  req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

  resp, err := http.DefaultClient.Do(req)
  if err != nil {
    // handle err
  }
  defer resp.Body.Close()
  var client = new RestClient('https://crime.getupforchange.com/api/v3/addReport'){
      Authenticator = new HttpBasicAuthenticator('test_apikey', '')
  };
  var request = new RestRequest(Method.POST);
  request.AddHeader("content-type", "application/x-www-form-urlencoded");
  request.AddParameter("application/x-www-form-urlencoded", "name=Ramakant Shankarmal Pilani&address=Plot No 10 Shanti Sadan J B Nagar,near Subhash Hotel,andheri East Mumbai,maharashtra,mumbai,400059", ParameterType.RequestBody);
  IRestResponse response = client.Execute(request);
  HttpResponse<String> response = Unirest.post("https://crime.getupforchange.com/api/v3/addReport")
    .basicAuth("test_apikey", "")
    .header("content-type", "application/x-www-form-urlencoded")
    .body("name=Ramakant Shankarmal Pilani&address=Plot No 10 Shanti Sadan J B Nagar,near Subhash Hotel,andheri East Mumbai,maharashtra,mumbai,400059")
    .asString();

The above command returns JSON structured like this:

{
    "status": "OK",
    "requestTime": "28/05/2021 18:16:34",
    "requestId": "1622205994888"
}

Example Data used:
Name: Ramakant Shankarmal Pilani
Address: Plot No 10 Shanti Sadan J B Nagar,near Subhash Hotel,andheri East Mumbai,maharashtra,mumbai,400059

CrimeWatch response

See sidebar for sample response. Observe that top-level field crimewatch is set to true. Observe that each object inside caseDetails array has an object called crimewatch, which indicates the nature of the change and the case fields that were changed.

{
  "status": "OK",
  "requestId": "1650885132243",
  "requestTime": "25/04/2022 04:42 pm",
  "responseTime": "25/04/2022 04:46 pm",
  "searchTerm": [
    {
      "companyName": "AYURWIN PHARMA PRIVATE LIMITED",
      "cinnumber": "",
      "address": "1ST BLOCK, RAJAJINAGAR NO. 1094, 19TH MAIN 560010 BANGALORE India 560010 INDIA"
    }
  ],
  "crimewatch": true,
  "crimewatchNewCasesCount": 13,
  "downloadLink": "https://crime.getupforchange.com/api/v3/downloadReport/1650885132243/..........",
  "riskType": "Very High Risk",
  "riskSummary": "The subject is a defaulter in the CIBIL defaulter list for an amount of Rs. 623.20 lakhs",
  "numberOfCases": 17,
  "caseDetails": [
    {
      "slNo": 1,
      "petitioner": "CORPORATION BANK",
      "respondent": "AYURWIN PHARMA PRIVATE LIMITED,  Mr.P.B.Shivakumar--3331842, Mrs.P.R.Shwetha--3640307",
      "cinNumber": "m",
      "caseTypeName": "",
      "hearingDate": "n",
      "courtNumberAndJudge": "",
      "courtName": "CIBIL - Willful Defaulters list",
      "state": "Center",
      "district": "",
      "petitionerAddress": "1) Name: CORPORATION BANK Address: BANGALORE-MALLESHWARAM",
      "respondentAddress": "1) Name: AYURWIN PHARMA PRIVATE LIMITED Address: NO 1094 19TH MAIN, I BLOCK RAJAJINAGAR BANGALORE -560010----------------------------2) Name:  Mr.P.B.Shivakumar ----------------------------3) Name:  Mrs.P.R.Shwetha ----------------------------",
      "caseNumber": "",
      "caseNo": "",
      "caseYear": "Unknown",
      "underAct": "CIBIL - Willful Defaulters list",
      "section": "",
      "underSection": "",
      "caseStatus": "Other",
      "firLink": "N/A",
      "judgementLink": "",
      "caseFlow": [],
      "gfc_uniqueid": "LIST_0_0_CIBIL_CORPORATIONBANK_AYURWINPHARMAPRIVATE_30_09_19_NA",
      "caseLink": "https://suit.cibil.com/",
      "caseType": "Civil",
      "natureOfDisposal": "",
      "riskType": "High Risk",
      "riskSummary": " The subject is a defaulter in the CIBIL - Willful defaulter list and  has done a default of Rs. 623.20 lakhs\"\n",
      "severity": "CIBIL - Willful Defaulters listmmk",
      "judgementSummary": "There are no judgement/order's provided in the court records",
      "caseRegDate": "30-09-19",
      "regNumber": "",
      "filingDate": "",
      "filingNumber": "",
      "courtType": "Willfull Defaulters List",
      "crimewatch": {
        "flag": "modified",
        "modified_fields": [
          "riskType"
        ]
      },
      "gfc_orders_data": {
        "petitioners": [],
        "respondents": []
      },
      "gfc_respondents": [
        {
          "name": "<em>AYURWIN</em> <em>PHARMA</em> <em>PRIVATE</em> <em>LIMITED</em> ",
          "address": "<mem>NO</mem> <mem>1094</mem> <mem>19TH</mem> <mem>MAIN</mem>, I <mem>BLOCK</mem> <mem>RAJAJINAGAR</mem> <mem>BANGALORE</mem> -<mem>560010</mem>"
        },
        {
          "name": " Mr.P.B.Shivakumar "
        },
        {
          "name": " Mrs.P.R.Shwetha "
        }
      ],
      "gfc_petitioners": [
        {
          "name": "CORPORATION BANK ",
          "address": "<mem>BANGALORE</mem>-MALLESHWARAM"
        }
      ],
      "matchingAddress": "1) Name: AYURWIN PHARMA PRIVATE LIMITED Address: NO 1094 19TH MAIN, I BLOCK RAJAJINAGAR BANGALORE -560010----------------------------",
      "caseDetailsLink": "https://crime.getupforchange.com/getDetails?gfcId=0e30f2e3e49d976567da6d54c83fc8fc39ddda057134ed5d46fb07e125cd8eeefe0a1dd093e6984a39362bbfebbaf97ae184b6f718ef8a9d74dc99fb6ea45f"
    }
  ]
}

Change History

Date Version Author Change Description
06/05/2022 1.12 Aswin HTTP Error Codes updated, CrimeWatch response details added
12/04/2022 1.11 Aswin CrimeWatch details added
26/01/2022 1.10 Aswin Add API Integration video, add Usage Count API details
07/07/2021 1.9 Mukul Update with priority field
29/05/2021 1.8 Mukul Update with reportMode info
26/08/2020 1.7 Aswin Add details of downloadJsonReport API
30/07/2020 1.6 Aswin Add PAN number to Individual CrimeReport, JSON array format for directors
06/03/2018 1.5 Vinoth Added courtType and courtName Filters.
05/11/2017 1.4 Vinoth Added searchFields.
24/10/2017 1.3 Vinoth Added resultsPerPage and courtType.
09/10/2017 1.2 Vinoth Added filters and pagination.
01/09/2017 1.1 Vinoth Added SearchType for Partial searches.
28/08/2017 1.0 Pradeep Incorporated review comments.
26/08/2017 0.3 Vinoth Added detailed description for all the parameters.
25/08/2017 0.2 Vinoth Fixed formatting errors. Added some examples.
24/08/2017 0.1 Prasad Added categories for status of response.
20/08/2017 First Draft Vinoth Created first version with API and details.