How to show data from external api to theme template?
There are a few answers to that question, and it depends on the design (appearence and behaviors), but the Drupal foundation is usually the same.
1st step
Create a custom block and place it in a page (node of a generic type is a good option or a programmatically created page.
OR
Create a custom page (see ´hook_menu´)
2nd step
Create a custom theme function using ´hook_theme´ (template file is usually easier to maintain)
3rd step (connect to the API)
Due to performance considerations (async vs. sync request) I prefer to use JavaScript to get the data and present it on the page / block we created. (AngularJS is my friend..)
If JS is not an option, then you can make the request in ´hook_block_view´ in case you used custom block, ´hook_page_build´ or in your ´hook_menu´'s callback in case you chose a page in step 1.