{"id":24,"date":"2022-12-05T19:00:01","date_gmt":"2022-12-05T19:00:01","guid":{"rendered":"http:\/\/aiomaticapi.com\/?page_id=24"},"modified":"2026-03-09T08:36:58","modified_gmt":"2026-03-09T08:36:58","slug":"documentation","status":"publish","type":"page","link":"https:\/\/aiomaticapi.com\/documentation\/","title":{"rendered":"Documentation"},"content":{"rendered":"<header class=\"postHeader\">\n<h2 id=\"__docusaurus\"  class=\"h2center postHeaderTitle\">Quick Start<\/h2>\n<\/header>\n<div>\nWelcome to the quick-start! Below are the top integrations we support, with quick directions on getting up and running with popular methods.\n<\/div>\n<h2 id=\"__docusaurus\" class=\"h2center postHeaderTitle\">Basic Usage Example<\/h2>\n<div class=\"application application-maximized\" data-application=\"\">\n<div class=\"application-topbar\">\n<div class=\"application-actions-container\">\n<div class=\"application-action application-action-close\"><\/div>\n<div class=\"application-action application-action-minimize\"><\/div>\n<div class=\"application-action application-action-maximize\"><\/div>\n<\/p><\/div>\n<div class=\"application-title-container\" data-title-container=\"\">bash<\/div>\n<\/p><\/div>\n<div class=\"application-content-container\" data-content-container=\"\" style=\"min-height: 324px;\">\n<div class=\"terminal-line\">\n<div>\n<div class=\"terminal-command-line-prompt-string\" data-terminal-command-line-prompt-string=\"\">\n  $<\/div>\n<div class=\"terminal-command-line-text\" data-terminal-command-line-text=\"\">\n  <span id=\"demo\"><\/span><\/div>\n<\/div>\n<\/div>\n<div id=\"myDIV\" style=\"visibility:hidden;\">\n<div class=\"terminal-line\">\n<div class=\"terminal-response-line-text terminal-response-line-plain-text\" data-terminal-response-line-text=\"\">    {&quot;remainingtokens&quot;:&quot;32000&quot;,&quot;finish_reason&quot;:&quot;stop&quot;,&quot;result&quot;:&quot;Dear [name],\\n\\nI hope this letter finds you doing well&#8230;&quot;}<\/div>\n<\/div>\n<div class=\"terminal-line\">\n<div class=\"terminal-response-line-text terminal-response-line-plain-text\" data-terminal-response-line-text=\"\">          <\/div>\n<\/div>\n<div class=\"terminal-line\">\n<div>\n<div class=\"terminal-command-line-prompt-string\" data-terminal-command-line-prompt-string=\"\">\n  $<\/div>\n<div class=\"terminal-command-line-text\" data-terminal-command-line-text=\"\">\n  <span class=\"cursor cursor-active\"><a href=\"#fulldoc\" style=\"color: #fff; text-decoration: underline;\">Continue to scroll to see full documentation&#8230;<\/a><\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"fulldoc\">\n&nbsp;<br \/>\n<br \/>\n&nbsp;<br \/>\n<\/p>\n<h2 id=\"__docusaurus\" class=\"h2center postHeaderTitle\">Full Documentation<\/h2>\n<\/div>\n<div>\nAimogenAPI is designed to simplify AI content creation. A few things to consider before we get started:<br \/>\n<\/p>\n<ul>\n<li>Each request might take longer periods of time to be completed, statement especially valid for the image creation API. Remember to set your request timeout to 120 seconds or greater to ensure that you receive the content of all AI generated content we send.<\/li>\n<li>\nIf you exceed your monthly API credit count, the API will respond with an error, prompting you that you are rate limited.<\/li>\n<li>\nThe server is set to the UTC timezone, call counts will be reset monthly based on this time zone.<\/li>\n<li>\nEach request will return a JSON string containing the AI generated content, in the &#8216;result&#8217; field. Also, the responses will contain the remaining API credit count, in the &#8216;remainingtokens&#8217; field.<\/li>\n<\/ul>\n<\/div>\n<hr\/>\n<h2 id=\"__docusaurus\" class=\"h2center postHeaderTitle\">API Authentication<\/h2>\n<div>\n<h4 id=\"__docusaurusxx\" class=\"postHeaderTitle\">API Key \u2013 <em>required<\/em><\/h4>\n<p>To authenticate your request, you must provide your <strong>API key<\/strong>. You can do this using one of the following methods:<\/p>\n<ol>\n<li>\n    <strong>Authorization Header (Recommended):<\/strong><br \/>\n    Use the <code>Authorization<\/code> header with the Bearer token format:<br \/>\n    <code>Authorization: Bearer YOUR_API_KEY<\/code><br \/>\n    <em>This method keeps your key hidden from logs and browser history.<\/em>\n  <\/li>\n<li>\n    <strong>GET or POST parameter (Legacy\/Not Recommended):<\/strong><br \/>\n    You may still pass the API key in the URL or form data using:<br \/>\n    <code>?apikey=YOUR_API_KEY<\/code>\n  <\/li>\n<\/ol>\n<p><strong>\u26a0\ufe0f Tip:<\/strong> It is strongly recommended to use <em>header-based authentication<\/em> to enhance security.<\/p>\n<\/div>\n<hr\/>\n<h2 id=\"__docusaurus\" class=\"h2center postHeaderTitle\">Generating AI Text and Images<\/h2>\n<div>Learn below how to use the endpoints of AimogenAPI, to generate text and images based on your needs. If you are interested in usage costs for endpoints and models, please check the <a href=\"https:\/\/aiomaticapi.com\/pricing\/\" target=\"_blank\" rel=\"noopener\">pricing page<\/a>.<\/p>\n<p><center><b>Check the available API nodes below:<\/b><\/center>\n<\/div>\n<hr\/>\n<h4 id=\"__docusaurus\" class=\"postHeaderTitle\">1. Completions API<\/h4>\n<div>This API node will generate text based on your requirements. You do not need to install on your server anything, the API will handle everything for you. Just call it and you will get the AI generated text in the API response. Note that both GET and POST requests are supported, if you have a large prompt that you need to send to the AI writer, use POST requests!<\/p>\n<p><b>API Endpoint:<\/b><br \/>\n<code>https:\/\/aiomaticapi.com\/apis\/ai\/v1\/text<\/code><\/p>\n<p><b>Sample Call:<\/b><br \/>\n<\/p>\n<div class=\"code-toolbar\">\n<pre id=\"bash-code-9\" class=\"code-9 language-bash\" style=\"border-radius: 5px;\"><code class=\" language-bash\"><span class=\"token comment\"># Add your API key, replace the prompt and add optional parameters<\/span>\r\n<span class=\"token function\">curl<\/span> <span class=\"token string\">\"https:\/\/aiomaticapi.com\/apis\/ai\/v1\/text?apikey=APIKEY&prompt=write%20me%20a%20short%20letter\"<\/span><\/code><\/pre>\n<div class=\"toolbar\"><\/div>\n<\/div>\n<p>\n<b>Result:<\/b><br \/>\n<\/p>\n<div class=\"code-toolbar\">\n<pre style=\"border-radius: 5px;\" class=\" language-json\"><code class=\" language-json\"><span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token property\">\"remainingtokens\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"12000\"<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"finish_reason\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"stop\"<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"result\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"Dear [name],\\n\\nI hope this letter finds you doing well. I wanted to reach out and let you know how much I appreciate all the help you've given me lately.(rest of the AI generated content)...\"<\/span><span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<div class=\"toolbar\"><\/div>\n<\/div>\n<p><b>API parameters:<\/b><\/p>\n<ul>\n<li><b><i>apikey<\/i><\/b> &#8211; <strong>*required if Authorization header not set<\/strong> &#8211; add your API key for the call &#8211; be sure to have a valid subscription for the call to work<\/li>\n<li><b><i>prompt<\/i><\/b> &#8211; <strong>*required<\/strong> &#8211; add the prompt based on which the AI should generate text &#8211; for best results, be sure to urlencode the prompt so it is received correctly by the API.<\/li>\n<li><b><i>model<\/i><\/b> &#8211; Select the model you wish to use when creating textual content. Available models are: gpt-3.5-turbo-instruct.<\/li>\n<li><b><i>temperature<\/i><\/b> &#8211; Advanced parameter (optional). What sampling temperature to use. Higher values means the model will take more risks. Try 0.9 for more creative applications, and 0 (argmax sampling) for ones with a well-defined answer. We generally recommend altering this or top_p but not both.<\/li>\n<li><b><i>top_p<\/i><\/b> &#8211; Advanced parameter (optional). An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both.<\/li>\n<li><b><i>presence_penalty<\/i><\/b> &#8211; Advanced parameter (optional). Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model&#8217;s likelihood to talk about new topics.<\/li>\n<li><b><i>frequency_penalty<\/i><\/b> &#8211; Advanced parameter (optional). Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model&#8217;s likelihood to repeat the same line verbatim.<\/li>\n<\/ul>\n<p><b>API result:<\/b><\/p>\n<div>\n<i>&#8211; In case of success: a JSON with the following content:<\/i><\/p>\n<ul>\n<li><b><i>remainingtokens<\/i><\/b> &#8211; The number of API tokens remaining for your API key.<\/li>\n<li><b><i>finish_reason<\/i><\/b> &#8211; Why did the AI stop generating content. The possible values for finish_reason are:\n<ul>\n<li>\nstop: API returned complete message, or a message terminated by one of the stop sequences provided via the stop parameter\n<\/li>\n<li>\nlength: Incomplete model output due to max_tokens parameter or token limit\n<\/li>\n<li>\ncontent_filter: Omitted content due to a flag from our content filters<\/li>\n<\/ul>\n<\/li>\n<li><b><i>result<\/i><\/b> &#8211; The AI generated text.<\/li>\n<\/ul>\n<p>\n<i>&#8211; In case of error: a JSON with the following content:<\/i><\/p>\n<ul>\n<li><b><i>remainingtokens<\/i><\/b> &#8211; The number of API calls remaining for your API key. In case of error, this might display 0. In case of errors, the used token count will not be increased.<\/li>\n<li><b><i>error<\/i><\/b> &#8211; The error message containing the reason of the failure.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<hr\/>\n<h4 id=\"__docusaurus\" class=\"postHeaderTitle\">2. Responses API<\/h4>\n<div>This API node will generate a response from the famous ChatGPT model (gpt-3.5-turbo, gpt-3.5-turbo-16k, gpt-3.5-turbo-0125, gpt-3.5-turbo-1106, gpt-4, gpt-4-1106-preview, gpt-4-0125-preview, gpt-4-turbo-preview, gpt-4-turbo, gpt-4-turbo-2024-04-09, gpt-4o, gpt-4o-2024-05-13, gpt-4o-2024-11-20, gpt-4o-2024-08-06, chatgpt-4o-latest, gpt-4o-mini, gpt-4o-mini-2024-07-18, gpt-4o-mini-search-preview, gpt-4o-search-preview, gpt-4-0613, o1, o1-2024-12-17, o1-pro, o3-pro, o3-pro-2025-06-10, o3-mini, o3-mini-2025-01-31, gpt-4.1-nano-2025-04-14, gpt-4.1-nano, gpt-4.1-mini-2025-04-14, gpt-4.1-mini, gpt-4.1-2025-04-14, gpt-4.1, o4-mini-2025-04-16, o4-mini, o3-2025-04-16, o3, gpt-5.4, gpt-5.2, gpt-5.2-2025-12-11, gpt-5.3-chat-latest, gpt-5.2-chat-latest, gpt-5.1, gpt-5.1-2025-11-13, gpt-5.1-chat-latest, gpt-5-chat-latest, gpt-5, gpt-5-2025-08-07, gpt-5-mini, gpt-5-mini-2025-08-07, gpt-5-nano, gpt-5-nano-2025-08-07 are the models supported at the moment). Just call it and you will get the AI generated text in the API response. Note that both GET and POST requests are supported, if you have a large prompt that you need to send to the AI writer, use POST requests!<\/p>\n<p><b>API Endpoint:<\/b><br \/>\n<code>https:\/\/aiomaticapi.com\/apis\/ai\/v1\/responses<\/code><\/p>\n<p><b>Sample Call:<\/b><br \/>\n<\/p>\n<div class=\"code-toolbar\">\n<pre id=\"bash-code-9\" class=\"code-9 language-bash\" style=\"border-radius: 5px;\"><code class=\" language-bash\"><span class=\"token comment\"># Add your API key, replace the prompt and add optional parameters<\/span>\r\n<span class=\"token function\">curl<\/span> <span class=\"token string\">\"https:\/\/aiomaticapi.com\/apis\/ai\/v1\/responses?apikey=APIKEY&messages=write%20me%20a%20short%20letter\"<\/span><\/code><\/pre>\n<div class=\"toolbar\"><\/div>\n<\/div>\n<p>\n<b>Result:<\/b><br \/>\n<\/p>\n<div class=\"code-toolbar\">\n<pre style=\"border-radius: 5px;\" class=\" language-json\"><code class=\" language-json\"><span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token property\">\"remainingtokens\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"12000\"<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"finish_reason\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"stop\"<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"result\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"{\"role\":\"assistant\",\"content\":\"\\n\\nDear [Name],(rest of the AI generated content)...\"}\"<\/span><span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<div class=\"toolbar\"><\/div>\n<\/div>\n<p><b>API parameters:<\/b><\/p>\n<ul>\n<li><b><i>apikey<\/i><\/b> &#8211; <strong>*required if Authorization header not set<\/strong> &#8211; add your API key for the call &#8211; be sure to have a valid subscription for the call to work<\/li>\n<li><b><i>messages<\/i><\/b> &#8211; <strong>*required<\/strong> &#8211; if you make a GET request, simply add the prompt based on which the AI should generate text. If you make a POST request, be sure to add the following array in the POST request, in the &#8220;messages&#8221; parameter: array(&#8220;role&#8221; => &#8220;user&#8221;, &#8220;content&#8221; => &#8220;YOUR_INPUT&#8221;). You can add an array of multiple messages, the possible roles are: &#8220;user&#8221;, &#8220;assistant&#8221; or &#8220;system&#8221;. You should add pretraining prompts in the first message, with the role &#8220;system&#8221;, afterwards add multiple &#8220;user&#8221; and &#8220;assistant&#8221; messages in the sent array. If you want to use vision, you need to use a different format in the &#8220;messages&#8221; parameter (in this case, only POST requests are supported): array(&#8220;role&#8221; => &#8220;user&#8221;, &#8220;content&#8221; => array(array(&#8220;type&#8221; => &#8220;text&#8221;, &#8220;text&#8221; => &#8220;YOUR_INPUT&#8221;), array(&#8220;type&#8221; => &#8220;image_url&#8221;, &#8220;image_url&#8221; => &#8220;IMAGE_URL_FOR_VISION&#8221;)))<\/li>\n<li><b><i>model<\/i><\/b> &#8211; Select the model you wish to use when creating textual content. Available models are: gpt-3.5-turbo, gpt-3.5-turbo-16k, gpt-3.5-turbo-0125, gpt-3.5-turbo-1106, gpt-4, gpt-4-1106-preview, gpt-4-0125-preview, gpt-4-turbo-preview, gpt-4-turbo, gpt-4-turbo-2024-04-09, gpt-4o, gpt-4o-2024-05-13, gpt-4o-2024-11-20, gpt-4o-2024-08-06, chatgpt-4o-latest, gpt-4o-mini, gpt-4o-mini-2024-07-18, gpt-4o-mini-search-preview, gpt-4o-search-preview, gpt-4-0613, o1, o1-2024-12-17, o3-mini, o3-mini-2025-01-31, gpt-4.1-nano-2025-04-14, gpt-4.1-nano, gpt-4.1-mini-2025-04-14, gpt-4.1-mini, gpt-4.1-2025-04-14, gpt-4.1, o4-mini-2025-04-16, o4-mini, o3-2025-04-16, o3, gpt-5.4, gpt-5.2, gpt-5.2-2025-12-11, gpt-5.3-chat-latest, gpt-5.2-chat-latest, gpt-5.1, gpt-5.1-2025-11-13, gpt-5.1-chat-latest, gpt-5-chat-latest, gpt-5, gpt-5-2025-08-07, gpt-5-mini, gpt-5-mini-2025-08-07, gpt-5-nano, gpt-5-nano-2025-08-07.<\/li>\n<li><b><i>temperature<\/i><\/b> &#8211; Advanced parameter (optional). What sampling temperature to use. Higher values means the model will take more risks. Try 0.9 for more creative applications, and 0 (argmax sampling) for ones with a well-defined answer. We generally recommend altering this or top_p but not both.<\/li>\n<li><b><i>top_p<\/i><\/b> &#8211; Advanced parameter (optional). An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both.<\/li>\n<li><b><i>presence_penalty<\/i><\/b> &#8211; Advanced parameter (optional). Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model&#8217;s likelihood to talk about new topics.<\/li>\n<li><b><i>frequency_penalty<\/i><\/b> &#8211; Advanced parameter (optional). Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model&#8217;s likelihood to repeat the same line verbatim.<\/li>\n<li><b><i>stream<\/i><\/b> &#8211; Advanced parameter (optional). Boolean (true\/false) &#8211; defines if response streaming mode is enabled. If set, partial message deltas will be sent, like in ChatGPT. Tokens will be sent as <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Server-sent_events\/Using_server-sent_events#Event_stream_format\" target=\"_blank\">data-only server-sent events<\/a> as they become available, with the stream terminated by a data: [DONE] message.<\/li>\n<li><b><i>tools<\/i><\/b> &#8211; An array of function objects, to define the available functions which can be called by the AI. Check required format in the example below.<\/li>\n<li><b><i>tool_choice<\/i><\/b> &#8211; &#8220;auto&#8221; is default. If you want to force the model to call a specific function you can do so by setting tool_choice: {&#8220;name&#8221;: &#8220;<insert-function-name>&#8220;}. You can also force the model to generate a user-facing message by setting tool_choice: &#8220;none&#8221;. Note that the default behavior (tool_choice: &#8220;auto&#8221;) is for the model to decide on its own whether to call a function and if so which function to call.<\/li>\n<\/ul>\n<p><b>API result:<\/b><\/p>\n<div>\n<i>&#8211; In case of success: a JSON with the following content:<\/i><\/p>\n<ul>\n<li><b><i>remainingtokens<\/i><\/b> &#8211; The number of API tokens remaining for your API key.<\/li>\n<li><b><i>finish_reason<\/i><\/b> &#8211; Why did the AI stop generating content. The possible values for finish_reason are:\n<ul>\n<li>\nstop: API returned complete message, or a message terminated by one of the stop sequences provided via the stop parameter\n<\/li>\n<li>\nlength: Incomplete model output due to max_tokens parameter or token limit\n<\/li>\n<li>\ntool_calls: The model decided to call one or multiple functions\n<\/li>\n<li>\ncontent_filter: Omitted content due to a flag from our content filters<\/li>\n<\/ul>\n<\/li>\n<li><b><i>result<\/i><\/b> &#8211; The AI generated text, in the following JSON encoded format: {&#8220;role&#8221;:&#8221;assistant&#8221;,&#8221;content&#8221;:&#8221;THE_AI_RESPONSE&#8221;}.<\/li>\n<\/ul>\n<p>\n<i>&#8211; In case of error: a JSON with the following content:<\/i><\/p>\n<ul>\n<li><b><i>remainingtokens<\/i><\/b> &#8211; The number of API calls remaining for your API key. In case of error, this might display 0. In case of errors, the used token count will not be increased.<\/li>\n<li><b><i>error<\/i><\/b> &#8211; The error message containing the reason of the failure.<\/li>\n<\/ul>\n<\/div>\n<h4 id=\"__docusaurus\" class=\"postHeaderTitle\">3. Chat Completions API<\/h4>\n<div>This API node will generate a response from the famous ChatGPT model (gpt-3.5-turbo, gpt-3.5-turbo-16k, gpt-3.5-turbo-0125, gpt-3.5-turbo-1106, gpt-4, gpt-4-1106-preview, gpt-4-0125-preview, gpt-4-turbo-preview, gpt-4-turbo, gpt-4-turbo-2024-04-09, gpt-4o, gpt-4o-2024-05-13, gpt-4o-2024-11-20, gpt-4o-2024-08-06, chatgpt-4o-latest, gpt-4o-mini, gpt-4o-mini-2024-07-18, gpt-4o-mini-search-preview, gpt-4o-search-preview, gpt-4-0613, o1, o1-2024-12-17, o1-pro, o3-pro, o3-pro-2025-06-10, o3-mini, o3-mini-2025-01-31, gpt-4.1-nano-2025-04-14, gpt-4.1-nano, gpt-4.1-mini-2025-04-14, gpt-4.1-mini, gpt-4.1-2025-04-14, gpt-4.1, o4-mini-2025-04-16, o4-mini, o3-2025-04-16, o3, gpt-5.4, gpt-5.2, gpt-5.2-2025-12-11, gpt-5.3-chat-latest, gpt-5.2-chat-latest, gpt-5.1, gpt-5.1-2025-11-13, gpt-5.1-chat-latest, gpt-5-chat-latest, gpt-5, gpt-5-2025-08-07, gpt-5-mini, gpt-5-mini-2025-08-07, gpt-5-nano, gpt-5-nano-2025-08-07 are the models supported at the moment). Just call it and you will get the AI generated text in the API response. Note that both GET and POST requests are supported, if you have a large prompt that you need to send to the AI writer, use POST requests!<\/p>\n<p><b>API Endpoint:<\/b><br \/>\n<code>https:\/\/aiomaticapi.com\/apis\/ai\/v1\/chat<\/code><\/p>\n<p><b>Sample Call:<\/b><br \/>\n<\/p>\n<div class=\"code-toolbar\">\n<pre id=\"bash-code-9\" class=\"code-9 language-bash\" style=\"border-radius: 5px;\"><code class=\" language-bash\"><span class=\"token comment\"># Add your API key, replace the prompt and add optional parameters<\/span>\r\n<span class=\"token function\">curl<\/span> <span class=\"token string\">\"https:\/\/aiomaticapi.com\/apis\/ai\/v1\/chat?apikey=APIKEY&messages=write%20me%20a%20short%20letter\"<\/span><\/code><\/pre>\n<div class=\"toolbar\"><\/div>\n<\/div>\n<p>\n<b>Result:<\/b><br \/>\n<\/p>\n<div class=\"code-toolbar\">\n<pre style=\"border-radius: 5px;\" class=\" language-json\"><code class=\" language-json\"><span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token property\">\"remainingtokens\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"12000\"<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"finish_reason\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"stop\"<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"result\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"{\"role\":\"assistant\",\"content\":\"\\n\\nDear [Name],(rest of the AI generated content)...\"}\"<\/span><span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<div class=\"toolbar\"><\/div>\n<\/div>\n<p><b>API parameters:<\/b><\/p>\n<ul>\n<li><b><i>apikey<\/i><\/b> &#8211; <strong>*required if Authorization header not set<\/strong> &#8211; add your API key for the call &#8211; be sure to have a valid subscription for the call to work<\/li>\n<li><b><i>messages<\/i><\/b> &#8211; <strong>*required<\/strong> &#8211; if you make a GET request, simply add the prompt based on which the AI should generate text. If you make a POST request, be sure to add the following array in the POST request, in the &#8220;messages&#8221; parameter: array(&#8220;role&#8221; => &#8220;user&#8221;, &#8220;content&#8221; => &#8220;YOUR_INPUT&#8221;). You can add an array of multiple messages, the possible roles are: &#8220;user&#8221;, &#8220;assistant&#8221; or &#8220;system&#8221;. You should add pretraining prompts in the first message, with the role &#8220;system&#8221;, afterwards add multiple &#8220;user&#8221; and &#8220;assistant&#8221; messages in the sent array. If you want to use vision, you need to use a different format in the &#8220;messages&#8221; parameter (in this case, only POST requests are supported): array(&#8220;role&#8221; => &#8220;user&#8221;, &#8220;content&#8221; => array(array(&#8220;type&#8221; => &#8220;text&#8221;, &#8220;text&#8221; => &#8220;YOUR_INPUT&#8221;), array(&#8220;type&#8221; => &#8220;image_url&#8221;, &#8220;image_url&#8221; => &#8220;IMAGE_URL_FOR_VISION&#8221;)))<\/li>\n<li><b><i>model<\/i><\/b> &#8211; Select the model you wish to use when creating textual content. Available models are: gpt-3.5-turbo, gpt-3.5-turbo-16k, gpt-3.5-turbo-0125, gpt-3.5-turbo-1106, gpt-4, gpt-4-1106-preview, gpt-4-0125-preview, gpt-4-turbo-preview, gpt-4-turbo, gpt-4-turbo-2024-04-09, gpt-4o, gpt-4o-2024-05-13, gpt-4o-2024-11-20, gpt-4o-2024-08-06, chatgpt-4o-latest, gpt-4o-mini, gpt-4o-mini-2024-07-18, gpt-4o-mini-search-preview, gpt-4o-search-preview, gpt-4-0613, o1, o1-2024-12-17, o3-mini, o3-mini-2025-01-31, gpt-4.1-nano-2025-04-14, gpt-4.1-nano, gpt-4.1-mini-2025-04-14, gpt-4.1-mini, gpt-4.1-2025-04-14, gpt-4.1, o4-mini-2025-04-16, o4-mini, o3-2025-04-16, o3, gpt-5.4, gpt-5.2, gpt-5.2-2025-12-11, gpt-5.3-chat-latest, gpt-5.2-chat-latest, gpt-5.1, gpt-5.1-2025-11-13, gpt-5.1-chat-latest, gpt-5-chat-latest, gpt-5, gpt-5-2025-08-07, gpt-5-mini, gpt-5-mini-2025-08-07, gpt-5-nano, gpt-5-nano-2025-08-07.<\/li>\n<li><b><i>temperature<\/i><\/b> &#8211; Advanced parameter (optional). What sampling temperature to use. Higher values means the model will take more risks. Try 0.9 for more creative applications, and 0 (argmax sampling) for ones with a well-defined answer. We generally recommend altering this or top_p but not both.<\/li>\n<li><b><i>top_p<\/i><\/b> &#8211; Advanced parameter (optional). An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both.<\/li>\n<li><b><i>presence_penalty<\/i><\/b> &#8211; Advanced parameter (optional). Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model&#8217;s likelihood to talk about new topics.<\/li>\n<li><b><i>frequency_penalty<\/i><\/b> &#8211; Advanced parameter (optional). Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model&#8217;s likelihood to repeat the same line verbatim.<\/li>\n<li><b><i>stream<\/i><\/b> &#8211; Advanced parameter (optional). Boolean (true\/false) &#8211; defines if response streaming mode is enabled. If set, partial message deltas will be sent, like in ChatGPT. Tokens will be sent as <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Server-sent_events\/Using_server-sent_events#Event_stream_format\" target=\"_blank\">data-only server-sent events<\/a> as they become available, with the stream terminated by a data: [DONE] message.<\/li>\n<li><b><i>tools<\/i><\/b> &#8211; An array of function objects, to define the available functions which can be called by the AI. Check required format in the example below.<\/li>\n<li><b><i>tool_choice<\/i><\/b> &#8211; &#8220;auto&#8221; is default. If you want to force the model to call a specific function you can do so by setting tool_choice: {&#8220;name&#8221;: &#8220;<insert-function-name>&#8220;}. You can also force the model to generate a user-facing message by setting tool_choice: &#8220;none&#8221;. Note that the default behavior (tool_choice: &#8220;auto&#8221;) is for the model to decide on its own whether to call a function and if so which function to call.<\/li>\n<\/ul>\n<p><b>API result:<\/b><\/p>\n<div>\n<i>&#8211; In case of success: a JSON with the following content:<\/i><\/p>\n<ul>\n<li><b><i>remainingtokens<\/i><\/b> &#8211; The number of API tokens remaining for your API key.<\/li>\n<li><b><i>finish_reason<\/i><\/b> &#8211; Why did the AI stop generating content. The possible values for finish_reason are:\n<ul>\n<li>\nstop: API returned complete message, or a message terminated by one of the stop sequences provided via the stop parameter\n<\/li>\n<li>\nlength: Incomplete model output due to max_tokens parameter or token limit\n<\/li>\n<li>\ntool_calls: The model decided to call one or multiple functions\n<\/li>\n<li>\ncontent_filter: Omitted content due to a flag from our content filters<\/li>\n<\/ul>\n<\/li>\n<li><b><i>result<\/i><\/b> &#8211; The AI generated text, in the following JSON encoded format: {&#8220;role&#8221;:&#8221;assistant&#8221;,&#8221;content&#8221;:&#8221;THE_AI_RESPONSE&#8221;}.<\/li>\n<\/ul>\n<p>\n<i>&#8211; In case of error: a JSON with the following content:<\/i><\/p>\n<ul>\n<li><b><i>remainingtokens<\/i><\/b> &#8211; The number of API calls remaining for your API key. In case of error, this might display 0. In case of errors, the used token count will not be increased.<\/li>\n<li><b><i>error<\/i><\/b> &#8211; The error message containing the reason of the failure.<\/li>\n<\/ul>\n<\/div>\n<p><b>Extra feature: Function Execution<\/b><\/p>\n<div>\nUtilize the Function Calling capability of AimogenAPI to empower developers in expanding the AI writer&#8217;s potential. By enabling custom function execution from your code base, this feature seamlessly integrates AI-generated content with various practical actions like email sending, file creation, database writing, and more. The following comprehensive documentation offers a detailed, step-by-step guide on leveraging AimogenAPI&#8217;s Function Calling feature to its fullest potential.<br \/>\n<b>Prerequisites:<\/b><br \/>\nBefore you proceed, ensure that you have the following prerequisites in place:<\/p>\n<ol>\n<li><strong>Latest Version of Turbo or GPT-4:<\/strong>\n<ul>\n<li>To use the Function Calling feature, you need the latest version of AI models (at least gpt-3.5-turbo-1106 or higher). Please verify that your AI model is up-to-date, especially if you are using Azure with deployments of models that might not be the latest ones.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><b>Setting Up Function Calling:<\/b><br \/>\nUse the below code structure to enable function calling in AimogenAPI:<\/p>\n<pre><code>$messages = array(array(\"role\" => \"user\", \"content\" => \"What's the weather like in Boston?\"));\r\n$functions = array(\r\n    'type' => 'function', \r\n    'function' => \r\n        array(\r\n            \"name\" => \"get_current_weather\",\r\n            \"description\" => \"Get the current weather in a given location\",\r\n            \"parameters\" => array(\r\n                \"type\" => \"object\",\r\n                \"properties\" => array(\r\n                    \"location\" => array(\r\n                        \"type\" => \"string\",\r\n                        \"description\" => \"The city and state, e.g. San Francisco, CA\",\r\n                    ),\r\n                    \"unit\" => array(\"type\" => \"string\", \"enum\" => array(\"celsius\", \"fahrenheit\")),\r\n                ),\r\n                \"required\" => array(\"location\"),\r\n            ),\r\n        ),\r\n);\r\n\r\n$data = array(\r\n    \"model\" => \"gpt-3.5-turbo-1106\",\r\n    \"messages\" => $messages,\r\n    \"tools\" => $functions,\r\n    \"tool_choice\" => \"auto\", \/\/ auto is default, but we'll be explicit\r\n);\r\n<\/code><\/pre>\n<p><b>Interpreting results and executing functions based on AI responses:<\/b><\/p>\n<pre><code>\/\/check the AI reply, if it contains the tool_calls parameter, execute our function\r\nif (isset($reply->tool_calls) && !empty($reply->tool_calls)) \r\n{\r\n    foreach($reply->tool_calls as $tool_call)\r\n    {\r\n        \/\/check if your function name is called by the AI\r\n        if ($tool_call->name === 'send_email') \r\n        {\r\n            \/\/do the stuff from your function, in this case, send an email\r\n            $subject = $tool_call->arguments->subject;\r\n            $message = $tool_call->arguments->message;\r\n            mail(\"admin@yoursite.com\", $subject, $message);\r\n        }\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>Note that in case a function is called by the AI, a textual response will not be returned by it. So, please handle this case also, you might need to set up a default textual response for chatbots, in case functions are called by the AI.<\/p>\n<\/div>\n<\/div>\n<hr\/>\n<h4 id=\"__docusaurus\" class=\"postHeaderTitle\">4. Getting Embeddings data using the API<\/h4>\n<div>Text embeddings measure the relatedness of text strings. Embeddings are commonly used for: Search (where results are ranked by relevance to a query string), Clustering (where text strings are grouped by similarity), Recommendations (where items with related text strings are recommended), Anomaly detection (where outliers with little relatedness are identified), Diversity measurement (where similarity distributions are analyzed), Classification (where text strings are classified by their most similar label). In the Aiomatic plugin, they are used to give additional context to the AI content writer, based on the input\/prompt of the user. Note that both GET and POST requests are supported, if you have a large instructions or input texts that you need to send to the AI writer, use POST requests!<\/p>\n<p><b>API Endpoint:<\/b><br \/>\n<code>https:\/\/aiomaticapi.com\/apis\/ai\/v1\/embeddings<\/code><\/p>\n<p><b>Sample Call:<\/b><br \/>\n<\/p>\n<div class=\"code-toolbar\">\n<pre id=\"bash-code-9\" class=\"code-9 language-bash\" style=\"border-radius: 5px;\"><code class=\" language-bash\"><span class=\"token comment\"># Add your API key, replace the prompt and add optional parameters<\/span>\r\n<span class=\"token function\">curl<\/span> <span class=\"token string\">\"https:\/\/aiomaticapi.com\/apis\/ai\/v1\/embeddings?apikey=APIKEY&input=I%20have%20a%20white%20dog&model=text-embedding-ada-002\"<\/span><\/code><\/pre>\n<div class=\"toolbar\"><\/div>\n<\/div>\n<p>\n<b>Result:<\/b><br \/>\n<\/p>\n<div class=\"code-toolbar\">\n<pre style=\"border-radius: 5px;\" class=\" language-json\"><code class=\" language-json\"><span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token property\">\"remainingtokens\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"12000\"<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"result\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">[{\"object\":\"embedding\",\"index\":0,\"embedding\":[-0.025966445,0.0040175244,...]}]<\/span><span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<div class=\"toolbar\"><\/div>\n<\/div>\n<p><b>API parameters:<\/b><\/p>\n<ul>\n<li><b><i>apikey<\/i><\/b> &#8211; <strong>*required if Authorization header not set<\/strong> &#8211; add your API key for the call &#8211; be sure to have a valid subscription for the call to work<\/li>\n<li><b><i>input<\/i><\/b> &#8211; <strong>*required<\/strong> &#8211; add the text for which you want to generate the embeddings data.<\/li>\n<li><b><i>model<\/i><\/b> &#8211; Select the model you wish to use when creating the embeddings. Available models are: text-embedding-3-small, text-embedding-3-large, text-embedding-ada-002.<\/li>\n<\/ul>\n<p><b>API result:<\/b><\/p>\n<div>\n<i>&#8211; In case of success: a JSON with the following content:<\/i><\/p>\n<ul>\n<li><b><i>remainingtokens<\/i><\/b> &#8211; The number of API tokens remaining for your API key.<\/li>\n<li><b><i>result<\/i><\/b> &#8211; The embeddings data, in the following format: [{&#8220;object&#8221;:&#8221;embedding&#8221;,&#8221;index&#8221;:0,&#8221;embedding&#8221;:[-0.025966445,0.0040175244,&#8230;]}]<\/li>\n<\/ul>\n<p>\n<i>&#8211; In case of error: a JSON with the following content:<\/i><\/p>\n<ul>\n<li><b><i>remainingtokens<\/i><\/b> &#8211; The number of API calls remaining for your API key. In case of error, this might display 0. In case of errors, the used token count will not be increased.<\/li>\n<li><b><i>error<\/i><\/b> &#8211; The error message containing the reason of the failure.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<hr\/>\n<h4 id=\"__docusaurus\" class=\"postHeaderTitle\">5. Generating images using the AI<\/h4>\n<div>This API node will generate images based on your requirements. Just call it and you will get the AI generated image in the API response. Note that both GET and POST requests are supported, if you have a large prompt that you need to send to the AI writer, use POST requests!<\/p>\n<p><b>API Endpoint:<\/b><br \/>\n<code>https:\/\/aiomaticapi.com\/apis\/ai\/v1\/image<\/code><\/p>\n<p><b>Sample Call:<\/b><br \/>\n<\/p>\n<div class=\"code-toolbar\">\n<pre id=\"bash-code-9\" class=\"code-9 language-bash\" style=\"border-radius: 5px;\"><code class=\" language-bash\"><span class=\"token comment\"># Add your API key, replace the prompt and add optional parameters<\/span>\r\n<span class=\"token function\">curl<\/span> <span class=\"token string\">\"https:\/\/aiomaticapi.com\/apis\/ai\/v1\/image?apikey=APIKEY&prompt=an%20image%20of%20a%20bright%20and%20sunny%20day\"<\/span><\/code><\/pre>\n<div class=\"toolbar\"><\/div>\n<\/div>\n<p>\n<b>Result:<\/b><br \/>\n<\/p>\n<div class=\"code-toolbar\">\n<pre style=\"border-radius: 5px;\" class=\" language-json\"><code class=\" language-json\"><span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token property\">\"remainingtokens\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"12000\"<\/span><span class=\"token punctuation\">,<\/span>\r\n  <span class=\"token property\">\"result\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"URL_OF_THE_GENERATED_IMAGE\"<\/span><span class=\"token punctuation\">,<\/span>\r\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<div class=\"toolbar\"><\/div>\n<\/div>\n<p><b>API parameters:<\/b><\/p>\n<ul>\n<li><b><i>apikey<\/i><\/b> &#8211; <strong>*required if Authorization header not set<\/strong> &#8211; add your API key for the call &#8211; be sure to have a valid subscription for the call to work.<\/li>\n<li><b><i>prompt<\/i><\/b> &#8211; <strong>*required<\/strong> &#8211; add the prompt based on which the AI should generate an image &#8211; for best results, be sure to urlencode the prompt so it is received correctly by the API.<\/li>\n<li><b><i>model<\/i><\/b> &#8211; set the image generator model to be used. Supported values are: dall-e-2, dall-e-3, dall-e-3-hd, gpt-image-1. The default value for the model is: dall-e-2.<\/li>\n<li><b><i>image_size<\/i><\/b> &#8211; select the image size which should be generated. Supported values for Dall-E 2 are: 256&#215;256, 512&#215;512, 1024&#215;1024. Supported values for Dall-E 3 and Dall-E 3 HD are: 1024&#215;1024, 1792&#215;1024, 1024&#215;1792. Supported values for gpt-image-1 are: 1024&#215;1024, 1536&#215;1024, 1024&#215;1536.<\/li>\n<li><b><i>style<\/i><\/b> &#8211; the style of the generated images. Must be one of vivid or natural. Vivid causes the model to lean towards generating hyper-real and dramatic images. Natural causes the model to produce more natural, less hyper-real looking images. This param is only supported for dall-e-3 or dall-e-3-hd.<\/li>\n<\/ul>\n<p><b>API result:<\/b><\/p>\n<div>\n<i>&#8211; In case of success: a JSON with the following content:<\/i><\/p>\n<ul>\n<li><b><i>remainingtokens<\/i><\/b> &#8211; The number of API tokens remaining for your API key.<\/li>\n<li><b><i>result<\/i><\/b> &#8211; The URL of the AI generated image.<\/li>\n<\/ul>\n<p>\n<i>&#8211; In case of error: a JSON with the following content:<\/i><\/p>\n<ul>\n<li><b><i>remainingtokens<\/i><\/b> &#8211; The number of API calls remaining for your API key. In case of error, this might display 0. In case of errors, the used token count will not be increased.<\/li>\n<li><b><i>error<\/i><\/b> &#8211; The error message containing the reason of the failure.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<hr\/>\n<h2 id=\"__docusaurus\" class=\"h2center postHeaderTitle\">What&#8217;s next?<\/h2>\n<div>\nCheck also this WordPress plugin which is using this API (just add your API key in it&#8217;s settings, and you are ready to generate AI content:<\/p>\n<ul>\n<li>\n<a href=\"https:\/\/1.envato.market\/aiomatic\" target=\"_blank\" rel=\"noopener\">Aiomatic<\/a><\/li>\n<\/ul>\n<p>There&#8217;s a lot more that you can configure and tune in AimogenAPI to handle the needs of your application. Be sure to read about all the options it exposes and how to get the most out of this API.\n<\/p><\/div>\n<p><script>\r\nvar i = 0;\r\nvar txt = 'curl \"https:\/\/aiomaticapi.com\/apis\/ai\/v1\/text?apikey=APIKEY&prompt=write%20me%20a%20short%20letter\"';\r\nvar speed = 50;\r\n\r\nfunction typeWriter() {\r\n  if (i < txt.length) {\r\n    document.getElementById(\"demo\").innerHTML += txt.charAt(i);\r\n    i++;\r\n    if(i == 4)\r\n    {\r\n        speed = 500;\r\n    }\r\n    else if(i == txt.length)\r\n    {\r\n        speed = 1000;\r\n    }\r\n    else\r\n    {\r\n        speed = 50;\r\n    }\r\n    setTimeout(typeWriter, speed);\r\n  }\r\n  else\r\n  {\r\n        if (i < txt.length + 1) {\r\n            var x = document.getElementById(\"myDIV\");\r\n            x.style.visibility = 'visible';  \r\n            i++;\r\n        }\r\n  }\r\n}\r\nwindow.onload = typeWriter;\r\n<\/script><br \/>\n<style>\r\n@media screen and (max-width: 770px) {\r\n    .application{\r\n        display: none !important;\r\n    }\r\n}\r\n.application {\r\n  background-color: #0e141a;\r\n  color: hsla(0, 0%, 100%, 0.5);\r\n  font-family: Helvetica, Arial, sans-serif;\r\n  box-shadow: 12px 18px 48px 0 rgba(14, 20, 26, 0.6);\r\n  overflow: hidden;\r\n  -webkit-border-radius: 6px;\r\n  -moz-border-radius: 6px;\r\n  border-radius: 6px;\r\n  -webkit-transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  -moz-transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  -o-transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n}\r\n.application-topbar {\r\n  position: relative;\r\n  padding: 3px 12px;\r\n  zoom: 1;\r\n  -webkit-box-sizing: border-box;\r\n  -moz-box-sizing: border-box;\r\n  box-sizing: border-box;\r\n}\r\n.application-topbar:after {\r\n  content: ' ';\r\n  display: table;\r\n  clear: both;\r\n}\r\n.application-actions-container {\r\n  position: absolute;\r\n  top: 50%;\r\n  -webkit-transform: translateY(-50%);\r\n  -moz-transform: translateY(-50%);\r\n  -ms-transform: translateY(-50%);\r\n  -o-transform: translateY(-50%);\r\n  transform: translateY(-50%);\r\n}\r\n.application-action,\r\n.application-actions-container {\r\n  float: left;\r\n}\r\n.application-action {\r\n  width: 8px;\r\n  height: 8px;\r\n  -webkit-border-radius: 50%;\r\n  -moz-border-radius: 50%;\r\n  border-radius: 50%;\r\n}\r\n.application-action.application-action-close {\r\n  background-color: #ff4040;\r\n}\r\n.application-action.application-action-minimize {\r\n  background-color: #ffb700;\r\n}\r\n.application-action.application-action-maximize {\r\n  background-color: #00ae55;\r\n}\r\n.application-action + .application-action {\r\n  margin-left: 6px;\r\n}\r\n.application-title-container {\r\n  padding-left: 45px;\r\n  font-size: 10px;\r\n  text-align: center;\r\n  line-height: 20px;\r\n  white-space: nowrap;\r\n  letter-spacing: 0.5px;\r\n}\r\n.application-content-container {\r\n  overflow: auto;\r\n}\r\n.application-line {\r\n  position: relative;\r\n  padding: 0 6px;\r\n  min-height: 24px;\r\n  font-size: 14px;\r\n  line-height: 24px;\r\n  font-family: monospace;\r\n  zoom: 1;\r\n}\r\n.application-line:after {\r\n  content: ' ';\r\n  display: table;\r\n  clear: both;\r\n}\r\n.desktop {\r\n  position: relative;\r\n}\r\n.desktop .application {\r\n  position: absolute;\r\n  top: 0;\r\n  left: 0;\r\n  right: 0;\r\n  opacity: 0;\r\n  -webkit-transform: scale(0);\r\n  -moz-transform: scale(0);\r\n  -ms-transform: scale(0);\r\n  -o-transform: scale(0);\r\n  transform: scale(0);\r\n  -webkit-transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  -moz-transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  -o-transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  box-shadow: 2px 3px 8px 0 rgba(14, 20, 26, 0.6);\r\n}\r\n.desktop .application.application-maximized {\r\n  opacity: 1;\r\n  box-shadow: 12px 18px 48px 0 rgba(14, 20, 26, 0.6);\r\n  -webkit-transform: scale(1);\r\n  -moz-transform: scale(1);\r\n  -ms-transform: scale(1);\r\n  -o-transform: scale(1);\r\n  transform: scale(1);\r\n}\r\n.editor-application .application-content-container {\r\n  background-color: #282c34;\r\n}\r\n.editor-application .application-line-text {\r\n  padding-left: 36px;\r\n}\r\n.application {\r\n  background-color: #0e141a;\r\n  color: hsla(0, 0%, 100%, 0.5);\r\n  font-family: Helvetica, Arial, sans-serif;\r\n  box-shadow: 12px 18px 48px 0 rgba(14, 20, 26, 0.6);\r\n  overflow: hidden;\r\n  -webkit-border-radius: 6px;\r\n  -moz-border-radius: 6px;\r\n  border-radius: 6px;\r\n  -webkit-transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  -moz-transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  -o-transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n}\r\n.application-topbar {\r\n  position: relative;\r\n  padding: 3px 12px;\r\n  zoom: 1;\r\n  -webkit-box-sizing: border-box;\r\n  -moz-box-sizing: border-box;\r\n  box-sizing: border-box;\r\n}\r\n.application-topbar:after {\r\n  content: ' ';\r\n  display: table;\r\n  clear: both;\r\n}\r\n.application-actions-container {\r\n  position: absolute;\r\n  top: 50%;\r\n  -webkit-transform: translateY(-50%);\r\n  -moz-transform: translateY(-50%);\r\n  -ms-transform: translateY(-50%);\r\n  -o-transform: translateY(-50%);\r\n  transform: translateY(-50%);\r\n}\r\n.application-action,\r\n.application-actions-container {\r\n  float: left;\r\n}\r\n.application-action {\r\n  width: 8px;\r\n  height: 8px;\r\n  -webkit-border-radius: 50%;\r\n  -moz-border-radius: 50%;\r\n  border-radius: 50%;\r\n}\r\n.application-action.application-action-close {\r\n  background-color: #ff4040;\r\n}\r\n.application-action.application-action-minimize {\r\n  background-color: #ffb700;\r\n}\r\n.application-action.application-action-maximize {\r\n  background-color: #00ae55;\r\n}\r\n.application-action + .application-action {\r\n  margin-left: 6px;\r\n}\r\n.application-title-container {\r\n  padding-left: 45px;\r\n  font-size: 10px;\r\n  text-align: center;\r\n  line-height: 20px;\r\n  white-space: nowrap;\r\n  letter-spacing: 0.5px;\r\n}\r\n.application-content-container {\r\n  overflow: auto;\r\n}\r\n.application-line {\r\n  position: relative;\r\n  padding: 0 6px;\r\n  min-height: 24px;\r\n  font-size: 14px;\r\n  line-height: 24px;\r\n  font-family: monospace;\r\n  zoom: 1;\r\n}\r\n.application-line:after {\r\n  content: ' ';\r\n  display: table;\r\n  clear: both;\r\n}\r\n.application {\r\n  background-color: #0e141a;\r\n  color: hsla(0, 0%, 100%, 0.5);\r\n  font-family: Helvetica, Arial, sans-serif;\r\n  box-shadow: 12px 18px 48px 0 rgba(14, 20, 26, 0.6);\r\n  overflow: hidden;\r\n  -webkit-border-radius: 6px;\r\n  -moz-border-radius: 6px;\r\n  border-radius: 6px;\r\n  -webkit-transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  -moz-transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  -o-transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n}\r\n.application-topbar {\r\n  position: relative;\r\n  padding: 3px 12px;\r\n  zoom: 1;\r\n  -webkit-box-sizing: border-box;\r\n  -moz-box-sizing: border-box;\r\n  box-sizing: border-box;\r\n}\r\n.application-topbar:after {\r\n  content: ' ';\r\n  display: table;\r\n  clear: both;\r\n}\r\n.application-actions-container {\r\n  position: absolute;\r\n  top: 50%;\r\n  -webkit-transform: translateY(-50%);\r\n  -moz-transform: translateY(-50%);\r\n  -ms-transform: translateY(-50%);\r\n  -o-transform: translateY(-50%);\r\n  transform: translateY(-50%);\r\n}\r\n.application-action,\r\n.application-actions-container {\r\n  float: left;\r\n}\r\n.application-action {\r\n  width: 8px;\r\n  height: 8px;\r\n  -webkit-border-radius: 50%;\r\n  -moz-border-radius: 50%;\r\n  border-radius: 50%;\r\n}\r\n.application-action.application-action-close {\r\n  background-color: #ff4040;\r\n}\r\n.application-action.application-action-minimize {\r\n  background-color: #ffb700;\r\n}\r\n.application-action.application-action-maximize {\r\n  background-color: #00ae55;\r\n}\r\n.application-action + .application-action {\r\n  margin-left: 6px;\r\n}\r\n.application-title-container {\r\n  padding-left: 45px;\r\n  font-size: 10px;\r\n  text-align: center;\r\n  line-height: 20px;\r\n  white-space: nowrap;\r\n  letter-spacing: 0.5px;\r\n}\r\n.application-content-container {\r\n  overflow: auto;\r\n}\r\n.application-line,\r\n.editor-line {\r\n  position: relative;\r\n  padding: 0 6px;\r\n  min-height: 24px;\r\n  font-size: 14px;\r\n  line-height: 24px;\r\n  font-family: monospace;\r\n  zoom: 1;\r\n}\r\n.application-line:after,\r\n.editor-line:after {\r\n  content: ' ';\r\n  display: table;\r\n  clear: both;\r\n}\r\n.cursor {\r\n  display: inline-block;\r\n  height: 24px;\r\n}\r\n.cursor.cursor-active {\r\n  position: relative;\r\n}\r\n.cursor.cursor-active:after {\r\n  position: absolute;\r\n  content: ' ';\r\n  top: 50%;\r\n  right: -3px;\r\n  width: 1px;\r\n  height: 17px;\r\n  animation: 0.7s blink ease-in-out infinite;\r\n  -webkit-transform: translateY(-50%);\r\n  -moz-transform: translateY(-50%);\r\n  -ms-transform: translateY(-50%);\r\n  -o-transform: translateY(-50%);\r\n  transform: translateY(-50%);\r\n}\r\n.cursor.cursor-active.is-typing:after {\r\n  right: 0;\r\n  background-color: hsla(0, 0%, 100%, 0.5);\r\n  animation: none;\r\n}\r\n@-moz-keyframes blink {\r\n  0% {\r\n    background-color: #fff;\r\n  }\r\n  to {\r\n    background-color: transparent;\r\n  }\r\n}\r\n@-webkit-keyframes blink {\r\n  0% {\r\n    background-color: #fff;\r\n  }\r\n  to {\r\n    background-color: transparent;\r\n  }\r\n}\r\n@-o-keyframes blink {\r\n  0% {\r\n    background-color: #fff;\r\n  }\r\n  to {\r\n    background-color: transparent;\r\n  }\r\n}\r\n@keyframes blink {\r\n  0% {\r\n    background-color: #fff;\r\n  }\r\n  to {\r\n    background-color: transparent;\r\n  }\r\n}\r\n.editor-line-number,\r\n.editor-line-text {\r\n  margin: 0;\r\n  height: 24px;\r\n}\r\n.editor-line-number {\r\n  position: absolute;\r\n  top: 0;\r\n  left: 0;\r\n  padding-left: 6px;\r\n  width: 25px;\r\n  text-align: right;\r\n  opacity: 0.5;\r\n}\r\n.editor-line-text {\r\n  padding-left: 50px;\r\n}\r\n.cursor {\r\n  display: inline-block;\r\n  height: 24px;\r\n}\r\n.cursor.cursor-active {\r\n  position: relative;\r\n}\r\n.cursor.cursor-active:after {\r\n  position: absolute;\r\n  content: ' ';\r\n  top: 50%;\r\n  right: -3px;\r\n  width: 1px;\r\n  height: 17px;\r\n  animation: 0.7s blink ease-in-out infinite;\r\n  -webkit-transform: translateY(-50%);\r\n  -moz-transform: translateY(-50%);\r\n  -ms-transform: translateY(-50%);\r\n  -o-transform: translateY(-50%);\r\n  transform: translateY(-50%);\r\n}\r\n.cursor.cursor-active.is-typing:after {\r\n  right: 0;\r\n  background-color: hsla(0, 0%, 100%, 0.5);\r\n  animation: none;\r\n}\r\n@-moz-keyframes blink {\r\n  0% {\r\n    background-color: #fff;\r\n  }\r\n  to {\r\n    background-color: transparent;\r\n  }\r\n}\r\n@-webkit-keyframes blink {\r\n  0% {\r\n    background-color: #fff;\r\n  }\r\n  to {\r\n    background-color: transparent;\r\n  }\r\n}\r\n@-o-keyframes blink {\r\n  0% {\r\n    background-color: #fff;\r\n  }\r\n  to {\r\n    background-color: transparent;\r\n  }\r\n}\r\n@keyframes blink {\r\n  0% {\r\n    background-color: #fff;\r\n  }\r\n  to {\r\n    background-color: transparent;\r\n  }\r\n}\r\n.cursor {\r\n  display: inline-block;\r\n  height: 24px;\r\n}\r\n.cursor.cursor-active {\r\n  position: relative;\r\n}\r\n.cursor.cursor-active:after {\r\n  position: absolute;\r\n  content: ' ';\r\n  top: 50%;\r\n  right: -3px;\r\n  width: 1px;\r\n  height: 17px;\r\n  animation: 0.7s blink ease-in-out infinite;\r\n  -webkit-transform: translateY(-50%);\r\n  -moz-transform: translateY(-50%);\r\n  -ms-transform: translateY(-50%);\r\n  -o-transform: translateY(-50%);\r\n  transform: translateY(-50%);\r\n}\r\n.cursor.cursor-active.is-typing:after {\r\n  right: 0;\r\n  background-color: hsla(0, 0%, 100%, 0.5);\r\n  animation: none;\r\n}\r\n@-moz-keyframes blink {\r\n  0% {\r\n    background-color: #fff;\r\n  }\r\n  to {\r\n    background-color: transparent;\r\n  }\r\n}\r\n@-webkit-keyframes blink {\r\n  0% {\r\n    background-color: #fff;\r\n  }\r\n  to {\r\n    background-color: transparent;\r\n  }\r\n}\r\n@-o-keyframes blink {\r\n  0% {\r\n    background-color: #fff;\r\n  }\r\n  to {\r\n    background-color: transparent;\r\n  }\r\n}\r\n@keyframes blink {\r\n  0% {\r\n    background-color: #fff;\r\n  }\r\n  to {\r\n    background-color: transparent;\r\n  }\r\n}\r\n.terminal-command-line-prompt-string {\r\n  float: left;\r\n  margin-right: 10px;\r\n  color: #2898dd;\r\n}\r\n.terminal-command-line-text {\r\n  height: 24px;\r\n  color: #fff;\r\n}\r\n.application {\r\n  background-color: #0e141a;\r\n  color: hsla(0, 0%, 100%, 0.5);\r\n  font-family: Helvetica, Arial, sans-serif;\r\n  box-shadow: 12px 18px 48px 0 rgba(14, 20, 26, 0.6);\r\n  overflow: hidden;\r\n  -webkit-border-radius: 6px;\r\n  -moz-border-radius: 6px;\r\n  border-radius: 6px;\r\n  -webkit-transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  -moz-transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  -o-transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n  transition: all 0s cubic-bezier(0.08, 0.69, 0.485, 0.99);\r\n}\r\n.application-topbar {\r\n  position: relative;\r\n  padding: 3px 12px;\r\n  zoom: 1;\r\n  -webkit-box-sizing: border-box;\r\n  -moz-box-sizing: border-box;\r\n  box-sizing: border-box;\r\n}\r\n.application-topbar:after {\r\n  content: ' ';\r\n  display: table;\r\n  clear: both;\r\n}\r\n.application-actions-container {\r\n  position: absolute;\r\n  top: 50%;\r\n  -webkit-transform: translateY(-50%);\r\n  -moz-transform: translateY(-50%);\r\n  -ms-transform: translateY(-50%);\r\n  -o-transform: translateY(-50%);\r\n  transform: translateY(-50%);\r\n}\r\n.application-action,\r\n.application-actions-container {\r\n  float: left;\r\n}\r\n.application-action {\r\n  width: 8px;\r\n  height: 8px;\r\n  -webkit-border-radius: 50%;\r\n  -moz-border-radius: 50%;\r\n  border-radius: 50%;\r\n}\r\n.application-action.application-action-close {\r\n  background-color: #ff4040;\r\n}\r\n.application-action.application-action-minimize {\r\n  background-color: #ffb700;\r\n}\r\n.application-action.application-action-maximize {\r\n  background-color: #00ae55;\r\n}\r\n.application-action + .application-action {\r\n  margin-left: 6px;\r\n}\r\n.application-title-container {\r\n  padding-left: 45px;\r\n  font-size: 10px;\r\n  text-align: center;\r\n  line-height: 20px;\r\n  white-space: nowrap;\r\n  letter-spacing: 0.5px;\r\n}\r\n.application-content-container {\r\n  overflow: auto;\r\n}\r\n.application-line,\r\n.terminal-line {\r\n  position: relative;\r\n  padding: 0 6px;\r\n  min-height: 24px;\r\n  font-size: 14px;\r\n  line-height: 24px;\r\n  font-family: monospace;\r\n  zoom: 1;\r\n}\r\n.application-line:after,\r\n.terminal-line:after {\r\n  content: ' ';\r\n  display: table;\r\n  clear: both;\r\n}\r\n.terminal-line > div {\r\n  white-space: nowrap;\r\n}\r\n.terminal-response-line-text {\r\n  margin: 0;\r\n}\r\n.terminal-response-line-text.terminal-response-line-plain-text {\r\n  white-space: pre;\r\n}\r\n\r\n\r\ncode[class*=\"language-\"],\r\npre[class*=\"language-\"] {\r\n\tcolor: #f8f8f2;\r\n\tbackground: none;\r\n\ttext-shadow: 0 1px rgba(0, 0, 0, 0.3);\r\n\tfont-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\r\n\ttext-align: left;\r\n\twhite-space: pre;\r\n\tword-spacing: normal;\r\n\tword-break: normal;\r\n\tword-wrap: normal;\r\n\tline-height: 1.5;\r\n\r\n\t-moz-tab-size: 4;\r\n\t-o-tab-size: 4;\r\n\ttab-size: 4;\r\n\r\n\t-webkit-hyphens: none;\r\n\t-moz-hyphens: none;\r\n\t-ms-hyphens: none;\r\n\thyphens: none;\r\n}\r\n\r\n\/* Code blocks *\/\r\npre[class*=\"language-\"] {\r\n\tpadding: 1em;\r\n\tmargin: .5em 0;\r\n\toverflow: auto;\r\n\tborder-radius: 0.3em;\r\n}\r\n\r\n:not(pre) > code[class*=\"language-\"],\r\npre[class*=\"language-\"] {\r\n\tbackground: #272822;\r\n}\r\n\r\n\/* Inline code *\/\r\n:not(pre) > code[class*=\"language-\"] {\r\n\tpadding: .1em;\r\n\tborder-radius: .3em;\r\n\twhite-space: normal;\r\n}\r\n\r\n.token.comment,\r\n.token.prolog,\r\n.token.doctype,\r\n.token.cdata {\r\n\tcolor: slategray;\r\n}\r\n\r\n.token.punctuation {\r\n\tcolor: #f8f8f2;\r\n}\r\n\r\n.namespace {\r\n\topacity: .7;\r\n}\r\n\r\n.token.property,\r\n.token.tag,\r\n.token.constant,\r\n.token.symbol,\r\n.token.deleted {\r\n\tcolor: #f92672;\r\n}\r\n\r\n.token.boolean,\r\n.token.number {\r\n\tcolor: #ae81ff;\r\n}\r\n\r\n.token.selector,\r\n.token.attr-name,\r\n.token.string,\r\n.token.char,\r\n.token.builtin,\r\n.token.inserted {\r\n\tcolor: #a6e22e;\r\n}\r\n\r\n.token.operator,\r\n.token.entity,\r\n.token.url,\r\n.language-css .token.string,\r\n.style .token.string,\r\n.token.variable {\r\n\tcolor: #f8f8f2;\r\n}\r\n\r\n.token.atrule,\r\n.token.attr-value,\r\n.token.function,\r\n.token.class-name {\r\n\tcolor: #e6db74;\r\n}\r\n\r\n.token.keyword {\r\n\tcolor: #66d9ef;\r\n}\r\n\r\n.token.regex,\r\n.token.important {\r\n\tcolor: #fd971f;\r\n}\r\n\r\n.token.important,\r\n.token.bold {\r\n\tfont-weight: bold;\r\n}\r\n.token.italic {\r\n\tfont-style: italic;\r\n}\r\n\r\n.token.entity {\r\n\tcursor: help;\r\n}\r\n\r\npre[class*=\"language-\"].line-numbers {\r\n\tposition: relative;\r\n\tpadding-left: 3.8em;\r\n\tcounter-reset: linenumber;\r\n}\r\n\r\npre[class*=\"language-\"].line-numbers > code {\r\n\tposition: relative;\r\n\twhite-space: inherit;\r\n}\r\n\r\n.line-numbers .line-numbers-rows {\r\n\tposition: absolute;\r\n\tpointer-events: none;\r\n\ttop: 0;\r\n\tfont-size: 100%;\r\n\tleft: -3.8em;\r\n\twidth: 3em; \/* works for line-numbers below 1000 lines *\/\r\n\tletter-spacing: -1px;\r\n\tborder-right: 1px solid #999;\r\n\r\n\t-webkit-user-select: none;\r\n\t-moz-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none;\r\n\r\n}\r\n\r\n\t.line-numbers-rows > span {\r\n\t\tpointer-events: none;\r\n\t\tdisplay: block;\r\n\t\tcounter-increment: linenumber;\r\n\t}\r\n\r\n\t\t.line-numbers-rows > span:before {\r\n\t\t\tcontent: counter(linenumber);\r\n\t\t\tcolor: #999;\r\n\t\t\tdisplay: block;\r\n\t\t\tpadding-right: 0.8em;\r\n\t\t\ttext-align: right;\r\n\t\t}\r\n\r\ndiv.code-toolbar {\r\n\tposition: relative;\r\n}\r\n\r\ndiv.code-toolbar > .toolbar {\r\n\tposition: absolute;\r\n\ttop: .3em;\r\n\tright: .2em;\r\n\ttransition: opacity 0.3s ease-in-out;\r\n\topacity: 0;\r\n}\r\n\r\ndiv.code-toolbar:hover > .toolbar {\r\n\topacity: 1;\r\n}\r\n\r\ndiv.code-toolbar > .toolbar .toolbar-item {\r\n\tdisplay: inline-block;\r\n}\r\n\r\ndiv.code-toolbar > .toolbar a {\r\n\tcursor: pointer;\r\n}\r\n\r\ndiv.code-toolbar > .toolbar button {\r\n\tbackground: none;\r\n\tborder: 0;\r\n\tcolor: inherit;\r\n\tfont: inherit;\r\n\tline-height: normal;\r\n\toverflow: visible;\r\n\tpadding: 0;\r\n\t-webkit-user-select: none; \/* for button *\/\r\n\t-moz-user-select: none;\r\n\t-ms-user-select: none;\r\n}\r\n\r\ndiv.code-toolbar > .toolbar a,\r\ndiv.code-toolbar > .toolbar button,\r\ndiv.code-toolbar > .toolbar span {\r\n\tcolor: #bbb;\r\n\tfont-size: .8em;\r\n\tpadding: 0 .5em;\r\n\tbackground: #f5f2f0;\r\n\tbackground: rgba(224, 224, 224, 0.2);\r\n\tbox-shadow: 0 2px 0 0 rgba(0,0,0,0.2);\r\n\tborder-radius: .5em;\r\n}\r\n\r\ndiv.code-toolbar > .toolbar a:hover,\r\ndiv.code-toolbar > .toolbar a:focus,\r\ndiv.code-toolbar > .toolbar button:hover,\r\ndiv.code-toolbar > .toolbar button:focus,\r\ndiv.code-toolbar > .toolbar span:hover,\r\ndiv.code-toolbar > .toolbar span:focus {\r\n\tcolor: inherit;\r\n\ttext-decoration: none;\r\n}\r\n\r\n\r\n<\/style><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quick Start Welcome to the quick-start! Below are the top integrations we support, with quick directions on getting up and running with popular methods. Basic Usage Example bash $ {&quot;remainingtokens&quot;:&quot;32000&quot;,&quot;finish_reason&quot;:&quot;stop&quot;,&quot;result&quot;:&quot;Dear [name],\\n\\nI hope this letter finds you doing well&#8230;&quot;} $ Continue to scroll to see full documentation&#8230; &nbsp; &nbsp; Full Documentation AimogenAPI is designed to simplify &#8230;.&nbsp;&nbsp;<a class=\" special\" href=\"https:\/\/aiomaticapi.com\/documentation\/\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-24","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/aiomaticapi.com\/apis\/wp\/v2\/pages\/24","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aiomaticapi.com\/apis\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aiomaticapi.com\/apis\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aiomaticapi.com\/apis\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aiomaticapi.com\/apis\/wp\/v2\/comments?post=24"}],"version-history":[{"count":64,"href":"https:\/\/aiomaticapi.com\/apis\/wp\/v2\/pages\/24\/revisions"}],"predecessor-version":[{"id":659,"href":"https:\/\/aiomaticapi.com\/apis\/wp\/v2\/pages\/24\/revisions\/659"}],"wp:attachment":[{"href":"https:\/\/aiomaticapi.com\/apis\/wp\/v2\/media?parent=24"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}