What is the difference between operating system API and system-call interface ? I have read at many places that both act as interface between program and the kernel. Then what is the actual difference between them ?
A system call is a call from code that is running in an application's memory space to code that is running in the kernel's memory space. Apart from low-end embedded systems, there is a security boundary between application space and kernel space: applications cannot access kernel space.
An operating system API is almost never between the application and the kernel, but between the application and libraries distributed as part of the operating system. The operating system API is function calls, not system calls. An API is typically an interface between code that is written by different people, and typically consists of function calls, not calls across an isolation boundary. An operating system API is between code that is part of the operating system and code that isn't.
Application programmers almost never use system calls. Application code calls operating system APIs. The implementation of these APIs, which is code that is part of the operating system, issues system calls to reach the operating system code that is in the kernel.