{"id":6454,"date":"2025-07-23T09:05:18","date_gmt":"2025-07-23T00:05:18","guid":{"rendered":"https:\/\/dandelions.co.jp\/blog\/?p=6454"},"modified":"2026-06-04T16:42:39","modified_gmt":"2026-06-04T07:42:39","slug":"engineer-blog-outsystems-calling-external-apis","status":"publish","type":"post","link":"https:\/\/dandelions.co.jp\/blog\/blog\/2025\/07\/23\/engineer-blog-outsystems-calling-external-apis\/","title":{"rendered":"Engineer Blog: (Outsystems) Calling External APIs"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Let us introduce the learning topics we work on daily as part of our engineer blog. This time, it\u2019s Team 2, focusing on low-code development!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">This time&#8217;s theme: (Outsystems) Calling External APIs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In Outsystems, there are several ways to use externally published APIs. This time, we&#8217;ll focus on introducing the method for calling REST-style APIs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The API we will use this time<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This time, we\u2019ll use an example of calling &#8216;<a href=\"https:\/\/platform.openai.com\/docs\/api-reference\/completions\">Completions<\/a>,&#8217; one of the APIs provided by OpenAI (link: API reference). It\u2019s the API that powers &#8216;ChatGPT,&#8217; enabling the functionality where users send a request and the AI responds with a written answer. Many of you might have seen or used it before, haven\u2019t you?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Implementation Example<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This time, we used this API to create a feature where AI evaluates Japanese reports submitted by users and provides feedback on the content, including assessments and suggestions for improvement.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"259\" src=\"http:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-1024x259.png\" alt=\"\" class=\"wp-image-6423\" srcset=\"https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-1024x259.png 1024w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-300x76.png 300w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-768x194.png 768w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image.png 1255w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption>The layout of the API execution screen<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The layout is quite simple: users input text into the &#8216;Report Input Field&#8217; on the left side of the screen. By pressing the &#8216;Evaluate&#8217; button, evaluation results and improvement feedback are displayed in the &#8216;Feedback&#8217; section on the right.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"536\" height=\"637\" src=\"http:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-1.png\" alt=\"\" class=\"wp-image-6425\" srcset=\"https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-1.png 536w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-1-252x300.png 252w\" sizes=\"auto, (max-width: 536px) 100vw, 536px\" \/><figcaption>Action upon pressing the button<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"905\" src=\"http:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-3-1024x905.png\" alt=\"\" class=\"wp-image-6427\" srcset=\"https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-3-1024x905.png 1024w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-3-300x265.png 300w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-3-768x679.png 768w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-3.png 1086w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption>\u201dGetFeedback\u201d Action<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The process upon pressing the button involves re-executing the REST API set within the Data Action. The flow includes setting parameters for the request required for API execution and then executing the API itself. So, how do you configure the API request here? By providing a sample request in Outsystems, it automatically generates the necessary configuration. Below, we&#8217;ll explain further with images.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"304\" height=\"191\" src=\"http:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-4.png\" alt=\"\" class=\"wp-image-6428\" srcset=\"https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-4.png 304w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-4-300x188.png 300w\" sizes=\"auto, (max-width: 304px) 100vw, 304px\" \/><figcaption>Display the REST context menu. Here, select &#8216;Consume REST API\u2026<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"572\" height=\"463\" src=\"http:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-5.png\" alt=\"\" class=\"wp-image-6429\" srcset=\"https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-5.png 572w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-5-300x243.png 300w\" sizes=\"auto, (max-width: 572px) 100vw, 572px\" \/><figcaption>This time, select &#8216;Add single method.&#8217;<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"799\" height=\"737\" src=\"http:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-6.png\" alt=\"\" class=\"wp-image-6430\" srcset=\"https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-6.png 799w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-6-300x277.png 300w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-6-768x708.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption>A screen to configure the desired REST URL and request\/response samples. Here, set up the request\/body based on the API Reference provided in the previously mentioned &#8216;Completions&#8217; link.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"872\" height=\"868\" src=\"http:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-7.png\" alt=\"\" class=\"wp-image-6431\" srcset=\"https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-7.png 872w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-7-300x300.png 300w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-7-150x150.png 150w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-7-768x764.png 768w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-7-100x100.png 100w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption>Example of Body Configuration<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"378\" src=\"http:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-8-1024x378.png\" alt=\"\" class=\"wp-image-6432\" srcset=\"https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-8-1024x378.png 1024w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-8-300x111.png 300w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-8-768x284.png 768w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-8.png 1047w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption>Example of Header Configuration<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"584\" src=\"http:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-10-1024x584.png\" alt=\"\" class=\"wp-image-6434\" srcset=\"https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-10-1024x584.png 1024w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-10-300x171.png 300w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-10-768x438.png 768w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-10-1536x876.png 1536w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-10.png 1816w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption>Using the body and header input details, input test data and perform a test run to confirm the request and response results. If there are no issues, press the &#8216;Finish&#8217; button to automatically generate the main action and the necessary data structure for the request and response.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once this is done, you can simply configure it as you would typically build logic in Outsystems: place the created REST API as an action in the flow, set the necessary inputs, and handle the return values to complete the API call.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"245\" src=\"http:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-11-1024x245.png\" alt=\"\" class=\"wp-image-6435\" srcset=\"https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-11-1024x245.png 1024w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-11-300x72.png 300w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-11-768x184.png 768w, https:\/\/dandelions.co.jp\/blog\/wp\/wp-content\/uploads\/2025\/07\/image-11.png 1229w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption>Execution example: Feedback is returned for the entered report.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">How was it? With the URL of a publicly available API and its reference, you can call it from Outsystems just like a regular action. However, be aware that publicly available APIs might have usage fees, limitations on the number of calls, or data capacity restrictions. So, please plan your usage carefully&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Team 2 will continue to share engineer blogs using low-code tools like Outsystems in the future, so stay tuned!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Let us introduce the learning topics we work on daily as part of our engineer blog. This time, it\u2019s Team 2, fo &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/dandelions.co.jp\/blog\/blog\/2025\/07\/23\/engineer-blog-outsystems-calling-external-apis\/\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;Engineer Blog: (Outsystems) Calling External APIs&#8221; \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[8],"tags":[9],"class_list":["post-6454","post","type-post","status-publish","format-standard","hentry","category-8","tag-9"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/dandelions.co.jp\/blog\/wp-json\/wp\/v2\/posts\/6454","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dandelions.co.jp\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dandelions.co.jp\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dandelions.co.jp\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dandelions.co.jp\/blog\/wp-json\/wp\/v2\/comments?post=6454"}],"version-history":[{"count":3,"href":"https:\/\/dandelions.co.jp\/blog\/wp-json\/wp\/v2\/posts\/6454\/revisions"}],"predecessor-version":[{"id":7375,"href":"https:\/\/dandelions.co.jp\/blog\/wp-json\/wp\/v2\/posts\/6454\/revisions\/7375"}],"wp:attachment":[{"href":"https:\/\/dandelions.co.jp\/blog\/wp-json\/wp\/v2\/media?parent=6454"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dandelions.co.jp\/blog\/wp-json\/wp\/v2\/categories?post=6454"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dandelions.co.jp\/blog\/wp-json\/wp\/v2\/tags?post=6454"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}