WORLD CHECK ONE API v2- The remote server returned an error: (401) Unauthorized.'

       DateTime dateValue = DateTime.UtcNow; // get the datetime NOW GMT


            string date = dateValue.ToString("R"); // WC1 header requires GMT datetime stamp
            Console.WriteLine(date);
            //set host and credentials to the WC1 API Pilot server WC1SampleClientAPI account
            string gatewayurl = "/v2/";
            string gatewayhost = "api-worldcheck.refinitiv.com ";
            // Here is where you enter your api keys
            string apikey = "xxxx";
            string apisecret = "xxx";
            string requestendpoint = "https://api-worldcheck.refinitiv.com/v2/groups";


            // Assemble the GET request - NOTE every character including spaces have to be EXACT 
            // for the API server to decode the authorization signature       
            string dataToSign = "(request-target): get " + gatewayurl + "groups\n" +
                "host: " + gatewayhost + "\n" +   // no https only the host name
                "date: " + date;                  // GMT date as a string
            // The Request and API secret are now combined and encrypted
            string hmac = generateAuthHeader(dataToSign, apisecret);


            // Assemble the authorization string - This needs to match the dataToSign elements 
            // i.e. requires ONLY host date (no content body for a GET request)
            //- NOTE every character including spaces have to be EXACT else decryption will fail with 401 Unauthorized
            string authorisation = "Signature keyId=\"" + apikey + "\",algorithm=\"hmac-sha256\",headers=\"(request-target) host date\",signature=\"" + hmac + "\"";


            // Send the Request to the API server
            HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(requestendpoint);
            // Set the Headers
            WebReq.Method = "GET";
            WebReq.Headers.Add("Authorization", authorisation);
            WebReq.Headers.Add("Cache-Control", "no-cache");
            WebReq.Date = dateValue; // use datetime value GMT time


            // Get the Response - Status OK
            HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
            // Status information about the request
            Console.WriteLine(WebResp.StatusCode);
            Console.WriteLine(WebResp.ResponseUri);


When sending this request I am getting error.

System.Net.WebException: 'The remote server returned an error: (401) Unauthorized.'





Best Answer

Answers

  • NO SUPPORT !!!!!!!!!!!!!!!!!!!!
  • @ziad.abourizk

    The SLAs for the queries on the portal are 24hours.

    Can you confirm if your World-Check One API account name is "Ibrakom" and also confirm if you are using pilot keys for the above consumption?

    I suspect maybe your pilot API keys are expired which is causing a 401 as I don't see any active pilot access for "Ibrakom".

  • Dear Mehran,

    Yes account name is "Ibrakom" and api key is working.

    I tried from POSTMAN and I am getting 200 OK

    But when I try to run the C# code sample, I am getting a 401

    Ziad


  • @ziad.abourizk


    Let me send you an invite, let's have a quick call in the next 30mins and get this resolved.

    Let me know if it's not feasible for you.