WebApi action that updates entity using stored procedure
You don't have a people, you have a person. 
Saying if (person.IsMain == true) is exactly equivalent to if (person.IsMain)


Updated code below. 

public HttpResponseMessage SetAsMain(int id)
{
    People person = repository.GetById(id);

    if (people == null)
    {
        return ErrorMsg(HttpStatusCode.NotFound, string.Format("No people with ID = {1}", id));
    }

    if (person.IsMain)
    {
        return ErrorMsg(HttpStatusCode.OK, string.Format("{0} is already set as main", person.Houses.ToString())); 
    }

    try
    {
        var parameters = new Dictionary&lt;string, string&gt;();
        parameters.Add("PeopleID", id.ToString());                

        repository.ExecProcedure("usp_PeopleSetMain", parameters);
        return Request.CreateResponse(HttpStatusCode.OK, repository.GetById(id)); 
    }
    catch (Exception ex)
    {
        return ErrorMsg(HttpStatusCode.InternalServerError, ex.Message);
    }
}


I would also recommend changing the name of the repository method that returns a person from GetById to GetPersonById. As it is currently, the method name gives us no clue what's going on. I had to figure it out from context.