Asynchronous lookup over HTTP and checking the status For some reason declaring ApiResult before checking if the answer is in a correct status doesn't look good. I wonder if there is any better way to check the status and return the result:

public async Task&lt;ApiResult&gt; GetCustomersByOutcode(string outcode)
{
    using (var client = new HttpClient())
    {
        ConfigureHttpClient(client);

        var response = await client.GetAsync(
            $"customer?q={WebUtility.UrlEncode(outcode)}");

        ApiResult result = null;
        if (response.IsSuccessStatusCode)
        {
            result = await response.Content.ReadAsAsync&lt;ApiResult&gt;();
        }
        return result;
    }
}
I suggest to remove the result variable. You can just return the result. You don't have to store it in a temporary variable:

if (response.IsSuccessStatusCode)
{
    return await response.Content.ReadAsAsync&lt;ApiResult&gt;();
}
else {
    return null;
}


In this case I would even use the ternary ? : operator:

return response.IsSuccessStatusCode
    ? await response.Content.ReadAsAsync&lt;ApiResult&gt;()
    : null; 


You could also write it like this:

if (!response.IsSuccessStatusCode)
    return null;

return await response.Content.ReadAsAsync&lt;ApiResult&gt;();