Dipende.
In un recente progetto, ho reso l'applicazione web e l'API quasi identiche. Se tu avessi link usato dall'applicazione web come una pagina o tramite AJAX, la stessa richiesta con lo stesso URI sarebbe anche utilizzato tramite l'API, servito solo con tipi MIME diversi (tipo HTML o JSON per l'applicazione Web, JSON o XML per l'API).
Funziona e ha il suo enorme vantaggio: scrivi il codice una volta. Almeno per la maggior parte della base di codice, poiché ci sarebbero discrepanze. Ad esempio, non avrebbe senso usare CAPTCHA nella tua API; d'altra parte, l'API avrebbe probabilmente alcune chiamate aggiuntive che non sono utilizzate dall'applicazione web.
Puoi anche designare l'API in un modo molto diverso, distinto dalla tua applicazione web. Questo ti dà ad esempio l'opportunità di avere un'API RESTful, mentre l'applicazione web userebbe le sessioni.