{"id":987522415,"date":"2026-01-29T11:19:44","date_gmt":"2026-01-29T11:19:44","guid":{"rendered":"https:\/\/www.teamogy.com\/?p=987522415"},"modified":"2026-01-29T11:19:47","modified_gmt":"2026-01-29T11:19:47","slug":"programmatic-user-secure-api-access-in-teamogy","status":"publish","type":"post","link":"https:\/\/www.teamogy.com\/ro\/manual\/programmatic-user-secure-api-access-in-teamogy\/","title":{"rendered":"Programmatic User \u2013 Secure API Access in Teamogy"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][et_pb_row column_structure=&#8221;3_4,1_4&#8243; module_class=&#8221; et_pb_row_fullwidth&#8221; _builder_version=&#8221;4.16&#8243; width=&#8221;89%&#8221; width_tablet=&#8221;80%&#8221; width_phone=&#8221;&#8221; width_last_edited=&#8221;on|desktop&#8221; max_width=&#8221;89%&#8221; max_width_tablet=&#8221;80%&#8221; max_width_phone=&#8221;&#8221; max_width_last_edited=&#8221;on|desktop&#8221; custom_padding=&#8221;27px|0px|0|0|false|false&#8221; make_fullwidth=&#8221;on&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;3_4&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;4.25.1&#8243; custom_margin=&#8221;|40px|40px|||&#8221; custom_padding=&#8221;||2px|||&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>Programmatic User \u2013 a Secure way to Work with the API<\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.5&#8243; custom_margin=&#8221;|40px|33px|||&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h5>Programmatic User and API Access<\/h5>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.5&#8243; text_font=&#8221;|300|||||||&#8221; ul_font=&#8221;||||||||&#8221; custom_margin=&#8221;|40px|40px|||&#8221; hover_enabled=&#8221;0&#8243; ul_text_shadow_style=&#8221;preset3&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<p class=\"p1\">External system integrations with Teamogy are implemented using the Teamogy API.<br \/><strong>Access to the API is secured via an API token (API key).<\/strong><\/p>\n<p class=\"p1\">Each API token is always associated with a specific user in Teamogy and <strong>inherits all permissions assigned to that user.<\/strong><br \/>From the system perspective, all API operations are processed in the same way as actions performed manually by the associated user in the Teamogy application.<\/p>\n<p class=\"p1\"><strong>For this reason, the choice of the user under which the API token is generated is critical.<\/strong><\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.5&#8243; custom_margin=&#8221;|40px|32px|||&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<div class=\"flex flex-grow flex-col max-w-full\">\n<div data-message-author-role=\"assistant\" data-message-id=\"03a1d6fc-f64d-48bc-885b-989063a67c4a\" dir=\"auto\" class=\"min-h-[20px] text-message flex flex-col items-start whitespace-pre-wrap break-words [.text-message+&amp;]:mt-5 juice:w-full juice:items-end overflow-x-auto gap-2\">\n<div class=\"flex w-full flex-col gap-1 juice:empty:hidden juice:first:pt-[3px]\">\n<div class=\"markdown prose w-full break-words dark:prose-invert light\">\n<h5>Why not use a Personal User Account<\/h5>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"mt-1 flex gap-3 empty:hidden juice:-ml-3\">\n<div class=\"items-center justify-start rounded-xl p-1 flex\">\n<div class=\"flex items-center vc-button-group vc-button-group-34\">\n<div class=\"flex items-center pb-0.5 juice:pb-0\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.5&#8243; text_font=&#8221;|300|||||||&#8221; ul_font=&#8221;||||||||&#8221; min_height=&#8221;71px&#8221; custom_margin=&#8221;|40px|9px|||&#8221; hover_enabled=&#8221;0&#8243; ul_text_shadow_style=&#8221;preset3&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<p class=\"p1\">API tokens inherit the full permission set of the user they are linked to.<br \/>Therefore, <strong>personal user accounts<\/strong> (e.g. company owners, accountants, administrators) <strong>are not suitable <\/strong>for <strong>API integrations.<\/strong><\/p>\n<p class=\"p1\"><strong>Using a personal user account for API access introduces the following risks:<\/strong><\/p>\n<ol class=\"ul1\">\n<li class=\"li1\">The API token <strong>inherits permissions<\/strong> that are often broader than required for the integration.<\/li>\n<li class=\"li1\">The token holder (for example, an external developer or integration provider) <strong>may gain access to all data<\/strong> available to the personal user account.<\/li>\n<li class=\"li1\">System activity <strong>is no longer clearly distinguishable between actions performed<\/strong> by a human user and actions executed by an automated integration.<\/li>\n<li class=\"li1\"><strong>Token management<\/strong> becomes complex in cases such as role changes, user deactivation, or security incidents.<\/li>\n<\/ol>\n<p class=\"p1\">For security and operational reasons, <strong>the use of personal user accounts for API integrations is strongly discouraged.<\/strong><br \/><strong>Personal user accounts are not intended for API communication.<\/strong><\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.5&#8243; custom_margin=&#8221;30px|40px|33px|||&#8221; custom_padding=&#8221;0px|||||&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<div class=\"flex flex-grow flex-col max-w-full\">\n<div data-message-author-role=\"assistant\" data-message-id=\"03a1d6fc-f64d-48bc-885b-989063a67c4a\" dir=\"auto\" class=\"min-h-[20px] text-message flex flex-col items-start whitespace-pre-wrap break-words [.text-message+&amp;]:mt-5 juice:w-full juice:items-end overflow-x-auto gap-2\">\n<div class=\"flex w-full flex-col gap-1 juice:empty:hidden juice:first:pt-[3px]\">\n<div class=\"markdown prose w-full break-words dark:prose-invert light\">\n<h5>Recommended Approach: Programmatic user<\/h5>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.5&#8243; text_font=&#8221;|300|||||||&#8221; ul_font=&#8221;||||||||&#8221; custom_margin=&#8221;|40px|40px|||&#8221; hover_enabled=&#8221;0&#8243; ul_text_shadow_style=&#8221;preset3&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<p class=\"p1\">Teamogy therefore supports the use of a <strong>Programmatic User.<\/strong><\/p>\n<p class=\"p1\"><strong>A programmatic user is a dedicated technical account intended exclusively for API access and system integrations.<\/strong><\/p>\n<p class=\"p2\"><strong>Characteristics of a Programmatic User<\/strong><\/p>\n<ol class=\"ul1\">\n<li class=\"li1\"><strong>Fully separated<\/strong> from personal user accounts.<\/li>\n<li class=\"li1\"><strong>Hidden<\/strong> from standard Teamogy usage (not available in user selections, lists, or overviews).<\/li>\n<li class=\"li1\">Assigned <strong>explicitly defined permissions<\/strong> limited to the scope required by the integration.<\/li>\n<li class=\"li1\"><strong>API tokens<\/strong> generated under a programmatic user <strong>are<\/strong> <strong>easy to manage, control, and audit.<\/strong><\/li>\n<\/ol>\n<p class=\"p1\"><strong>This approach follows the principle of least privilege:<\/strong><\/p>\n<p class=\"p1\">An integration should be granted only the permissions necessary for its intended functionality.<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.5&#8243; text_font=&#8221;|300|||||||&#8221; ul_font=&#8221;||||||||&#8221; custom_margin=&#8221;|40px|40px|||&#8221; hover_enabled=&#8221;0&#8243; ul_text_shadow_style=&#8221;preset3&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243; custom_padding=&#8221;||0px|||&#8221;]<\/p>\n<p><strong>Click to read more<\/strong> &#8211; <span style=\"text-decoration: underline\"><a href=\"https:\/\/www.teamogy.com\/en\/manual\/programmatic-user-setup-and-configuration\/\" target=\"_blank\" rel=\"noopener\" title=\"How to create Programmatic user\">How to create a Programmatic user<\/a><\/span><\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;3.26.5&#8243; text_font=&#8221;|300|||||||&#8221; custom_margin=&#8221;-14px|40px||||&#8221; custom_padding=&#8221;12px|0px||||&#8221; text_font_last_edited=&#8221;off|desktop&#8221; global_module=&#8221;14686&#8243; saved_tabs=&#8221;all&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span style=\"color: #f26522\"><b>Get in Touch<\/b><\/span><\/p>\n<p><span style=\"color: #000000\">If you have problem or need further assistance, do not hesitate contact Teamogy Support. Use online chat (inside Teamogy or everywhere on\u00a0<span style=\"text-decoration: underline;color: #0c71c3\"><a href=\"https:\/\/www.teamogy.com\" style=\"color: #0c71c3;text-decoration: underline\">www.Teamogy.com<\/a><\/span> in the lower right corner) and you will get prompt reply.<\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_sidebar area=&#8221;et_pb_widget_area_1&#8243; _builder_version=&#8221;4.16&#8243; header_font=&#8221;||||||||&#8221; header_font_size=&#8221;30px&#8221; body_font=&#8221;||||||||&#8221; body_font_size=&#8221;14px&#8221; body_line_height=&#8221;1.6em&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_sidebar][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Programmatic User \u2013 a Secure way to Work with the APIProgrammatic User and API AccessExternal system integrations with Teamogy are implemented using the Teamogy API.Access to the API is secured via an API token (API key). Each API token is always associated with a specific user in Teamogy and inherits all permissions assigned to that [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[291],"tags":[],"class_list":["post-987522415","post","type-post","status-publish","format-standard","hentry","category-manual"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.teamogy.com\/ro\/wp-json\/wp\/v2\/posts\/987522415","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.teamogy.com\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.teamogy.com\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.teamogy.com\/ro\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.teamogy.com\/ro\/wp-json\/wp\/v2\/comments?post=987522415"}],"version-history":[{"count":5,"href":"https:\/\/www.teamogy.com\/ro\/wp-json\/wp\/v2\/posts\/987522415\/revisions"}],"predecessor-version":[{"id":987522431,"href":"https:\/\/www.teamogy.com\/ro\/wp-json\/wp\/v2\/posts\/987522415\/revisions\/987522431"}],"wp:attachment":[{"href":"https:\/\/www.teamogy.com\/ro\/wp-json\/wp\/v2\/media?parent=987522415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.teamogy.com\/ro\/wp-json\/wp\/v2\/categories?post=987522415"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.teamogy.com\/ro\/wp-json\/wp\/v2\/tags?post=987522415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}