Different implementation of an Interface along with additional parameters
Since I am using DI to instantiate classes


I have to disappoint you... there is no DI in your code. The only service you are using is instantiated inside the class using it:


private ContactService _contactService = new ContactService(); 



DI would be if you passed it to ContactBusinessImpl via constructor.




public string Token { get; set; }

public void SetToken(string token)
{
    Token = token;
}



We don't usually do that. A value is either a mandatory one, then we use a constructor so the user must provide it or it's optional so we create a get/set property for it and don't enforce it via constructor. Having a method that sets a property that has a setter is pointless.




public void Add(Contact c)
{
    var client = new HttpClient();
    client.SetBearerToken(Token);
    var stringContent = new StringContent(JsonConvert.SerializeObject(c), Encoding.UTF8,"application/json");
    client.PostAsync("api/add", stringContent);
}



Creating HttpClient on each call is a bad idea. At some point you'll run out of sockets.