A software framework consists of one ore more API and provides a "skeleton" for building something. It consists of some code/logic that does actual things and provides points where it can interact and function with custom code/logic that a programmer, i.e. framework user, writes. For example, the code of the
Struts Framework does some things, but does nothing on its own. Custom code/logic must be created.
The term "application programming interface" has many definitions and depends upon a context for reasonable discussion. The term "framework" may also have many defintions. What I provided above it simply my interpretation.