Q: Apex Batch Job Start Method I need to set up a daily batch job that makes an REST API call to an external service and updates contact records in salesforce.  The data in the external service changes once daily. The external system stores the salesforce contact record ID which I hope to use to update records in salesforce.
My question is, the typical salesforce batch job has a "start" method where I am supposed to gather the records for processing.   In this scenario, I do not know which records I will be processing as that is the point of my API call to the external service.
Is it possible to omit the start method or something similar that will still allow me to use the batch framework of salesforce?

A: I think you will need a scheduled job first to run it automatically everyday so you can use that to first make the callout and get all Contact Ids and then pass those to the Batch to query and run. But problem you might face is that scheduled job doesn't allow Callouts so you might want to a future method first.
So Scheduled Job -> Future Method (Callout to fetch Contact Ids) -> Batch Class

A: The problem you face is how to handle an arbitrarily large response from the REST API. The benefit of using a batch is to limit the number of objects processed (SOQL and DML) in a single session/transaction against the server. The disadvantage is that you need to know the objects to which processing is to be applied.
IF the REST API state data is compact you could in principle pass this to the batchable constructor and hold it as instance data. This data can be stored mapping contact IDs to the updates to be applied. You can then return a trivial query locator that selects contacts based on the contact IDs that make up the map's key set (SELECT Id FROM Contact WHERE Id IN :updatesByContactId.keySet()). Each execute will then return a sub-set of the contacts, and you can quickly look up the changes to be applied from the map. Apply these changes then at the end update all these contacts.
This implies ensuring that the callout is performed from the schedulable before invoking the batch, much as @Jitender Padda has suggested.
NB: If the REST API data is small enough - not too many contacts to update - you could process it all directly after the callout response is obtained, but you run the risk of hitting limits if you cannot know the maximum number of contacts that can be returned in one execution of the callout.
