# Bring Your Own Key (BYOK) Source: https://docs.aikeedo.com/advanced/byok Learn how to enable and manage workspace-level API keys for OpenAI and Anthropic services in your Aikeedo installation. ## Introduction BYOK (Bring Your Own Key) allows you to let workspace owners use their own OpenAI and Anthropic API keys. This gives workspaces more control over their AI service usage while reducing your central API costs. ## How It Works When you enable BYOK: * Workspace owners can add their own API keys in their workspace settings * Their workspace will use their custom keys instead of your global API keys * API costs for that workspace will be charged to their own API keys * Workspaces without custom keys will continue using your global API keys BYOK helps distribute API costs across workspaces while maintaining central control over feature availability. In [session-based usage mode](/billing/overview#usage-mode), BYOK workspaces skip session usage gates for zero-cost OpenAI and Anthropic models only. Other models still consume credits and count toward the session cap. ## Enabling BYOK 1. Go to Settings → Integrations in your admin panel 2. Select either OpenAI or Anthropic 3. Toggle the "Custom API keys (BYOK)" switch to enable 4. Click "Save changes" You can enable BYOK separately for OpenAI and Anthropic services. ## Administrative Benefits ### Cost Management * Reduce central API costs by letting workspaces use their own keys * Maintain global API keys as fallback for workspaces without custom keys * Better cost distribution across high-usage workspaces ### Control * Enable/disable BYOK at any time * Choose which AI services support custom keys * Keep control over feature availability while delegating API costs ## Important Notes When disabling BYOK for a service, all workspaces using custom keys will automatically switch to your global API key. * Workspace owners are responsible for managing their API key validity and costs * Your global API keys serve as fallback when custom keys are not provided * Workspace members cannot see the custom API keys set by workspace owners ## Troubleshooting If workspace owners report issues: 1. Verify BYOK is properly enabled for the relevant service 2. Check if the workspace has entered valid API keys 3. Ensure your global API keys are working as fallback ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Connectors (MCP) Source: https://docs.aikeedo.com/advanced/connectors Let the AI in chat use tools from other services — Notion, Linear, Sentry, your own APIs — through remote MCP servers, with each user signing in with their own account. ## Introduction Connectors let the AI use tools from other services during a chat: search a Notion workspace, look up a Linear issue, read a Sentry error, or call your own internal API. They are built on the [Model Context Protocol](https://modelcontextprotocol.io) (MCP), the open standard that Claude and ChatGPT use for the same purpose, so any remote MCP server works. Each user connects with **their own account** on the service. The AI acts with that user's access, never someone else's, and the user decides which tools it may use and when it has to ask first. A user's connectors work in all of their chats, with or without one of your Assistants, on any model that supports tool calling. There are two kinds of connectors: * **Catalogue connectors** are ones you add in the admin panel. You choose which plans get them. * **Custom connectors** are ones a workspace adds itself, by pasting an MCP server's address. Your plans decide whether this is allowed and how many. Connectors support remote MCP servers over HTTPS, using the Streamable HTTP transport. Servers that run as a local command (stdio) are not supported. ## Before you start ### Encryption key Connectors store each user's sign-in tokens and request header values **encrypted**, with the key in the `APP_ENCRYPTION_KEY` setting in your `.env` file. Without a key, nobody can connect. * New installations get a key from the installer. * Installations updated from a version before 5.1 get one written to `.env` automatically during the update. If the key could not be written, for example because `.env` is not writable, the **Connectors** page in the admin panel shows a warning. Create the key by running this in your application folder: ```bash theme={null} php bin/console app:generate-key ``` **Back up `APP_ENCRYPTION_KEY` together with your database.** Stored credentials cannot be read without it. If the key is lost or replaced, every user has to connect every connector again. Never run `app:generate-key --force` on an installation that is already in use. ### Cron The [cron job](/setup/initial-setup) refreshes each connection's list of tools every few hours. It picks up new and changed tools and keeps sign-ins from expiring for users who have not chatted in a while. Connectors work without cron, but tool lists only change when a user presses **Refresh tools**. ## Turning connectors on Connectors are off by default. Three switches must all be on for a user to use them: 1. **The feature.** Go to **Settings → Features → Chat** and turn on **Connectors**. 2. **The plan.** Open a plan and turn on **Connectors** under Capabilities. Then choose: * **Library → Connectors**: which catalogue connectors the plan includes. Check **All connectors** to include every active catalogue connector, including ones you add later. * **Quota → Custom connectors cap**: how many servers a workspace can add itself. Leave it blank for unlimited, or set it to `0` to disallow custom connectors. Catalogue connectors do not count towards the cap. 3. **The user.** Users can turn connectors off for themselves under **Capabilities**, like any other chat capability. Existing subscriptions keep the plan settings they were created with. After changing a plan, use **Update snapshots** to apply the change to current subscribers. See [Plans, Snapshots & Subscriptions](/billing/plans-snapshots-subscriptions). ## Adding catalogue connectors You can add each connector by hand, as described below, or import ready-made ones with the **Connector Catalogue** plugin. It ships 487 vetted MCP servers from official vendors in 14 categories, and requires Aikeedo 5.1 or later. After installing the plugin, go to **Settings → Starter content → Connectors**, then search, filter by category and import the ones you want. Imported connectors are ordinary connectors: you can edit, switch off or delete them. Connectors that need you to register your own OAuth client are imported switched off, with a note saying so. The catalogue is never part of **Import everything**. To add a server yourself: 1. Go to **Connectors** in the admin panel and click **Add connector**. 2. Enter the **MCP server URL** and click **Check server**. Aikeedo contacts the server and reports how it signs users in. 3. Fill in the **Details**: * **Name**, **Description** and **Icon URL** are what users see. * **Slug** identifies the connector in plan settings. It cannot be changed later. * **Status**: new connectors can be saved as inactive and turned on when you are ready. 4. Under **Authentication**, choose how users sign in: * **Users sign in before using it (OAuth)**: the usual choice for services with user accounts. * **Users sign in only when the server asks (OAuth)**: for servers that allow some tools without signing in. * **No sign-in**: for public servers, or ones that authenticate with request headers. 5. For OAuth, choose the **OAuth client**: * **Register with the server automatically** works with most servers. * **Use a client registered with the server** is for servers that do not register clients automatically. Register an application with the service, using the redirect URI shown on the page, and enter its **Client ID** and **Client secret**. 6. Under **Request headers**, declare any headers the server needs, such as an API key. Give a header a **Shared value** to send the same value for every user. Leave it empty and each user enters their own when they connect. Values are encrypted and never shown again. 7. Under **Tools**, **Tool limit** caps how many of the server's tools are stored. 8. Click **Save changes**, then allow the connector on your plans. The **Connectors** list also shows the custom connectors workspaces have added. Filter by **Type** to see them. You can open, switch off or delete any of them. ## What users see Users manage connectors under **Settings → Connectors** in the app. ### Adding a custom connector When the plan allows it, any workspace member can click **Add custom connector**, enter a name and the server's address, and let Aikeedo check the server. Sign-in and request headers work as in the admin form above, except that header values are always entered by each member. A custom connector belongs to the workspace, and each member connects to it with their own account. The member who added it and the workspace owner can edit or delete it. ### Connecting Clicking **Connect** signs the user in to the service, if it needs sign-in, and then lists the server's tools. Tools are grouped by what the server says they do: * **Read-only tools** * **Write/delete tools** * **Other tools**: the server did not say. * **Unavailable tools**: listed with the reason they cannot be used here, such as an unsupported input definition. Every tool can be set to **Always allow**, **Needs approval** or **Never allow**, one by one or for a whole group at once. **Every tool starts at Needs approval**, including read-only ones. Groups come from the server's own description of its tools, which Aikeedo cannot verify. ### Approving tools in chat When the AI wants to use a tool that needs approval, the chat pauses and shows a card with the tool's name and **exactly what it will send**. The user chooses: * **Allow once**: runs the tool this time. * **Always allow**: runs it, and changes the tool's permission so it will not ask again. * **Deny**: the AI is told the request was declined. Closing the card, or pressing Escape, declines the request and lets the user reply in their own words. ## Credits Tool calls are not charged. They run against the user's own account with the service. The model's tokens are charged as usual. Every tool offered to the model adds its description to the request, so connecting servers with many tools makes each message larger. ## Security * **Trust.** A connector receives whatever the AI sends it, and its tools act on the user's account. Users are warned about this when they add a custom connector. Only add catalogue connectors from developers you trust. * **Untrusted text.** Tool descriptions and results come from a third party. Aikeedo marks them to the model as data, not instructions, and strips hidden characters. This lowers the risk of prompt injection but cannot remove it, which is why tools ask before running by default. * **Private networks.** Connector addresses must be public HTTPS URLs. Addresses that point to `localhost`, private networks (such as `10.x`, `192.168.x`) or cloud metadata endpoints are refused, including through redirects. The same protection applies to web pages read during a chat and to dataset URLs. As a result, an MCP server running on the same machine or local network as Aikeedo cannot be used as a connector. * **Credentials.** Tokens and header values are encrypted at rest and never sent back to the browser. ## Troubleshooting Run `php bin/console app:generate-key` in the application folder, as described in [Encryption key](#encryption-key). Check that **Connectors** is turned on under **Settings → Features → Chat**. Check that the connector is active, that their plan includes it under **Library → Connectors**, and that their subscription's snapshot is up to date. The service requires a pre-registered OAuth application. Register one with the service using the redirect URI shown in the form, and choose **Use a client registered with the server**. The service no longer accepts the user's sign-in, for example because it was revoked or expired. The user clicks **Sign in** on the connector's page. Their tool permissions are kept. Tool lists refresh through cron every few hours. Users can press **Refresh tools** on the connector's page to refresh at once. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Email Templates Source: https://docs.aikeedo.com/advanced/email-templates Customize and manage multilingual email templates in Aikeedo including welcome emails, password resets, and workspace invitations using Twig templating. ## Introduction Aikeedo provides customizable email templates for all system communications. This guide covers template location, multilingual support, and customization best practices. ## Template Location All email templates are stored in the `/resources/emails` directory of your Aikeedo installation. This centralized location makes it easy to manage and update your email content. ## Available Templates Aikeedo comes with the following essential templates: ### Core Templates * `layout.twig`: Base layout template that provides a consistent design for all emails * `export.twig`: Template for admin exported data * `password-reset.twig`: Sent when a user requests a password reset * `verify-email.twig`: Used for email verification processes * `welcome.twig`: Sent to new users upon registration * `workspace-invitation.twig`: Used when inviting users to join a workspace All email templates extend layout.twig, which serves as the base layout template providing consistent styling across all emails. ## Multilingual Support Aikeedo supports multilingual email templates through a directory-based structure. ### Setting Up Multilingual Templates 1. Create a directory in `/resources/emails` that matches your locale string from `locale.json` ```bash theme={null} # Example for Czech language /resources/emails/cs-CZ/ ``` 2. Duplicate the template files into the locale-specific directory ```bash theme={null} /resources/emails/cs-CZ/welcome.twig /resources/emails/cs-CZ/verify-email.twig # ... other templates ``` 3. Translate the content in the duplicated templates The `layout.twig` file in the root directory serves as the default layout for all languages. While you can create language-specific versions of layout.twig, this is optional as the default layout is typically suitable for all languages. ### Template Fallback * Templates in the root `/resources/emails` directory serve as fallbacks * If a localized template isn't found, the system will use the corresponding template from the root directory Even if you only use English, it's highly recommended to: 1. Create an `en-US` directory 2. Duplicate your customized templates there This prevents your customizations from being overwritten during updates. ## Customizing Templates You have the flexibility to edit these templates to align with your brand voice and specific needs: 1. Navigate to the appropriate language directory (or create one) 2. Copy the template you want to customize from the root directory 3. Make your changes while keeping the Twig template syntax intact 4. Save the file After editing any email template, you must clear the app cache for the changes to take effect. This ensures that Aikeedo uses the most up-to-date version of your templates. ## Template Format Email templates in Aikeedo use the Twig templating engine. If you're new to Twig, you can find more information in the [Twig documentation](https://twig.symfony.com/doc/3.x/). ## Best Practices When customizing email templates: * Keep your messaging clear and concise * Use a consistent tone that matches your brand voice * Test your emails across different email clients * Include all necessary information without overwhelming the recipient * Maintain separate language directories for better organization * Always backup your customized templates before updates ## Related Guides * [Mailer Configuration](/email/mailer) - Set up email delivery * [SMTP Setup](/email/smtp) - Configure SMTP server * [Localization](/advanced/localization) - Manage language settings Always clear the application cache after modifying email templates to ensure changes take effect immediately. # Keyboard Shortcuts Source: https://docs.aikeedo.com/advanced/keyboard-shortcuts The keyboard shortcuts available in the app, where they show up, and how users can switch them off. ## Introduction Aikeedo has keyboard shortcuts for the actions people use most: starting something new, searching, moving around, and managing items. Shortcuts appear where they apply, as small key hints beside buttons and in menus, and a cheat sheet lists all of them. There is nothing for you to configure. Each user can switch shortcuts off for themselves. `Ctrl` is shown as `⌘` on Mac. The keys on screen always match the keyboard the user is using. ## Shortcuts ### General | Shortcut | Action | | - | - | | `Ctrl + Shift + O` | **New**: start a new chat, or a new item in the current tool | | `N` | **Create** on the current page | | `Ctrl + K` | **Search** | | `Ctrl + Shift + X` | Turn [Private mode](/advanced/private-mode) on or off | | `Ctrl + /` | Open the keyboard shortcuts cheat sheet | ### Navigation | Shortcut | Action | | - | - | | `Ctrl + Shift + S` | Show or hide the sidebar | | `Ctrl + Shift + D` | Show or hide the details panel | | `Ctrl + Shift + ,` | Open settings | ### Item menu These work only while a row's **…** menu is open, for example a conversation in Recents. Each key is the first letter of the action. | Key | Action | | - | - | | `U` | Mark as read or unread | | `S` | Share | | `R` | Rename | | `D` | Delete | | `O` | Open in a new tab | ### Composer These are listed in the cheat sheet so they are easy to find. They always work and cannot be switched off. | Key | Action | | - | - | | `Enter` | Send message | | `Shift + Enter` | New line | | `Esc` | Close a dialog or menu | ## Where users find them * **On the interface.** Hover over a button, or open an item's menu, to see its shortcut. * **The cheat sheet.** Press `Ctrl + /`, or choose **Keyboard shortcuts** in the account menu. * **Settings → Shortcuts.** The full list, grouped, with a switch for each one. ## Switching shortcuts off Some shortcuts can clash with a browser extension or a screen reader. Users can switch off any of them under **Settings → Shortcuts**, and use **Restore defaults** to go back. The choice is saved to the user's account, so it follows them across browsers. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Localization Source: https://docs.aikeedo.com/advanced/localization Translate Aikeedo into any language with the built-in extract, translate and build commands, manage available languages, and let users pick their language. ## Introduction Aikeedo's interface is translated with GNU gettext. English source text lives in the code, and translations live in `.po` catalog files you can edit by hand or fill in automatically. Three console commands keep everything in step: | Command | What it does | | - | - | | `app:locale:extract` | Scans your code and writes every translatable string into the catalogs | | `app:locale:translate` | Fills in the empty entries using an AI model | | `app:locale:build` | Writes the dictionaries the browser loads | Run them from your installation root: ```bash theme={null} php bin/console app:locale:extract ``` Extract and translate both run the build step for you, so most of the time you only need the first two. ## Where translations live | What | Location | | - | - | | App and admin interface | `/locale` | | Active theme (landing page) | `/extra/extensions/{organization}/{theme}/locale` | | Plugins | `/extra/extensions/{organization}/{plugin}/locale` | | Browser dictionaries (generated) | `/{webroot}/locale` | Where `{organization}` is usually `heyaikeedo`, `{theme}` is `default` for the standard theme, and `{webroot}` is `public` — or `public_html` on some installations, such as cPanel. Inside each of those, catalogs follow the gettext convention: ``` locale/de-DE/LC_MESSAGES/messages.po ``` The `/{webroot}/locale` directory is generated output, not something you edit. It has to be writable for `app:locale:build` to work. ## Translating ### The usual workflow After changing any wording in your templates: ```bash theme={null} php bin/console app:locale:extract ``` You will be asked which targets to scan. Choose **Core application** for the app and admin interface, **Everything** for that plus every plugin and theme on your installation, or name them individually — several at once, separated by commas. ```bash theme={null} php bin/console app:locale:translate ``` You will be asked which languages to do — **All languages**, or a few by name — then shown how many strings and API requests that means before anything is sent. Open the app in the language you translated. The browser dictionaries are rebuilt automatically at the end of the previous step. ### Translating by hand You never have to use the AI translator. Open the `.po` file for your language, find the `msgid` entries and fill in the `msgstr` fields: ``` msgid "Welcome to Aikeedo" msgstr "Bienvenue sur Aikeedo" ``` Always leave the `msgid` values unchanged. Only edit `msgstr`. After editing a `.po` file by hand, rebuild the browser dictionaries: ```bash theme={null} php bin/console app:locale:build ``` No terminal? **Settings → Clear cache** in the admin area rebuilds them too. This is the one step that is easy to forget. If your changes show up on server-rendered pages but not in toasts, buttons or other interface text produced by JavaScript, the dictionaries are stale — rebuild them. ## The AI translator `app:locale:translate` sends the untranslated entries to a language model and writes the answers back into the catalogs. ```bash theme={null} php bin/console app:locale:translate --lang=de-DE --lang=fr-FR ``` | Option | | | - | - | | `--lang`, `-l` | Language to translate; repeatable. Omit to pick from a list | | `--all`, `-a` | Every language that has a catalog | | `--force`, `-f` | Retranslate entries that already have a translation | | `--dry-run` | Show what would be translated and stop | | `--model`, `-m` | Model to use | | `--base-url` | An OpenAI-compatible endpoint other than OpenAI's | | `--batch-size`, `-b` | Strings per request (default 20) | | `--concurrency`, `-c` | Requests in flight at once (default 4) | | `--target`, `-t` | Which target to translate; see [Themes and plugins](#themes-and-plugins) | | `--path`, `-p` | Translate the catalogs of any directory | The catalog is saved after every group of requests, so stopping the command with `Ctrl-C` loses at most one group — running it again carries on from where it stopped. ### Your API key The translator needs an API key, and it is **your** key for this one task. It has nothing to do with the AI providers you configured in the admin area, and it is never saved anywhere. The key is read from, in order: 1. The `--api-key` option 2. The `AIKEEDO_TRANSLATOR_API_KEY` environment variable 3. The `OPENAI_API_KEY` environment variable 4. A hidden prompt, if none of the above are set The key is used for the run and then forgotten. It is never written to `.env`, to your settings, or to the log — so you will be asked for it again next time unless you set an environment variable. ### Using another provider Anything that speaks the OpenAI chat completions API works, including OpenRouter, Groq, Together and a local Ollama server: ```bash theme={null} php bin/console app:locale:translate \ --base-url=https://openrouter.ai/api/v1 \ --model= ``` ### What the translator protects Strings such as `Hello :name` and `Version %s` contain placeholders that are replaced at runtime. A translation may move a placeholder to wherever the target language needs it, but never renames or drops one. Every answer is checked, and any that gets this wrong is sent back once with an explanation. If it still comes back wrong, the entry is left untranslated and listed at the end of the run rather than being written out broken. Many strings carry a context that says where they appear — `button`, `heading`, `label`, `country` and so on. This is what stops "Post" the button and "Post" the noun becoming the same word. The context is sent with each string so the model can pick the right wording. Languages need different numbers of plural forms — one for Japanese, two for German, four for Russian, six for Arabic. The translator asks for exactly the number your language needs, explains which numbers each form covers, and rejects an answer with the wrong number of forms. ## Managing available languages Go to **Settings → Languages** in the admin area. The page lists every language that ships with Aikeedo, with: * **Enable toggle** — enabled languages appear in the language switcher and can be chosen by your users. * **Default language** — what a visitor sees before they pick one themselves. Only an enabled language can be the default. * **Completion** — how much of the app and admin interface is translated for each language. Click **Save changes** to apply. The page won't let you disable every language or make a disabled language the default. Aikeedo ships configuration for 30 languages. Whether the translations themselves are filled in depends on the release — run `app:locale:translate --lang=` to complete any that are not. ### The locale.json catalogue `/locale/locale.json` is the catalogue of languages the installation knows about. Your choices on the Languages page are stored in the database and layered on top of it, so you don't need to edit this file to enable or disable a language. Its `enabled` flags and `default` are only used as a fallback, for example before the database exists during installation: ```json theme={null} { "default": "en-US", "locales": [ { "code": "de-DE", "label": "German", "enabled": true, "dir": "ltr" } ] } ``` Updates merge the shipped `locale.json` into yours, so a language added in a new release shows up on the Languages page of existing installations. ### Adding a language Add an entry with its code, label and text direction (`ltr` or `rtl`). ```bash theme={null} php bin/console app:locale:extract ``` ```bash theme={null} php bin/console app:locale:translate --lang= ``` Turn it on in **Settings → Languages**. ## Themes and plugins All official plugins and themes are translated. Update each installed plugin and theme to receive its translations. Themes and plugins keep their own catalogs next to their code. The extract command lists everything it finds on your installation and asks which to include: ```bash theme={null} php bin/console app:locale:extract --target=heyaikeedo/chatbots php bin/console app:locale:extract --target=all ``` A plugin's catalog is `locale/{language}/LC_MESSAGES/messages.po`. A theme's is `locale/{language}/LC_MESSAGES/theme.po`, because theme strings belong to their own `theme` domain. Installing, updating or removing a plugin rebuilds the browser dictionaries on its own, so a plugin that ships its own translations works as soon as it is installed. What ships inside `extra/` is a built copy of a theme, and building or updating the theme replaces it — along with any catalog changes made there. If you are developing a theme from its own repository, point the commands at that directory instead: ```bash theme={null} php bin/console app:locale:extract --path=../my-theme php bin/console app:locale:translate --path=../my-theme --lang=de-DE ``` Pass the repository root. The package inside it — the `static/` directory in a repository made from the theme starter kit — is found on its own, and its catalogs are written to `static/locale`. See the [Theme Development](/development/themes/localization) guide for how theme packages are laid out. ## Marking text for translation If you edit templates, wrap any text a person will read so it can be extracted. The same functions are available in Twig, PHP and JavaScript, and they take the same arguments everywhere. | Function | Use it for | | - | - | | `__('Save')` | A plain string | | `p__('button', 'Save')` | A string whose meaning depends on where it appears | | `n__(':count file', ':count files', n)` | Singular and plural | | `np__('label', ':count file', ':count files', n)` | Plural with a context | | `d__('theme', 'Save')` | A string belonging to a theme catalog | | `dp__('theme', 'button', 'Save')` | A theme string with a context | | `noop__('Save')` | Marks a string for extraction without translating it here | The context in `p__()` is never shown to anyone — it only tells the translator where the string appears. Plugins use the plain functions (`__()`, `p__()` and so on). Their catalogs are merged into the application's own dictionary when the plugin is loaded. Themes name their domain instead — `d__('theme', …)`, `dp__('theme', …)`, `dn__('theme', …)` or `dnp__('theme', …)`. A plain `__()` in a theme template is looked up in the application's dictionary, not the theme's, so it is left out when the theme's strings are extracted. ### Placeholders Two styles work, and both are passed as the argument after the string: ```twig theme={null} {{ __('Version %s', version) }} {{ __('Hello :name', { ':name': user.first_name }) }} ``` ```js theme={null} import { __, n__ } from '../base/translate'; __('Version %s', version); __('Hello :name', { ':name': user.firstName }); n__(':count credit', ':count credits', count, { ':count': count }); ``` ### JavaScript Only plain text can be extracted, so `__(someVariable)` is skipped. That is deliberate — it is how messages coming back from the server get translated. Such messages have no text to find anywhere in the JavaScript, so they are listed in `resources/assets/js/base/server-messages.js` instead. The browser only receives the strings your JavaScript actually asks for, not the whole catalog, so pages stay small. ## User language selection ### For signed-in users Open the account menu at the bottom-left of the app and go to **Settings → General**. Under **Preferences**, pick a language from the **Language** selector. ### For website visitors The default theme puts a language switcher in the website header, usually shown as a globe icon or the current language code in the top-right corner. The exact position depends on your theme. Some themes place it in the footer or a side menu instead. ## Best practices 1. **Consistency** — keep terminology the same across all your translations. 2. **Extract before you translate** — a translation run only fills in what the catalogs already contain, so extract after changing any wording. 3. **Review machine translations** — the AI translator is a strong starting point, not a substitute for a native speaker on customer-facing copy. 4. **Test each language** — longer translations can change how a layout fits, and right-to-left languages need a look of their own. 5. **Keep up with releases** — run extract and translate after each update to catch newly added strings. ## Troubleshooting The browser dictionaries are out of date. The quickest fix needs no terminal: **Settings → Clear cache** in the admin area rebuilds them. From the command line: ```bash theme={null} php bin/console app:locale:build ``` If neither changes anything, `/{webroot}/locale` is most likely not writable — the rebuild is skipped rather than allowed to fail, and the reason is written to the application log. Check that it is enabled in **Settings → Languages**, then clear the application cache. The answer changed or dropped a placeholder, so it was rejected rather than written out broken. Run the command again to retry those entries, or fill them in by hand. Run `app:locale:extract` first — translation only fills in entries that are already in the catalogs. If you still have trouble, check that your `.po` files are correctly formatted, that `locale.json` is valid JSON, and clear both your browser cache and the application cache after making changes. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Private Mode Source: https://docs.aikeedo.com/advanced/private-mode Let users make everything they create temporary across the whole app. Turn it on once and it stays on until they turn it off. ## Introduction Private mode is a switch that makes everything a user creates temporary. Chats, images, videos, voice-overs, transcripts, classifications, isolated voices and what chat tools produce are kept out of history, Recents and the library, and are deleted automatically after a retention period you set. It applies to the whole app, not just chat, and it **stays on** until the user turns it off. Moving between tools, opening settings, reloading the page or opening another tab in the same browser keeps private mode on. Turning it off returns the user to normal mode. Private mode replaces the temporary chats of v4.1. If you are updating from an earlier version, [turn it on again](#turning-private-mode-on) after the update. ## Turning private mode on Three things must be true for a user to see the switch. 1. **The feature.** Go to **Settings → Features → Privacy & safety**, turn on **Private mode** and set the **retention period** in days. The default is one day. 2. **The plan.** Open a plan and turn on **Private mode**. The plan editor shows a warning next to the setting while the feature is off globally. 3. **Existing subscribers.** Subscriptions keep the plan settings they were created with. After changing a plan, use **Update snapshots** to apply the change to current subscribers. See [Plans, Snapshots & Subscriptions](/billing/plans-snapshots-subscriptions). If the feature is turned off or a user's plan no longer includes it, any private mode a browser remembers is switched off automatically. ## What users see ### Switching it on and off Users switch private mode on with the ghost button beside **New** in the sidebar, or in the header on mobile. The keyboard shortcut is `Ctrl + Shift + X` (`⌘ + Shift + X` on Mac). While it is on: * App pages dim so it is clear which mode is active. Settings pages are not dimmed. * Each tool shows a note under its heading saying that what is created there stays out of history and the library, and is deleted after the retention period. * If the sidebar is collapsed, a **Private** badge appears in the head bar, which also switches the mode off. * Lists, including Recents, show only what was created in the current private session. Regular conversations and library items are out of view until the mode is turned off. ### The private session A private session starts with the first thing the user creates, not when the switch is turned on. Switching the mode on and straight off leaves nothing behind and asks for no confirmation. Everything created in the session belongs to that browser. It cannot be opened from anywhere else. ### Keeping something Private items offer **Save** where regular items offer **Share**. Saving an item moves it out of the private session and keeps it. ### Turning it off If the session holds anything, a prompt tells the user how many items they will no longer be able to open and reminds them to save what they want to keep. The user can cancel or turn the mode off. If generations are still running, the prompt says so: they finish and count toward usage, but end up out of reach. ## What it does not do * **It is per browser.** The mode and the session are remembered in that browser. Another browser or device is not in private mode unless the user turns it on there. * **Items are deleted after the retention period, not immediately.** Until then they exist on your server. * **It does not change what AI providers keep.** Prompts still go to the model provider, under that provider's data policy. * **It does not hide usage.** Credits and usage are counted as usual. ## How deletion works Expired items are removed through the regular delete, so their files on storage and their embeddings go with them. Generations that stayed stuck in a private session are failed and their credit is released. Items that are still generating are left for their provider's webhook to finish. Deletion runs on the [cron job](/setup/initial-setup), so make sure it is set up. ## Troubleshooting Check that **Private mode** is on under **Settings → Features → Privacy & safety**, that the user's plan includes it, and that their subscription's snapshot is up to date. The browser could not keep the setting, or the feature or plan stopped offering it. Private mode is remembered in the browser's storage and in a cookie, so clearing site data turns it off. Private items are listed only in the private session that made them, and only while private mode is on in that browser. Once the mode is turned off, or the retention period ends, they cannot be opened. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Prompt Templates Source: https://docs.aikeedo.com/advanced/prompt-templates Create Writer templates with input tags and attributes, and image and video templates with preview artwork, pinned settings and locking. Templates give your users a ready-made starting point. Aikeedo has three kinds, all managed from **Templates** in the admin area: * **Writer templates** turn a prompt with placeholders into a short, step-by-step form. The answers start a chat conversation. * **Image templates** and **video templates** appear as cards in the Imagine and Video tools, with preview artwork and their own settings. Aikeedo ships 137 Writer templates, 39 image templates and 24 video templates. Import them from **Settings → Starter content**. See [Starter Content](/advanced/seed-data). ## Writer templates ### How users experience them When a user opens a Writer template, a wizard asks each of the template's inputs on its own screen and lets them pick a model. When they finish, Aikeedo starts a chat conversation. The conversation shows the template's name and the user's answers, and streams the reply like any other chat turn, so tools, Canvas and follow-up questions all work. Users never see the filled-in prompt. It is sent to the model but is left out of the page and every API response. ### Recommended model Set **Recommended model** on a Writer template to prefill the wizard's model picker with a model suited to the template. Users can still change it. If the recommended model is disabled, or the workspace's plan doesn't include it, the wizard falls back to the user's usual model. ### Tags Tags are the building blocks of Writer templates. They represent input elements that users can customize and are enclosed in curly braces. ```scss theme={null} { input_name } ``` ### Attributes Attributes modify the behavior of tags, allowing you to fine-tune how inputs are presented and processed. They are appended to tags using the pipe character (`|`). ```scss theme={null} { input_name | attribute1 | attribute2 } ``` ### Creating your first Writer template Let's create a simple prompt template for an "Article Generator": ```scss theme={null} Write an article about { topic | placeholder: Your chosen subject }. Use the following draft content: --- { content | multiline | placeholder: Draft content } --- Additional instructions: - Include relevant statistics and consider diverse perspectives. - Write it in { language } using a { tone } voice tone. ``` This template asks the user for the topic, draft content, language, and tone, one step at a time. ### Available attributes Sets a custom label for the input Example: `{ input_name | label:Custom label }` Creates a multiline text input Example:`{ input_name | multiline }` Defines the input type (currently supports `enum`) Example:`{ input_name | type:enum }` Specifies options for `enum` type inputs Example:`{ input_name | type:enum | options:Option 1, Option 2, Option 3 }` Makes an input optional Example:`{ input_name | optional }` Sets a custom placeholder text Example:`{ input_name | placeholder:Custom placeholder }` Provides additional information about the input Example:`{ input_name | info:Custom info text }` ### Built-in inputs Aikeedo provides two convenient built-in inputs to streamline your prompt templates: 1. `language`: A dropdown list of supported languages. 2. `tone`: A dropdown list of supported voice tones. Use these built-in inputs in your templates like this: ```scss theme={null} { language } { tone } ``` ### Advanced example Let's create a more sophisticated prompt template for a "Comprehensive Article Generator": ```scss theme={null} Create a detailed article on { topic | placeholder: Your chosen subject | info: Specify the main focus of your article }. Target audience: { audience | type:enum | options:General, Beginners, Experts | info: Select your intended readership } Article structure: 1. Introduction 2. { section_1 | label:Main Section 1 | placeholder:E.g., Historical background } 3. { section_2 | label:Main Section 2 | placeholder:E.g., Current trends } 4. { section_3 | label:Main Section 3 | placeholder:E.g., Future implications } 5. Conclusion Key points to cover: { key_points | multiline | placeholder: List important points to address } Writing style: - Language: { language } - Tone: { tone } - Length: { word_count | placeholder:Approximate word count | info: Suggested range: 500-2000 words } Additional requirements: - Include at least { source_count | type:enum | options:2, 3, 5 | label:Number of sources } credible sources - Incorporate relevant statistics and data visualizations if applicable - Address potential counterarguments or alternative viewpoints Extra notes: { extra_notes | multiline | optional | placeholder: Any additional instructions or context } ``` This template combines several attributes and input types into a flexible article brief. ## Image and video templates Image and video templates appear to users as cards in the Imagine and Video tools. When there are enough of them, a row of templates is also shown above the composer. To create one, go to **Templates** in the admin area, create a template and set **Type** to **Image template** or **Video template**. ### Card * **Preview image** — shown on the template card. Use a portrait, 3:4 image. * **Hover preview** — optional. Plays while the pointer is over the card. GIF, animated WebP, MP4 or WebM. ### Prompt Write the prompt out in full. Image and video templates don't use `{ }` placeholders. ### Recommended model Choosing a model prefills it when someone picks the template, and decides which settings can be pinned. ### Pinned settings Pin any setting the model exposes, such as aspect ratio, resolution or duration. A pinned setting is applied on the server. Anything left on **Let the user choose** stays editable in the composer. ### Input images Turn on **Require input images** and set a minimum and maximum. The user can't generate until they have attached enough images. Use this for templates that transform a photo, such as a sticker pack or a portrait style. ### Allow extra instructions Let the user add a note of their own, which is appended to your prompt. ### Locking a template The **Lock this template** toggle decides how much the user sees: * **Unlocked** — the template fills the composer as a starting point, and the user can rewrite all of it. * **Locked** — the user gets the card, the input slots and any setting you left free, and never sees the prompt or the model. The prompt is never sent to the browser and never appears on generations made from the template, including generations shared to the community feed. A locked template runs on its recommended model and no other, so the workspace's plan must include that model. Otherwise the card shows as an upgrade. ## Making templates available on plans Each plan can limit which templates its workspaces can use. The template list in the plan editor is grouped by type. Locked image and video templates need both the template and its model enabled on the plan. ## Best practices 1. **Be specific**: Clearly define what you want the AI to do in your template. 2. **Use appropriate input types**: Choose the right input type (text, multiline, enum) for each piece of information you need. 3. **Provide context**: Use the `info` attribute to give users helpful information about each input. 4. **Show the result**: Give image and video templates preview artwork that shows what the template produces. 5. **Lock only what you need to**: Lock a template when the prompt is the value you are selling; leave it unlocked when users benefit from editing it. 6. **Test your templates**: Try each template with different inputs and models before making it active. # Secure URLs Source: https://docs.aikeedo.com/advanced/secure-urls Enable secure URL protection in Aikeedo to safeguard uploaded and AI-generated files using tokenized URLs and time-limited access. ## Introduction Secure URLs protect user-uploaded and AI-generated files through tokenized, time-limited URLs. This guide covers enabling and managing this security feature. ## How It Works When secure URLs are enabled: * All files uploaded by your users are protected through tokenized URLs * The app automatically generates secure URLs whenever files need to be accessed * Files can only be accessed through valid tokenized URLs * Direct file URLs without tokens will not work Secure URLs are completely transparent to your users - they won't notice any difference in how they access files. The app automatically handles all security aspects behind the scenes. ## Managing Secure URLs ### Prerequisites Before enabling secure URLs, ensure: * You're using a supported cloud storage provider (like Digital Ocean Spaces) * Your Aikeedo installation is version 2.10 or higher * Your Cloud Storage plugin is version 1.2 or higher Local storage does not support secure URLs. You must configure a cloud storage provider in your admin panel first. ### Enabling the Feature 1. Log in to your Aikeedo admin panel 2. Go to **Settings** > **File storage** 3. Under the Configuration section, ensure your cloud storage adapter is selected 4. Toggle the "Secure URLs" switch to enable the feature After enabling, all new files uploaded by your users will automatically be protected. Files uploaded before enabling this feature will remain accessible through their original URLs. ## Security Considerations ### URL Access Control * The app automatically generates new secure URLs whenever files are accessed * Each secure URL contains a token that expires after 1 hour * Users won't notice the URL expiration - new secure URLs are generated automatically when needed * Users cannot bypass the security by sharing direct file URLs Your users will have continuous access to their files. The 1-hour expiration only applies to individual secure URLs, not to the files themselves. New secure URLs are automatically generated when needed. If you've enabled CDN in your cloud storage settings (like Digital Ocean Spaces CDN), ensure its edge caching time is set to 1 hour or less. Otherwise, the CDN might continue serving expired secure URLs to your users. ### Best Practices 1. Enable secure URLs before launching your service 2. Avoid disabling secure URLs once enabled 3. Regularly check your storage settings 4. Monitor your users' file access patterns ## Limitations Important points to consider: * Local storage cannot use secure URLs * Some cloud storage providers may not support this feature * Old URLs will stop working if you disable secure URLs after enabling them * Once enabled, switching to a different cloud storage provider is not recommended as previously uploaded files will become inaccessible If you're using Cloudflare R2, secure URLs will only work with the default S3 API endpoint (`.r2.cloudflarestorage.com`) and cannot be used with custom domains. After enabling secure URLs, stick with your chosen cloud storage provider. Switching providers will break access to files uploaded with secure URLs enabled. Verify secure URL support with your chosen cloud storage provider before enabling the feature. ## Troubleshooting If your users report issues accessing files: 1. Check if your cloud storage provider is functioning correctly 2. Verify your CDN settings if enabled 3. Ensure the secure URLs feature is properly enabled 4. Check if the reported files were uploaded after enabling secure URLs ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Starter Content Source: https://docs.aikeedo.com/advanced/seed-data Import the AI models, LLM servers, Writer templates and image and video templates that ship with Aikeedo, during installation, from the admin area or from the command line. Aikeedo ships with a catalog of AI models, ready-made OpenAI-compatible LLM servers, templates and the categories they are filed under. You can bring them in while installing, and import or refresh them at any time afterwards. ## What ships with Aikeedo | Set | Key | Contents | | - | - | - | | LLM servers | `llm-servers` | OpenAI-compatible providers such as Groq, OpenRouter and Together AI, ready for your API key | | Models | `models` | Models for the built-in integrations, and for the LLM servers and Ollama | | Categories | `categories` | Groups the Writer templates are filed under | | Writer templates | `writer-templates` | 137 prompt templates for the Writer tool | | Image templates | `image-templates` | 39 starting points for Imagine, with preview artwork | | Video templates | `video-templates` | 24 starting points for Video, with preview artwork | Sets are always imported in this order. LLM servers come before models because a server's models can only be imported once the server exists, and categories come before Writer templates because templates reference them. The shipped image and video templates are unlocked and have no recommended model, so they work with whichever providers you run. Lock them and pin a model from **Templates** once you know which providers you use. See [Image and video templates](/advanced/prompt-templates#image-and-video-templates). ## During installation The installer has a **Starter content** step after the admin account is created. Every set is selected by default, and **Models** is marked as recommended. Clear any you don't want, then click **Finish installation**. If you are migrating an existing database, only the recommended sets are selected, because that database already has its own templates. If a set fails to import, the installation still finishes and the success screen lists the sets that didn't import. Import them later from the admin area. ## From the admin area Go to **Settings → Starter content**. Each set shows how many of its entries are already imported. * Click **Browse** on a set to see what it contains and import the entries you choose. * Click **Import everything** to import every set in turn. The result of each import appears as a notification. Importing is safe to repeat. Every shipped entry has a fixed ID: * Templates and categories you already have are updated in place instead of duplicated, and entries you have reordered keep their position and artwork. * Models and LLM servers you already have are left as they are. Only missing ones are added. Image and video templates upload their preview artwork to your storage provider as they are imported, so these sets take a little longer. ### Browsing a set The **Browse** page lists every entry in the set, with the same search and filters as the other admin lists. Filter by status (**Imported**, **Not imported** or **Not available**) and, for models and Writer templates, by provider or category. Entries that aren't imported yet are selected when the page opens. Select or clear entries, then click **Import selected**. The status dot on each entry turns green once it is imported. ## LLM servers and their models The **LLM servers** set contains OpenAI-compatible providers with their server addresses already filled in: OpenRouter, Together AI, Groq, DeepSeek, Google AI Studio, Perplexity, Hugging Face, Nebius, DeepInfra, AI/ML API, Mistral AI, Cerebras and Moonshot AI. 1. Import the servers you want from **Settings → Starter content → LLM servers**. Each server is created without an API key and without models. 2. Import their models from **Settings → Starter content → Models**. A server's models can be selected only after the server is imported. Until then, they are shown faded with a note naming the server they need. 3. Add your API key to each server in **Settings → Integrations → Custom LLM Servers**. 4. Enable the models you want to offer in **Settings → Models**. Imported server models start disabled, so they don't appear to users before the server has a key. If you already added a server by hand at the same address, it counts as imported. Its models are added to your server and its API key is kept. Models for [Ollama](/integrations/ollama) work the same way, but they become available once the Ollama integration is set up instead of after an import. The catalog doesn't include models that the built-in integrations already offer, such as OpenAI, Anthropic, Cohere and xAI models. See [OpenAI API-Compatible Servers](/integrations/openai-api-compatibility) for adding other providers by hand. ## From the command line ```bash theme={null} php bin/console app:import:seeds ``` Without options, every set is imported. Use `--set` (repeatable) to import specific sets: ```bash theme={null} php bin/console app:import:seeds --set=image-templates --set=video-templates ``` To add the LLM servers and their models: ```bash theme={null} php bin/console app:import:seeds --set=llm-servers --set=models ``` `app:import:presets` still works as an alias, so existing deployment scripts keep running. ## Upgrading from v4.x Before v5.0, the built-in Writer templates were imported with random IDs. If your installation already has them and you import **Writer templates** again, you get a second copy once. Delete the older copies from **Templates** afterwards. New installations are not affected. # Text Streaming Source: https://docs.aikeedo.com/advanced/text-streaming Configure and troubleshoot real-time text streaming for AI responses in Aikeedo including server configuration and hosting compatibility. ## Introduction Text streaming displays AI responses in real-time as they generate, creating a more engaging user experience. This guide covers functionality, compatibility, and troubleshooting. ## How It Works Aikeedo's text streaming functionality: * Works out of the box on most web servers * Supports shared hosting environments * Requires minimal configuration in most cases Text streaming is enabled by default and should work immediately after installation. Most users won't need to make any configuration changes. ## Server Configuration While Aikeedo works with default server settings in most cases, some servers might need minor adjustments: ### PHP Settings If streaming isn't working, check these settings in your `php.ini` file: ```ini theme={null} output_buffering = Off zlib.output_compression = Off ``` These settings prevent PHP from buffering the output, allowing for immediate transmission of text chunks to the client. If you're using shared hosting and can't modify php.ini, contact your hosting provider. Many providers can adjust these settings for you if needed. ### Web Server Settings #### For Nginx Servers Aikeedo automatically sets the required headers for text streaming. However, if your Nginx is configured as a proxy server, you might need these settings: ```nginx theme={null} proxy_buffering off; fastcgi_buffering off; ``` These settings are typically added in the `nginx.conf` file or within the specific server block for your Aikeedo installation. Most Nginx installations work without any changes, thanks to the `X-Accel-Buffering: no` header Aikeedo sets for streaming responses. #### For Apache Servers Apache servers typically work without any changes. If you experience issues, try disabling the gzip module by adding the following to your `/public/.htaccess` file: ```apache theme={null} RewriteRule ^(.*)$ $1 [NS,E=no-gzip:1,E=dont-vary:1] ``` ## Common Issues ### Buffering Issues If you experience delayed or chunked responses, or responses appear all at once instead of streaming: 1. Verify all buffering-related settings are properly configured 2. Clear your server's cache 3. Restart your web server after making configuration changes 4. Clear your browser cache 5. Try a different browser 6. Check if your hosting provider is using any aggressive caching ### Caching Mechanisms Various caching layers can affect text streaming: * Server-level caching * PHP opcode caching * Reverse proxy caching * Browser caching If responses are delayed, try disabling any caching plugins or features your hosting provider might have enabled. ### Known Hosting Limitations Some hosting providers may have restrictions that affect text streaming. If you experience issues, contact your hosting provider's support team for assistance. * **Cloudways**: Text streaming is not supported due to their server stack configuration * **Shared Hosting**: May have limited configuration options * **Managed Hosting**: Check with your provider about configuring streaming settings ## Troubleshooting Checklist Use this checklist to diagnose streaming issues: * Verify PHP configuration settings * Check web server buffering settings * Confirm no interfering caching mechanisms * Test with different browsers * Monitor server logs for errors * Verify hosting provider compatibility ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Users & Workspaces Source: https://docs.aikeedo.com/advanced/users-workspaces Understand user types, workspace management, roles, invitations, and multi-tenant architecture in Aikeedo for organizational access control. Aikeedo's user and workspace system provides flexible access control for individual users and organizations. This guide covers user types, workspace management, and collaboration features. ## User Types Aikeedo has two main types of users: 1. **Standard Users**: These are the end-users of your website who interact with the AI features and content. 2. **Admin Users**: Administrators have enhanced permissions and can access the admin panel to manage the application. ### Admin Users Admin users have all the capabilities of standard users, plus additional privileges: * Access to the admin panel * Control over application settings * Ability to manage and analyze user and application data * Oversight of system-wide data management and analytics The initial admin user is created during the installation process. This user becomes the app owner. Admin users can: * Create new admin accounts * Manage existing admin accounts (modify permissions, deactivate, or delete) * Elevate standard user accounts to admin status By default, it's not possible to sign up directly as an admin user. This is a security measure to protect your application. ## Workspaces Workspaces are a core concept in Aikeedo, allowing for organized collaboration and resource management. Key features of workspaces: * Users can create and own multiple workspaces * Each workspace can have multiple users * Users can be part of multiple workspaces * Every workspace has a single owner ### Workspace Owner Capabilities Workspace owners have full control over their workspaces, including the ability to: * Create new workspaces * Delete existing workspaces * Invite new users to the workspace * Remove users from the workspace * Change the workspace plan ### Default Workspace When a user signs up for Aikeedo, they are automatically provided with a default workspace. This initial workspace is owned by the new user and serves as their personal starting point within the platform. By default, this workspace is typically named "Personal," reflecting its individual nature. However, to accommodate user preferences and organizational needs, the workspace owner has the flexibility to rename this default space as they see fit. This feature allows users to personalize their Aikeedo experience from the very beginning, tailoring their workspace to align with their specific projects or branding requirements. ## User-Workspace Relationship The relationship between users and workspaces is many-to-many: * A single user can create and own multiple workspaces * A single user can be a member of multiple workspaces (including those owned by others) * A workspace can have multiple user members This structure allows for flexible collaboration and resource sharing across teams or projects, while also enabling users to manage multiple distinct workspaces for different purposes. ## Best Practices To make the most of Aikeedo's user and workspace system: 1. **Carefully assign admin roles**: Only give admin access to trusted individuals who need to manage the application. 2. **Educate users on workspace features**: Help your team understand how to effectively use workspaces for collaboration and organization. ## Related Guides * [Authentication Settings](/authentication/accounts-settings) * [Billing Overview](/billing/overview) * [Initial Setup](/setup/initial-setup) # Account Settings Source: https://docs.aikeedo.com/authentication/accounts-settings Configure user registration, sign-in policies, and email verification requirements in Aikeedo to balance accessibility and security. Account settings control user registration, authentication, and email verification policies for your Aikeedo platform. ## General Settings ### User Accounts This setting controls whether users can create and access accounts on your platform. * When enabled, users can sign in through the sign-in form and API. * If disabled, only admin accounts will be able to sign in. Disabling user accounts will prevent regular users from accessing your platform. Use this option with caution. ### Signup Form This option determines whether new users can register for accounts on your platform. * When enabled, users can sign up through the registration form and API. * If disabled, new user registrations will be prevented, but existing users can still sign in. You might want to disable the signup form temporarily for maintenance or to control user influx. ### Phone Number Collection Configure whether to collect phone numbers during user registration. **Available Options:** * **None**: Phone number collection is disabled for user registration * **Optional**: Users can optionally provide their phone number * **Mandatory**: Phone number is required for registration **Phone Number Collection Purpose:** When phone number collection is enabled (Optional or Mandatory), you can provide a purpose statement that will be displayed to users during registration. * **Purpose**: Explain why you need to collect phone numbers * **Display**: This message will be shown to end users during registration * **Optional**: Leave blank to hide the explanation * **Recommended**: Explain the purpose to build trust and compliance This setting applies to new registrations only and does not affect existing user accounts. ### Disposable Email Domains Control whether users can register with disposable email addresses. * **Enabled**: Users can sign up with disposable email domains * **Disabled**: Registration with disposable email domains is blocked **Default Protection:** Aikeedo blocks 2500+ disposable email domains by default, and this list improves with each update to provide better protection against spam registrations. **Adding Additional Blocked Domains:** If you need to block additional disposable email domains, you can add them to the `/data/domains.txt` file: 1. Navigate to your Aikeedo installation directory 2. Open or create the `/data/domains.txt` file 3. Add each domain on a new line 4. Save the file These domains will be added to the default block list. This setting applies to new registrations only and does not affect existing user accounts. ### Owned Workspace Cap Limit the number of workspaces a user can own. * Enter a number to set the maximum limit * Leave blank or set to "Unlimited" for no limit * This helps control resource usage and prevents workspace spam ### Account Deletion Allow users to permanently delete their own accounts. * **Enabled**: Users see a **Danger zone** section in **Settings → Security** where they can delete their account * **Disabled**: Only admins can delete user accounts from the admin panel When a user deletes their account: * They must confirm the action and enter their password (if they have one) * Subscriptions for all owned workspaces are cancelled * All owned workspaces and their data are permanently deleted * All personal data associated with the account is permanently deleted Account deletion cannot be undone. Admin accounts cannot delete themselves through self-service. ## Email Verification Policy The email verification policy determines how strictly your platform enforces email verification for new and existing users. You can choose from three levels of verification: 1. **None**: No email verification is required. * Users can access all features without verifying their email addresses. * This option provides the most frictionless user experience but offers the least security. 2. **Relaxed**: Users can sign in, but are encouraged to verify their email. * Users can access the platform without email verification. * An alert will be displayed on the dashboard indicating that the email is unverified. * This setting balances user convenience with a reminder to complete verification. 3. **Strict**: Email verification is mandatory before full platform access. * Users can sign in but cannot access any pages except account-related pages until they verify their email address. * This provides the highest level of security but may impact user onboarding. To enable email verification (for Relaxed and Strict policies), ensure you've configured your [mailer transport](/email/mailer) in the Email settings. The email verification policy does not apply to admin portal access. Admin accounts are managed separately for security reasons. ### OAuth Email Status Control how email verification is handled for OAuth (social login) users. **Available Options:** * **Ignore**: Email verification status from the identity provider will be ignored * **Auto**: Email will be marked as verified if verified by the identity provider * **Verified**: Email will be marked as verified when signing in through an identity provider even if it is not verified by the identity provider Each option offers different balances between user convenience and security, allowing you to tailor the policy to your platform's needs. ## Best Practices 1. **Regular Review**: Periodically review your account settings to ensure they align with your current security needs and user experience goals. 2. **User Communication**: If you make significant changes to these settings, consider notifying your users to avoid confusion. 3. **Testing**: After changing settings, test the user registration and login processes to ensure everything works as expected. 4. **Compliance**: Ensure your account settings comply with relevant data protection regulations in your jurisdiction. ## Related Guides * [Identity Providers](/authentication/identity-providers/google) - Set up third-party authentication options * [CAPTCHA](/authentication/captcha) - Add an extra layer of security to your forms * [Email Configuration](/email/mailer) - Set up your email system for notifications and verifications By carefully configuring these account settings, you can create a secure and user-friendly environment on your Aikeedo platform, tailored to your specific needs and user base. # CAPTCHA Protection Source: https://docs.aikeedo.com/authentication/captcha Protect your Aikeedo application from spam and abuse with CAPTCHA integration CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) is a crucial tool for protecting your Aikeedo application from spam and automated abuse. This guide focuses on setting up and configuring Google reCAPTCHA v2 Invisible, which is currently the supported CAPTCHA solution for Aikeedo. ## Current CAPTCHA Support At present, Aikeedo supports Google reCAPTCHA v2 Invisible. This powerful and user-friendly CAPTCHA solution offers robust protection without disrupting the user experience. While only Google reCAPTCHA is currently supported, Aikeedo may introduce additional CAPTCHA options in future updates. Stay tuned to our [changelog](https://aikeedo.com/changelog/?utm_source=docs\&utm_medium=content) for the latest feature additions. ## What is Google reCAPTCHA? Google reCAPTCHA is a free service that helps protect websites from spam and abuse. reCAPTCHA v2 Invisible uses advanced risk analysis techniques to distinguish between humans and bots without requiring users to solve puzzles or click checkboxes. ## Benefits of Using reCAPTCHA * **Enhanced Security**: Safeguard your forms and user interactions from spam bots and malicious attacks. * **Flexible Security Settings**: Adjust protection levels based on your specific requirements and risk tolerance. ## Setting Up Google reCAPTCHA To integrate Google reCAPTCHA with your Aikeedo application: 1. **Register for reCAPTCHA**: * Go to the [Google reCAPTCHA Admin Console](https://www.google.com/recaptcha/admin). * Log in with your Google account. * Click the "+" button to add a new site. 2. **Configure reCAPTCHA settings**: * Enter a label for your site (e.g., your domain name) in the "Label" field. * For "reCAPTCHA type", select "Challenge (v2)". * Under the Challenge (v2) option, choose "Invisible reCAPTCHA badge". * In the "Domains" section, add your Aikeedo application's domain(s). * Under "Google Cloud Platform", you may see a project name if you've used Google Cloud before. If not, a new project will be created for you. Aikeedo is designed to work with the "Invisible reCAPTCHA badge" option. This provides security without disrupting the user experience. 3. **Complete the registration**: * Review your settings to ensure everything is correct. * Click the "Submit" button at the bottom of the page. 4. **Retrieve your Site Key and Secret Key**: * After submitting, you'll be provided with a Site Key and a Secret Key. * Keep these keys secure, as you'll need them to configure reCAPTCHA in Aikeedo. Never share your Secret Key publicly or include it in client-side code. Keep it confidential to maintain the security of your CAPTCHA implementation. ## Configuring CAPTCHA in Aikeedo Once you have your reCAPTCHA keys, enable and configure it in Aikeedo: 1. Access the Aikeedo admin panel. 2. Navigate to "Settings" > "User accounts" > "CAPTCHA". 3. Toggle on "Protect with Google reCAPTCHA". 4. Input your Site Key in the "Site key" field. 5. Enter your Secret Key in the "Secret key" field. 6. Click "Save changes" to apply the configuration. Never share your Secret Key publicly or include it in client-side code. Keep it confidential to maintain the security of your CAPTCHA implementation. ## Testing Your CAPTCHA Integration After setting up CAPTCHA, it's crucial to test its functionality: 1. Open a new incognito/private browsing window or use a different browser. 2. Navigate to your Aikeedo platform's public-facing pages. 3. Attempt actions that should be protected, such as user registration or login. 4. Confirm that the reCAPTCHA challenge activates when appropriate. It's important to test CAPTCHA integration without logging out of your admin account to avoid potential login issues. Using a separate browsing session ensures you can always access the admin panel if needed. ## Troubleshooting If you encounter issues with your CAPTCHA integration, consider these steps: * Verify that your Site Key and Secret Key are correctly entered in the Aikeedo settings. * Ensure your domain is properly listed in the Google reCAPTCHA admin console. * Check your browser console for any JavaScript errors related to reCAPTCHA. * Confirm that your server can communicate with Google's reCAPTCHA API servers. ## Additional Resources * [Google reCAPTCHA Documentation](https://developers.google.com/recaptcha/docs/invisible) * [reCAPTCHA FAQ](https://developers.google.com/recaptcha/docs/faq) # Facebook Identity Provider Source: https://docs.aikeedo.com/authentication/identity-providers/facebook Seamlessly integrate Facebook OAuth 2.0 authentication into your Aikeedo application, allowing users to log in with their Facebook accounts. This guide walks you through the setup process, from creating a Facebook App to configuring Aikeedo for a smooth "Login with Facebook" experience. ## Overview Integrating Facebook as an identity provider offers your users a convenient and secure way to access your Aikeedo application. This feature leverages Facebook's OAuth 2.0 protocol, ensuring a streamlined authentication process while maintaining high security standards. Before you begin, ensure you have admin access to your Aikeedo application and a Facebook Developer account for setting up the OAuth integration. ## Step-by-Step Integration Guide ### 1. Create a Facebook App 1. Visit the [Facebook for Developers](https://developers.facebook.com/) website. 2. Click on "My Apps" in the top-right corner. 3. Select "Create App" and choose the app type that best fits your needs (e.g., "Consumer" or "Business"). 4. Follow the prompts to set up your app, providing the necessary information. ### 2. Configure Facebook Login 1. In your app's dashboard, navigate to the "Add a Product" section. 2. Find "Facebook Login" and click "Set Up". 3. Choose "Web" as the platform for your app. 4. Enter your website's URL in the "Site URL" field. 5. Click "Save" and then "Continue". ### 3. Set Up OAuth Settings 1. In the left sidebar, click on "Facebook Login" > "Settings". 2. In the "Valid OAuth Redirect URIs" field, enter the callback URL provided by Aikeedo. Look for a click-to-copy feature in Aikeedo for easy access to the correct callback URL. The callback URL is automatically generated based on your Site Domain and SSL settings. To configure these, visit the [Website Essentials](/website-basics/essentials) page in your Aikeedo admin panel. 3. Scroll down and click "Save Changes". ### 4. Obtain App ID and App Secret 1. In the left sidebar, click on "Settings" > "Basic". 2. Here you'll find your "App ID" and "App Secret". You'll need these for Aikeedo configuration. Keep your App Secret confidential. Never share it publicly or include it in client-side code. ### 5. Configure Aikeedo 1. Log into your Aikeedo admin panel. 2. Navigate to **Settings > Identity providers > Facebook**. 3. Toggle the switch to enable "Login with Facebook". 4. Enter the "App ID" and "App Secret" obtained from your Facebook App. 5. Click "Save changes" to apply your configuration. ## Testing Your Integration After completing the setup, it's crucial to test the integration to ensure a smooth user experience: 1. Log out of your Aikeedo application. 2. On the login page, look for the "Login with Facebook" option. 3. Click the option and proceed through the Facebook authentication flow. 4. Verify that you can successfully log in and access your Aikeedo account. If you encounter any issues during testing, double-check your configuration settings in both the Facebook Developer Console and Aikeedo admin panel. ## Video Tutorial For a visual guide through this process, check out our step-by-step video tutorial: {% endif %} ``` ## Google Analytics ```twig theme={null} {% if option.script_tags.ga.is_enabled|default(false) and option.script_tags.ga.measurement_id|default(false) %} {% endif %} ``` ## Intercom Intercom needs visitor details when someone is signed in, and a signed hash when identity verification is on: ```twig theme={null} {% if option.script_tags.intercom.is_enabled|default(false) and option.script_tags.intercom.app_id|default(false) %} {% endif %} ``` `hash_hmac()` is available in templates precisely for this. It runs server-side, so the secret never reaches the browser. Never print `option.script_tags.intercom.secret_key`, or any other secret, into the page. Only the computed hash belongs in the output. ## Guard everything Every block above is wrapped in a check, for two reasons: debug mode raises errors on undefined variables, and an enabled integration with a missing ID emits a broken tag. Check both the toggle and the identifier. ## Copying the snippets The fastest way to get this right is to copy the three snippets from the starter kit into your theme unchanged, then include them from your layout. They're plain Twig with no dependency on the rest of the starter. ## Related * [Templates and layouts](/development/themes/templates-and-layouts) * [Twig reference](/development/themes/twig-reference) * [Custom scripts settings](/integrations/custom-scripts) # Theme structure Source: https://docs.aikeedo.com/development/themes/structure How an Aikeedo theme project is laid out, which files the application requires, and what the build produces. The starter kit separates **source** from **package**. You edit both, but only the package is installed. ```text theme={null} aurora/ ├── package.json # build scripts and dependencies ├── vite.config.mjs # dev server and build configuration ├── tailwind.config.js ├── postcss.config.js ├── .env # committed defaults: AIKEEDO_SERVER, BUILD_DIR ├── scripts/ │ ├── pack.mjs # builds and zips the installable theme │ └── release.mjs # wraps theme.zip into a versioned archive ├── release/ │ └── README.md # shipped alongside theme.zip in the release archive ├── src/ # compiled sources: not shipped as-is │ ├── css/ │ │ ├── index.css # CSS entry │ │ ├── base.css │ │ ├── button.css │ │ ├── typography.css │ │ └── avatar.css │ └── js/ │ ├── index.js # JS entry │ ├── translate.js │ └── components/ # custom elements └── static/ # the package: copied as-is into the build ├── composer.json ├── layouts/theme.twig ├── templates/ │ ├── index.twig │ └── custom.twig ├── sections/header.twig ├── snippets/ │ ├── css.twig │ ├── js.twig │ └── script-tags/{head,body,end}.twig ├── assets/ # static images, logos ├── src/ # optional PHP │ ├── Theme.php │ └── CustomView.php └── locale/{code}/LC_MESSAGES/theme.po ``` ## What ends up installed Building copies everything in `static/` to `BUILD_DIR`, adds the compiled CSS and JS under `assets/`, and writes `.vite/manifest.json`. The installed theme looks like this: ```text theme={null} extra/extensions/acme/aurora/ ├── composer.json ├── layouts/ templates/ sections/ snippets/ locale/ src/ ├── assets/ │ ├── css-a1b2c3.css │ ├── js-d4e5f6.js │ └── logo.svg └── .vite/manifest.json ``` Files listed in `extra.public` are then copied to `public/e/acme/aurora/`, which is what the browser actually loads. ## What each part does | Path | Purpose | | - | - | | `static/composer.json` | The theme manifest. See [Theme manifest](/development/themes/manifest). | | `static/layouts/theme.twig` | The HTML shell: head, meta, assets, `{% block template %}` | | `static/templates/index.twig` | **Required.** The landing page. | | `static/templates/*.twig` | Pages your entry class routes to | | `static/sections/*.twig` | Large reusable blocks, such as a hero or pricing table | | `static/snippets/*.twig` | Small partials: CSS variables, inline scripts, analytics tags | | `static/assets/` | Images and other static files served as-is | | `static/src/` | Optional PHP: the entry class and page handlers | | `static/locale/` | Translation catalogs in the `theme` domain | | `src/css`, `src/js` | Sources Vite compiles into `assets/` | | `scripts/` | Packaging helpers | Only `composer.json` and `templates/index.twig` are required by the application. Layouts, sections and snippets are conventions that make a theme easier to maintain. ## Naming conventions * **Templates** are pages: one file per route. * **Sections** are page-sized blocks, included from a template: `{% include "@theme/sections/hero.twig" %}`. * **Snippets** are fragments used in several places, often with variables: `{% include "@theme/snippets/plan.twig" with { plan } %}`. * **Layouts** are extended, not included: `{% extends "@theme/layouts/theme.twig" %}`. Every path starts with `@theme/`, which points at the active theme's installed directory. ## PHP inside a theme A theme that only renders the landing page needs no PHP. Add `static/src/` when you want extra pages: | File | Role | | - | - | | `Theme.php` | The entry class named in `extra.entry-class`. It implements `Plugin\Domain\PluginInterface` and registers routes in `boot()`. | | `CustomView.php` | A request handler with a `#[Route]` attribute, rendering one of your templates | Anything under `static/src/` must be covered by the PSR-4 map in `composer.json`, and the package must be installed with Composer so the classes autoload. See [Custom pages](/development/themes/custom-pages). ## Translations Catalogs live at `static/locale/{code}/LC_MESSAGES/theme.po`, in the `theme` domain. The starter ships catalogs for the locales Aikeedo supports. See [Theme localization](/development/themes/localization). ## Related * [Build and assets](/development/themes/build-and-assets) * [Templates and layouts](/development/themes/templates-and-layouts) * [Theme manifest](/development/themes/manifest) # Template objects reference Source: https://docs.aikeedo.com/development/themes/template-objects Every variable and object available in an Aikeedo theme template, with its fields, types and availability. This is the complete set of data a theme template can read. Availability matters as much as shape: several of these exist only on certain pages or for signed-in visitors, and debug mode raises an error when you read something undefined. ## Availability at a glance | Variable | Available | | - | - | | `option`, `config`, `version`, `license`, `theme`, `environment`, `nav`, `currency`, `locales`, `env` | Always | | `locale` | When the resolved language has a theme catalog; otherwise `null` | | `theme_locale` | Always, but deprecated. Use `locale.code`. | | `user`, `workspace` | Only when a visitor is signed in | | `plans` | Only on the landing page | ```twig theme={null} {% if user is defined %}…{% endif %} {{ plans|default([]) }} {{ locale.code|default('en-US') }} ``` ## Globals Every platform setting, as a nested object: `option.site.name`, `option.brand.logo`, `option.policies.tos`, `option.features.chat.is_enabled`, and so on. A setting that was never saved is undefined, so guard it. Two values are computed rather than stored: * `option.site.url`, built from the configured domain and whether the site is served over HTTPS. * `option.color_scheme.accent` and `.accent_content`, expanded into `{ hex, r, g, b, rgb }`. Application configuration. Most themes only need `config.model.registry`, which lists AI services and models for pricing or capability tables. The application version, also used as the cache-busting query on theme assets. The installation's license text, or `null`. The active theme's package name, such as `acme/aurora`. `prod`, `dev`, `demo` or `install`. The navigation registry. Themes rarely need it; it's what the app and admin sidebars are built from. The raw environment. Read one key when you must, such as `env.THEME_ASSETS_SERVER`. This contains database credentials and secret keys. Never print or serialize the whole object. ## Currency The platform billing currency. ISO code, such as `USD`. Localized name, such as `US Dollar`. The symbol, or `null` when it's the same as the code. Decimal places, such as `2`. ## Locales Every configured language. Language code, such as `de-DE`. English name, such as `German`. Whether an administrator enabled it. `ltr` or `rtl`. An alias of `code`, kept for older themes. The language resolved for this request, in the same shape as a `locales` entry. It's `null` when the theme has no catalog for the resolved language, so always use `locale.code|default('en-US')`. Deprecated. The resolved language code as a plain string. ```twig theme={null} {% for item in locales %} {% if item.enabled %} {{ item.label }} {% endif %} {% endfor %} ``` ## User The signed-in visitor. Undefined for guests. UUID. `admin` or `user`. Email address. First name. Last name. Phone number. Preferred language code. False for accounts created through a social login. How many workspaces the user may own; `null` means unlimited. Gravatar URL derived from the email address. Unix timestamp. Unix timestamp, or `null`. Last known IP address. See [Country](#country). City. Verification status. The user's API key, or `null`. See [Affiliate](#affiliate). The current workspace. Note that `owner` and `users` are **not** included on this nested copy. `memories`, `history`, `disabled_tools`, `instructions`, `preferred_name` and `marketing`. Workspaces the user belongs to but doesn't own. Present on the global `user` only. Workspaces the user owns. Present on the global `user` only. ## Workspace The visitor's current workspace. Undefined for guests. UUID. Workspace name. The workspace's own key, when it brings one. As above. See [Address](#address). Whether a trial is still available. Whether the free plan is still available. Unix timestamp. Unix timestamp, or `null`. Pending invitations. See [Workspace invitation](#workspace-invitation). Add-on credits; `null` means unlimited. Add-on plus subscription credits. See [Subscription](#subscription). `null` unless the installation bills by session; otherwise `{ resets_at, used_percent }`. Present only in session billing mode. The owning user. Present on the global `workspace` only. Members. Present on the global `workspace` only. ## Subscription Available as `workspace.subscription`, or `null` when the workspace has none. UUID. Trial length in days. Credits used in the current period. Percentage **with a `%` suffix**, such as `"45.00%"`. Credits remaining; `null` means unlimited. Percentage with a `%` suffix. Unix timestamp. Unix timestamp, or `null`. When the user cancelled. When access ends. Next usage reset; `null` once cancelled. Next payment date, following the plan's billing cycle. The plan snapshot. See [Plan snapshot](#plan-snapshot). The order's currency, or `null` when there's no order. Gateway key. The provider's reference. ## Plan Active plans, sorted by price ascending. **Available on the landing page only.** UUID, used in the checkout link. Plan name. Short description. An icon name, or raw SVG markup. Minor units, such as `2900` for 29.00. Discounted price when a coupon applies. `one-time`, `monthly`, `yearly` or `lifetime`. `null` means unlimited. Member limit; `null` means unlimited. Highlight this plan. Ordering weight for comparison tables. Unix timestamp. Unix timestamp, or `null`. Objects of `{ title, is_included }`. A line entered with a leading `-` becomes `is_included: false`. Capabilities. See [Plan config](#plan-config). The applied coupon. Discount amount when a coupon applies. The snapshot subscriptions are based on. ## Plan snapshot A frozen copy of a plan, available as `subscription.plan`. It carries `id`, `title`, `description`, `icon`, `price`, `billing_cycle`, `credit_count`, `member_cap`, `created_at`, `updated_at`, `config` and `feature_list`, with the same meanings as on a plan. It has no `sale_price`, `coupon`, `discount` or `snapshot`. ## Plan config What a plan grants. Available as `plan.config` and `subscription.plan.config`. Chat capability settings. Writer settings. Image generation settings. Video settings. Transcription settings. Voice-over settings. Voice isolation settings. Classification settings. Allowed model keys; `null` means all. Tool switches, keyed by capability. Allowed assistants; `null` means all. Allowed templates; `null` means all. Per-plan settings added by plugins, keyed by extension. ## Affiliate Available as `user.affiliate`. Every user has one. UUID. Referral code. Tracked clicks. Referred signups. Available balance, converted into the billing currency. Pending balance, converted into the billing currency. Withdrawn total, converted into the billing currency. The currency those amounts are in. Payout email. Bank details. Chosen payout method. ## Address Available as `workspace.address`, or `null`. Country code. State or region. City. Street address. Second address line. Postal code. Phone number. ## Country Available as `user.country`. Localized country name. Two-letter code. Three-letter code. Flag image URL. ## Workspace invitation Entries of `workspace.invitations`. UUID. Invited address. Unix timestamp. Unix timestamp, or `null`. ## Notes on types * **Timestamps** are Unix seconds, or `null`. Format them with Twig's date filters. * **Money** is an integer in the currency's minor units. Use `` or `format_currency`. * **Credits** use `null` for unlimited, which is different from `0`. * **Percentages** on a subscription are strings that already include `%`. ## Related * [Twig reference](/development/themes/twig-reference) * [Pricing and plans](/development/themes/pricing-and-plans) * [Users and navigation](/development/themes/users-and-navigation) # Templates and layouts Source: https://docs.aikeedo.com/development/themes/templates-and-layouts Compose Aikeedo theme pages with Twig layouts, sections and snippets, and wire them to the site settings administrators control. Theme templates are plain Twig. The application renders `@theme/templates/index.twig` for the landing page and hands it a set of globals; how you organize everything below that is up to you. ## The layout A layout owns the HTML shell and declares the blocks pages fill in: ```twig layouts/theme.twig theme={null} {% if env.THEME_ASSETS_SERVER is defined and env.THEME_ASSETS_SERVER %} {% endif %} {% include "@theme/snippets/css.twig" %} {%- include "@theme/snippets/script-tags/head.twig" -%} {% block title %}{% endblock %} {{- block('title') is empty ? '' : ' | ' -}} {{- option.site.name ?? '' -}} {%- include "@theme/snippets/script-tags/body.twig" -%} {% block template %}{% endblock %} {%- include "@theme/snippets/script-tags/end.twig" -%} ``` The Vite client tag is what makes hot reloading work, and it only appears while `THEME_ASSETS_SERVER` is set. ## Pages ```twig templates/index.twig theme={null} {% extends "@theme/layouts/theme.twig" %} {% block title %}{{ dp__('theme', 'title', 'AI tools for teams') }}{% endblock %} {% block template %} {% include "@theme/sections/header.twig" %} {% include "@theme/sections/hero.twig" %} {% include "@theme/sections/features.twig" %} {% include "@theme/sections/pricing.twig" %} {% include "@theme/sections/footer.twig" %} {% endblock %} ``` Everything resolves through `@theme`, which points at the active theme's directory. ## Sections and snippets Sections are page-sized blocks. Snippets are fragments you pass data to: ```twig sections/pricing.twig theme={null}

{{ dp__('theme', 'heading', 'Pricing') }}

{% for plan in plans|default([]) %} {% include "@theme/snippets/plan.twig" with { plan } %} {% endfor %}
``` Dynamic includes work too, which is handy for icon sets or per-feature blocks: ```twig theme={null} {% include "@theme/snippets/logos/" ~ provider ~ ".twig" ignore missing %} ``` ## Strict variables In debug mode Twig runs with strict variables: reading something undefined raises an error instead of rendering nothing. Most globals are conditional, so guard them. ```twig theme={null} {% if user is defined %} {{ dp__('theme', 'button', 'Open app') }} {% endif %} {{ option.site.name ?? '' }} {{ plans|default([]) }} {{ locale.code|default('en-US') }} ``` | Variable | Defined when | | - | - | | `user`, `workspace` | A visitor is signed in | | `plans` | The template is the landing page | | `locale` | The theme has a catalog for the resolved language | | `option.*` | The setting has been saved at least once | Test with debug mode on. A template that only breaks in production is usually a missing `is defined`. ## Honoring admin settings The point of a theme is that it stays configurable. Read the settings administrators expect to control: | Setting | Use | | - | - | | `option.site.name`, `.description`, `.keywords` | Title and meta tags | | `option.brand.logo`, `.logo_dark`, `.favicon` | Header and favicon | | `option.policies.tos`, `.privacy`, `.refund` | Footer links to `/policies/terms`, `/policies/privacy`, `/policies/refund` | | `option.links.*` | Social links | | `option.features.*.is_enabled` | Which product sections to show | | `option.pwa.is_enabled` | Whether to link the web manifest | | `option.color_scheme.*` | Light and dark mode, see [Dark mode and colors](/development/themes/dark-mode-and-colors) | | `option.script_tags.*` | Analytics, see [Script tags](/development/themes/script-tags-and-analytics) | ```twig theme={null} {% if option.brand.logo is defined and option.brand.logo %} {{ option.site.name ?? '' }} {% else %} {{ option.site.name ?? '' }} {% endif %} ``` ## Translating Theme strings belong to the `theme` domain: ```twig theme={null} {{ d__('theme', 'Get started') }} {{ dp__('theme', 'heading', 'Pricing') }} ``` A plain `__()` resolves against the application's catalog, not yours. See [Theme localization](/development/themes/localization). ## Markdown and formatting Twig's Intl and Markdown extensions are available, which is useful for settings that hold rich text: ```twig theme={null} {{ option.site.description|default('')|markdown_to_html }} {{ plan.created_at|format_date(locale=locale.code|default('en-US')) }} ``` ## Caching Template caching is on when `CACHE=true` and `DEBUG=false`. During development keep caching off, and after deploying a template change on a cached installation, clear the cache from **Status → Clear cache**. ## Related * [Template objects](/development/themes/template-objects) * [Twig reference](/development/themes/twig-reference) * [Pricing and plans](/development/themes/pricing-and-plans) * [Custom pages](/development/themes/custom-pages) # Theme troubleshooting Source: https://docs.aikeedo.com/development/themes/troubleshooting Fix the problems that come up most often when developing or installing an Aikeedo theme. ## The theme doesn't appear in the admin panel The package failed validation, or it isn't where Aikeedo looks.
The directory is `extra/extensions/{vendor}/{name}` and matches the `name` field.
`type` is `aikeedo-theme`.
`require` includes `heyaikeedo/composer`.
`composer.json` is valid JSON.
Turn on `DEBUG=true` to see the validation error instead of a silently skipped package. ## Styles or scripts don't load `npm run dev` must be running, and `THEME_ASSETS_SERVER` in the Aikeedo `.env` must match its port. The starter serves on 5174. `extra.public` must include `assets` and `.vite`, and the theme must have been installed or reinstalled after the build so those files were copied to `public/e/{vendor}/{name}/`. `THEME_ASSETS_SERVER` is still set. Remove it outside development. ## Template changes do nothing * With `CACHE=true` and `DEBUG=false`, templates are cached. Clear the cache from **Status → Clear cache**. * In development, the dev server copies `static/` into `BUILD_DIR`. If `BUILD_DIR` is wrong, the installed theme never changes. * Check you're editing the repository, not the installed copy, which is overwritten by the next build. ## Twig errors about undefined variables Debug mode enables strict variables: ```twig theme={null} {% if user is defined %}…{% endif %} {{ option.site.name ?? '' }} {{ plans|default([]) }} {{ locale.code|default('en-US') }} ``` `user` and `workspace` exist only for signed-in visitors, `plans` only on the landing page, and `locale` only when your theme has a catalog for the resolved language. ## The build deleted my files The production build empties `BUILD_DIR` before writing. Point it at the theme's own directory, `extra/extensions/{vendor}/{name}`, and nothing else. ## A custom page returns 404
The theme is published, since a theme's entry class only boots while it's active.
The package was installed with `composer require`, so the class autoloads.
`AttributeMapper::addPath()` covers the handler's directory.
The route cache was cleared, or `CACHE=false`.
## Strings aren't translated
The string uses `d__('theme', …)` or `dp__('theme', …)`, not a plain `__()`.
A `theme.po` exists for that language, with `X-Domain: theme`.
The language is enabled in **Settings → Languages**.
Extraction was re-run after the last copy change.
## The favicon 404s `{{ 'favicon.ico'|asset_url }}` resolves to your theme's assets, so either ship that file or fall back to the brand setting: ```twig theme={null} ``` ## Dark mode flashes the wrong colors The mode must be applied in the ``, before the body paints. See [Dark mode and colors](/development/themes/dark-mode-and-colors). ## The site shows the old theme after publishing Clear the cache, and check that the theme's package name matches its directory. Preview separately at `/preview?theme=vendor/name`, which sets a short-lived cookie rather than switching the live site. ## Analytics stopped working after switching themes Your theme has to render the script-tag snippets. Without them the codes configured in the admin panel never load. See [Script tags and analytics](/development/themes/script-tags-and-analytics). ## Where to look | Source | What it tells you | | - | - | | `var/log/app-*.log`, `var/log/error-*.log` | PHP errors, including template failures | | Browser console and network tab | Missing assets, JavaScript errors | | The Vite terminal | Build failures | | **Status** in the admin panel | Cache clearing, and installation health | ## Related * [Build and assets](/development/themes/build-and-assets) * [Theme quickstart](/development/themes/quickstart) * [Local development](/development/local-development) # Twig reference Source: https://docs.aikeedo.com/development/themes/twig-reference Every Twig function, filter, test and global available in an Aikeedo theme template. Theme templates run in the application's Twig environment, so they get its extensions on top of standard Twig. ## Theme assets Resolves a theme asset to a URL: a full URL is returned unchanged, then the dev server is used when `THEME_ASSETS_SERVER` is set, then the Vite manifest, then `/e/{theme}/assets/...`. ```twig theme={null} ``` Resolves an **application** asset through the app's own build manifest. Themes rarely need it; use `asset_url` for your own files. ## Translation All nine gettext helpers are available as both functions and filters. Themes use the `theme` domain, so reach for the `d`-prefixed variants. | Helper | Signature | Use | | - | - | - | | `d__` | `d__(domain, text)` | A theme string | | `dp__` | `dp__(domain, context, text)` | A theme string with a context | | `dn__` | `dn__(domain, singular, plural, count)` | A theme plural | | `dnp__` | `dnp__(domain, context, singular, plural, count)` | A theme plural with a context | | `__` | `__(text)` | A string from the application's own catalog | | `p__` | `p__(context, text)` | An application string with a context | | `n__` | `n__(singular, plural, count)` | An application plural | | `np__` | `np__(context, singular, plural, count)` | An application plural with a context | | `noop__` | `noop__(text)` | Marks a string for extraction without translating it here | ```twig theme={null} {{ d__('theme', 'Get started') }} {{ dp__('theme', 'heading', 'Pricing') }} {{ dn__('theme', '%d seat', '%d seats', count)|format(count) }} ``` A plain `__()` in a theme looks up the application's catalog, not yours, so your translation won't be found and the string won't be extracted into your catalogs. ## Other functions `hash_hmac(algo, data, key)`. Used for identity verification in support widgets. It runs server-side, so the secret stays out of the page. `locale_script(code)` returns the URL of the browser translation catalog for a language, or null. Include it when your JavaScript needs translated strings. `template(string, name = null, strict = false)` compiles a string into a template. It's how administrator-supplied markup is rendered; strict variables are disabled, and unparsable input falls back to being printed verbatim. ```twig theme={null} {{ include(template(option.script_tags.custom.head))|raw }} ``` ## Tests True when an object's class is marked as built into the application, which the admin templates use to distinguish bundled integrations from plugin-provided ones. ## Extensions inherited from Twig | Source | Examples | | - | - | | `twig/intl-extra` | `format_currency`, `format_number`, `format_date`, `format_datetime`, `country_name`, `currency_symbol` | | `twig/markdown-extra` | `markdown_to_html`, `html_to_markdown` | | Twig core | `escape`, `raw`, `json_encode`, `date`, `filter`, `map`, `merge`, `default`, and the rest | ```twig theme={null} {{ plan.price / 100|format_currency(currency.code) }} {{ option.site.description|default('')|markdown_to_html }} ``` ## Globals | Variable | Contents | | - | - | | `option` | Every setting, as a nested object | | `config` | Application configuration, including the model registry | | `version` | The application version | | `license` | The license string, or null | | `theme` | The active theme's package name | | `environment` | `prod`, `dev`, `demo` or `install` | | `nav` | The navigation registry | | `currency` | Code, name, symbol and fraction digits | | `locales` | Every configured language | | `locale` | The language resolved for this request, or null | | `theme_locale` | Deprecated. The language code as a string. Use `locale.code`. | | `env` | The raw environment | | `user`, `workspace` | Only when a visitor is signed in | | `plans` | Only on the landing page | See [Template objects](/development/themes/template-objects) for the full shape of each object. `env` exposes the application's environment variables, including database credentials and secret keys. Read one specific key when you must, such as `env.THEME_ASSETS_SERVER`, and never print or serialize the whole object. ## Namespaces | Prefix | Points at | | - | - | | `@theme/...` | The active theme's directory. Use it for every include and extend in your theme. | | `/templates/...`, `/layouts/...` | Application templates. Themes shouldn't depend on these. | | `@emails/...` | Email templates | ## Strict variables With `DEBUG=true`, Twig raises an error for undefined variables. Guard optional values with `is defined` or `|default(...)`, and test your theme in debug mode before release. ## Related * [Template objects](/development/themes/template-objects) * [Templates and layouts](/development/themes/templates-and-layouts) * [Theme localization](/development/themes/localization) # Users and navigation Source: https://docs.aikeedo.com/development/themes/users-and-navigation Build a theme header that adapts to signed-in visitors, links into the app, and lets people switch language. The public site is seen by guests and by signed-in users. A good header tells them apart, and gets people into the application quickly. ## Guest or signed in ```twig sections/header.twig theme={null}
{% if option.brand.logo is defined and option.brand.logo %} {{ option.site.name ?? '' }} {% else %} {{ option.site.name ?? '' }} {% endif %}
``` `user` is only defined for signed-in visitors, and debug mode errors on undefined variables, so the `is defined` check isn't optional. ## Links into the application | Destination | Path | | - | - | | The app | `/app` | | Account settings | `/app/settings/account` | | Billing | `/app/billing` | | Checkout for a plan | `/app/billing/checkout/{plan_id}` | | Sign in | `/login` | | Sign up | `/signup` | | Sign out | `/logout` | | Terms, privacy, refunds | `/policies/terms`, `/policies/privacy`, `/policies/refund` | Policy pages exist only when the administrator filled them in, so link conditionally: ```twig theme={null} {% if option.policies.tos is defined and option.policies.tos %} {{ d__('theme', 'Terms of service') }} {% endif %} ``` ## Showing workspace details For a signed-in visitor you can show the current workspace, its plan and its credits: ```twig theme={null} {% if user is defined and workspace is defined %} {{ workspace.name }} {% if workspace.subscription %} {{ workspace.subscription.plan.title }} {% endif %} {% endif %} ``` Keep this light. The landing page is a marketing page, and account details belong in the app. ## The language switcher Languages come from `locales`, and the current one from `locale`. Each enabled language is reachable at a URL prefix: ```twig theme={null} {% if locales|filter(l => l.enabled)|length > 1 %}
    {% for item in locales %} {% if item.enabled %}
  • {{ item.label }}
  • {% endif %} {% endfor %}
{% endif %} ``` Setting the cookie is what makes the choice stick on pages without a prefix. ### How the language is resolved `/de-DE/...` wins, if that language is enabled. Their account preference. What the switcher set. The browser's preference. Configured in the admin panel. Themes register routes with an optional `[locale:locale]?` segment so their pages work under a prefix. See [Custom pages](/development/themes/custom-pages). ## Right-to-left languages ```twig theme={null} ``` Use logical CSS properties, such as Tailwind's `ms-*`, `me-*`, `ps-*` and `pe-*`, rather than left and right, so an RTL language lays out correctly. ## Social and footer links ```twig theme={null}
{% for key, url in option.links|default({}) %} {% if url %} {{ key|capitalize }} {% endif %} {% endfor %}

{{ option.business.name|default(option.site.name ?? '') }}

``` ## Related * [Template objects](/development/themes/template-objects) * [Theme localization](/development/themes/localization) * [Templates and layouts](/development/themes/templates-and-layouts) # Mailer Configuration Source: https://docs.aikeedo.com/email/mailer Configure email delivery in Aikeedo using SMTP or Null transport, set sender details, and test email functionality for user communications. Proper email configuration ensures reliable delivery of system notifications, password resets, and user communications. This guide covers mailer transport setup and sender configuration. ## Understanding Mailer Settings Before diving into the configuration process, it's important to understand the key components of Aikeedo's mailer system. ### Mailer Transports Aikeedo supports two types of mailer transports: 1. **Null Transport (Default)** * This option ignores sending emails, making it useful for testing purposes. * No actual emails are sent when this transport is selected. 2. **SMTP Transport** * Sends emails using an SMTP (Simple Mail Transfer Protocol) server. * Requires additional configuration of SMTP settings. If you choose the SMTP Transport, make sure to configure your SMTP settings first. You can find detailed instructions in our [SMTP Configuration Guide](/email/smtp). ### Sender Details Two important fields define how your emails appear to recipients: * **Sender Email**: The email address that will be used as the sender for all system emails. * **Sender Name**: The name that will appear as the sender for all system emails. ## Step-by-Step Configuration Guide Follow these steps to set up your mailer in Aikeedo: ### 1. Access the Admin Panel To access the mailer configuration in Aikeedo, log in to the admin panel using your administrator credentials. Once logged in, navigate to Settings > Email > Mail. This will take you to the mailer configuration page where you can adjust your email settings. ### 2. Configure Mailer Settings 1. In the "General" section, find the "Mailer transport" dropdown menu. 2. Choose between "Null Transport" (for testing) or "SMTP Transport" (for actual email sending). If you select "SMTP Transport", ensure you have properly configured your SMTP settings beforehand. 1. Locate the "Sender details" section. 2. Enter the desired email address in the "Sender email" field (e.g., [noreply@yourdomain.com](mailto:noreply@yourdomain.com)). 3. Specify the name you want recipients to see in the "Sender name" field (e.g., "Aikeedo Support"). ### 3. Save Your Configuration After entering all the necessary information: 1. Review your settings to ensure accuracy. 2. Click the "Save changes" button at the bottom of the page to apply your new mail configuration. Your mailer is now configured! Aikeedo will use these settings for all system-generated emails. ## Testing Your Configuration It's always a good idea to test your email configuration to ensure everything is working correctly: 1. Set up a test user account or use an existing one. 2. Trigger an email-sending action (e.g., password reset, welcome email). 3. Check the receiving inbox to confirm the email was sent and received correctly. If you're using the Null Transport for testing, remember that no actual emails will be sent. You may need to check your application logs or use a debugging tool to verify the email sending process. ## Troubleshooting If you encounter issues with email delivery: * Verify your SMTP settings if using SMTP Transport * Ensure your sender email is correctly formatted and from a valid domain * Check server firewall settings for outgoing SMTP traffic * Consider using a dedicated email service provider for improved deliverability * Review server logs for detailed error messages For advanced configuration, refer to our [SMTP Configuration Guide](/email/smtp). ## Related Guides * [SMTP Setup](/email/smtp) - Configure SMTP server details * [Email Templates](/advanced/email-templates) - Customize email content * [Application Configuration](/setup/configuration) - Complete setup checklist # SMTP Configuration Source: https://docs.aikeedo.com/email/smtp Learn how to set up and configure SMTP for secure and reliable email delivery in Aikeedo. # SMTP Configuration Setting up SMTP (Simple Mail Transfer Protocol) is crucial for ensuring reliable email delivery from your Aikeedo application. This guide will walk you through the process of configuring SMTP settings, whether you're a tech-savvy administrator or new to email server configurations. ## Understanding SMTP SMTP is the standard protocol for sending emails across the Internet. By configuring SMTP in Aikeedo, you ensure that all system-generated emails (such as user notifications, password resets, and marketing communications) are sent reliably and securely. ## Before You Begin Before configuring SMTP settings, you'll need to obtain the following details from your SMTP provider: * SMTP Host (server address) * Port number * Username * Password * Encryption method (TLS/SSL) If you don't have an SMTP server, consider using a reputable third-party service like [SendGrid](https://sendgrid.com/), [Mailgun](https://www.mailgun.com/), [Amazon SES](https://aws.amazon.com/ses/), or [Brevo](https://www.brevo.com/). These services offer reliable email delivery and often provide free tiers for low-volume senders. ## Step-by-Step Configuration Follow these steps to set up SMTP in your Aikeedo application: ### 1. Access the Admin Panel Log in to your Aikeedo admin panel using your administrator credentials. ### 2. Navigate to SMTP Settings In the admin panel, follow this path: **Settings > Email > SMTP** ### 3. Enter SMTP Details Fill in the form with the SMTP details you obtained from your provider: * **SMTP Host**: Enter the address of your SMTP server (e.g., `smtp.gmail.com` for Gmail) * **Port**: Specify the port number (common ports are 25, 465, or 587) * **Username**: Your SMTP server username (often your email address) * **Password**: Your SMTP server password or app-specific password For enhanced security, many providers recommend using app-specific passwords instead of your main account password. Check your email provider's documentation for instructions on generating these. ### 4. Save and Validate Click the "Save changes" button to apply your new SMTP settings. Aikeedo will automatically attempt to validate your configuration before saving. ### 5. Test the Configuration After saving, it's a good practice to send a test email to ensure everything is working correctly: 1. Set up a test user account or use an existing one. 2. Trigger an email-sending action (e.g., password reset, welcome email). 3. Check the receiving inbox to confirm the email was sent and received correctly. ## cPanel SMTP Restrictions If your Aikeedo installation is on a cPanel server, you may encounter issues when trying to use external SMTP servers. This is because cPanel blocks access to external SMTP servers by default as a security measure. ### Resolving cPanel SMTP Restrictions If you're experiencing difficulties sending emails through an external SMTP server on a cPanel-managed hosting account, follow these steps: 1. Contact your hosting provider or server administrator. 2. Request that they disable SMTP restrictions for your account. 3. The server administrator can disable SMTP restrictions through WHM (Web Host Manager) by navigating to: **Home » Security Center » SMTP Restrictions** 4. On this page, they can disable the SMTP restrictions for your specific account or globally for the server. For more information on this process, you can refer to the [cPanel documentation on disabling SMTP restrictions](https://support.cpanel.net/hc/en-us/articles/1500009931961-How-to-disable-SMTP-Restrictions). ## Troubleshooting If you encounter issues with your SMTP configuration, try the following: * Double-check all entered information for typos or errors * Ensure your SMTP provider account is in good standing * Check if your server's IP is blacklisted * Verify that your firewall isn't blocking the necessary ports * If using cPanel, confirm that SMTP restrictions have been disabled If you're using a personal email account (like Gmail) for SMTP, you may need to enable "Less secure app access" or use an app-specific password. However, for production environments, it's recommended to use a dedicated SMTP service. ## Next Steps Once you've successfully configured SMTP, make sure to update your [Mail Settings](/email/mailer) to use SMTP as the transport method. This ensures that all outgoing emails from Aikeedo will use your new SMTP configuration. ## Security Considerations * Regularly update your SMTP password to maintain security * Monitor your email sending patterns to detect any unusual activity * Consider implementing SPF, DKIM, and DMARC records to improve email deliverability and security By following this guide, you should now have a properly configured SMTP setup for your Aikeedo application, ensuring reliable email delivery for all your users and system-generated communications. # AI/ML API Integration Source: https://docs.aikeedo.com/integrations/aimlapi Enhance your Aikeedo platform with AI/ML API's advanced language models. This guide walks you through setting up and leveraging AI/ML API's powerful Chirp models for various AI tasks. **Integration Status: Removed in v5.0** This integration existed to power the Composer (music) tool through the Suno API, which was discontinued on November 27, 2024. Composer and this integration were removed in Aikeedo v5.0, and existing compositions are deleted when you update. See the [v5.0 release notes](/versioning/release-notes#composer-removed). AI/ML API language models can still be added as a custom LLM server. See [OpenAI API Compatibility](/integrations/openai-api-compatibility). The rest of this page applies to v4.x and earlier only. ## Introduction Aikeedo's AI/ML API integration unlocks advanced language processing capabilities for your platform. With access to the Chirp models, you can significantly enhance your AI-powered tools, allowing users to perform a wide range of language-related tasks. ## Setting Up the Integration Follow these steps to connect AI/ML API with your Aikeedo platform: ### Step 1: Obtain Your AI/ML API Key 1. If you don't have an AI/ML API account, [sign up here](https://aimlapi.com/). 2. Once logged in, navigate to your AI/ML API dashboard. 3. In the left sidebar, click on "API Keys" under the "Key Management" section. 4. If you don't have an existing API key, you'll need to generate a new one. 5. Copy your API key—you'll need this for Aikeedo. Keep your API key secure and confidential. It grants access to AI/ML API services and should not be shared publicly. AI/ML API provides an AI Playground where you can test different models and settings. This can be useful for experimenting with the Chirp models before integrating them into your Aikeedo platform. ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to **Settings > AI/ML API**. 3. In the "API" section, enter your AI/ML API key in the "API Key" field. 4. Click **Save changes** to activate the integration. Great job! AI/ML API is now integrated with your Aikeedo platform. ## Aikeedo Tools Powered by AI/ML API AI/ML API integration enhances the following Aikeedo tool: 1. **Composer**: Create, edit, and refine text content using AI/ML API's Chirp language models. ## Best Practices To make the most of your AI/ML API integration: * Experiment with both Chirp models to find the best fit for your use case. * Provide clear and detailed prompts for optimal results. * Consider the complexity and context of your tasks when selecting between v3.5 and v3.0. * Monitor your API usage to manage costs effectively. * Stay updated on any new features or improvements to the Chirp models. ## Troubleshooting If you encounter issues with the AI/ML API integration, try these steps: 1. Verify that your API key is correct and active. 2. Check your AI/ML API account for any usage limits or restrictions. 3. Ensure your Aikeedo platform is up to date. 4. If you receive error messages related to model access or quotas, verify your account status with AI/ML API. 5. For model-specific issues, confirm that your account has access to both Chirp models. 6. If you experience slow response times, consider optimizing your prompts or checking your network connection. Can't find your API Key? Click the "Click here" link below the API Key field in the Aikeedo settings for additional guidance. Remember to review AI/ML API's usage policies and pricing to ensure compliance and manage costs effectively as you scale your AI integration. # Azure Integration Source: https://docs.aikeedo.com/integrations/azure Enhance your Aikeedo platform with Microsoft Azure's advanced AI capabilities. This guide walks you through setting up and leveraging Azure's powerful text-to-speech services for high-quality voice generation. ## Introduction Aikeedo's Azure integration unlocks advanced text-to-speech capabilities for your platform. With access to Azure's Speech API, you can significantly enhance your VoiceOver tool and audio content creation with high-quality, natural-sounding voices. ## Setting Up the Integration Follow these steps to connect Microsoft Azure with your Aikeedo platform: ### Step 1: Set Up Azure Speech Service 1. If you don't have an Azure account, [sign up here](https://azure.microsoft.com/free/). 2. Once logged in, access the Azure portal at [portal.azure.com](https://portal.azure.com). 3. Create a new Speech service resource: * Click on "Create a resource" in the Azure portal. * Search for "Speech" and select "Speech" from the results. * Click "Create" to start setting up the Speech service. * Fill in the required details: * Choose a name for your resource. * Select your subscription. * Choose a resource group or create a new one. * Select a region (this will be your "Location/Region" in Aikeedo). * Choose a pricing tier (Free tier is available for testing). * Click "Review + create" and then "Create" to deploy the Speech service. 4. Once deployment is complete, go to your Speech service resource. 5. In the left menu, under "Resource Management", click on "Keys and Endpoint". 6. You'll find your API key (listed as KEY 1 or KEY 2) and region here. You'll need these for Aikeedo. Keep your API key secure and confidential. It grants access to your Azure services and should not be shared publicly. ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to **Settings > Azure Integrations**. 3. In the "Speech API (TTS)" section: * Select your "Location/Region" from the dropdown menu. * Enter your Azure Speech API key in the "API Key" field. 4. Click **Save changes** to activate the integration. Great job! Azure Speech API is now integrated with your Aikeedo platform. ## Available Voice Types Azure's Text-to-Speech service offers a variety of voice types: * Neural voices * Standard voices * Custom voices (if configured in your Azure account) These voice types offer different levels of quality and naturalness, allowing you to choose the best fit for your specific use case. ## Aikeedo Tools Powered by Azure Azure integration enhances the following Aikeedo tool: 1. **VoiceOver**: Transform text into high-quality, natural-sounding speech using a wide range of voices and languages. ## Best Practices To make the most of your Azure integration: * Experiment with different voice types to find the best fit for your use case. * Consider the language and accent requirements of your project when selecting voices. * Monitor your API usage to manage costs effectively. ## Troubleshooting If you encounter issues with the Azure integration, try these steps: 1. Verify that your API key is correct and active. 2. Ensure you've selected the correct region in Aikeedo that matches your Azure Speech service resource. 3. Check your Azure subscription for any usage limits or restrictions. 4. Confirm you have sufficient credit balance in your Azure account. 5. For voice-specific issues, verify that your account has access to the required voice types. 6. If you receive error messages related to authentication or API calls, double-check your Azure resource configuration. Regularly review your Azure usage and available voice options to ensure smooth integration with Aikeedo. Remember to review Microsoft Azure's usage policies and pricing to ensure compliance and manage costs effectively as you scale your text-to-speech integration. # Claude AI Integration Source: https://docs.aikeedo.com/integrations/claude Integrate Anthropic Claude AI models (Claude Sonnet, Opus, Haiku) into Aikeedo for advanced chat, Canvas documents, and content generation. ## Introduction Claude AI integration provides access to Anthropic's advanced language models, known for strong performance in content generation, coding assistance, and complex reasoning tasks. ## Setting Up the Integration Follow these steps to connect Claude AI with your Aikeedo platform: ### Step 1: Obtain Your Claude AI API Key 1. If you don't have an Anthropic account, [sign up here](https://www.anthropic.com) or contact their sales team for API access. 2. Once you have access, navigate to your Anthropic dashboard. 3. Locate and copy your API key—you'll need this for Aikeedo. Keep your API key secure and confidential. It grants access to Claude AI services and should not be shared publicly. ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to **Settings > Anthropic / Claude AI**. 3. Paste your Claude AI API key into the "API Key" field. 4. Click **Save changes** to activate the integration. Great job! Claude AI is now integrated with your Aikeedo platform. ## Custom API Keys (BYOK) Aikeedo supports Bring Your Own Key (BYOK) functionality for Claude AI integration: * **Workspace-level API keys**: Workspace owners can provide their own Claude AI API key * **System override**: When configured, the workspace-specific API key takes precedence over the system-wide API key * **Credit management**: Custom API keys bypass workspace credit deductions for Claude AI services * **Subscription requirement**: A valid subscription plan and credit balance are still required for other features and API services BYOK is particularly useful for organizations that want to manage their own Claude AI billing and usage directly. For detailed information about BYOK configuration and setup, see the [BYOK documentation](/advanced/byok). ## Aikeedo Tools Powered by Claude AI Claude AI integration enhances the following Aikeedo tools: 1. **Chat**: Engage in sophisticated, context-aware conversations, with Canvas documents and clarifying questions. 2. **Writer**: Answer a template's questions and continue the result in chat. 3. **Utilities**: Generate titles and enhance prompts. ## Best Practices To maximize your Claude AI integration: * Experiment with different models to find the best balance of performance and efficiency for your use case. * Provide clear, detailed instructions to get the most accurate and relevant outputs. * Leverage Claude's ability to handle multi-step tasks by breaking down complex problems. * Regularly review and update your usage to align with Anthropic's evolving best practices. ## Troubleshooting If you encounter issues with the Claude AI integration: 1. **API Key Issues**: * Verify that your API key is correct and active * Check your Anthropic account for any usage limits or restrictions * Ensure your Aikeedo platform is up to date 2. **Model Access and Quota Issues**: * If you receive error messages related to model access or quotas, verify your account status with Anthropic * Ensure your Anthropic account has sufficient credits and the correct billing setup for the models you're trying to use 3. **BYOK Issues**: * If using custom API keys, ensure the workspace-specific key is valid and active * Verify that the custom key has the necessary permissions for required models * For comprehensive BYOK troubleshooting and configuration details, refer to the [BYOK documentation](/advanced/byok) Remember to review Anthropic's usage policies and pricing to ensure compliance and manage costs effectively as you scale your Claude AI integration. # Clipdrop Integration Source: https://docs.aikeedo.com/integrations/clipdrop Enhance your Aikeedo platform with Clipdrop's advanced image generation capabilities. This guide walks you through setting up and leveraging Clipdrop's powerful AI models for creating unique and high-quality images. ## Important Notice Clipdrop uses Stability AI under the hood for its image generation capabilities. For optimal performance and direct access to the latest features, we highly recommend using the Stability AI integration instead of Clipdrop. Learn how to set up and use Stability AI directly in Aikeedo for advanced image generation. ## Introduction Aikeedo's Clipdrop integration unlocks advanced image generation capabilities for your platform. With access to Clipdrop's cutting-edge AI models, you can significantly enhance your Imagine tool, allowing users to create unique and high-quality images from text descriptions. ## Setting Up the Integration Follow these steps to connect Clipdrop with your Aikeedo platform: ### Step 1: Obtain Your Clipdrop API Key 1. If you don't have a Clipdrop account, [sign up here](https://clipdrop.co/). 2. Once logged in, navigate to your Clipdrop dashboard. 3. Look for the API section or API key management area. 4. Generate a new API key if you don't already have one. 5. Copy your API key—you'll need this for Aikeedo. Keep your API key secure and confidential. It grants access to Clipdrop services and should not be shared publicly. ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to **Settings > Clipdrop**. 3. In the "API" section, enter your Clipdrop API key in the "API Key" field. 4. Click **Save changes** to activate the integration. Great job! Clipdrop is now integrated with your Aikeedo platform. ## Aikeedo Tools Powered by Clipdrop Clipdrop integration enhances the following Aikeedo tool: 1. **Imagine**: Create unique and high-quality images from text descriptions using Clipdrop's advanced AI models. ## Best Practices To make the most of your Clipdrop integration: * Provide clear and detailed text prompts for optimal image generation results. * Experiment with different prompt styles to find what works best for your needs. * Consider the style and complexity requirements of your project when crafting prompts. * Monitor your API usage to manage costs effectively. * Regularly update your integration to access the latest features and improvements. ## Troubleshooting If you encounter issues with the Clipdrop integration, try these steps: 1. Verify that your API key is correct and active. 2. Check your Clipdrop account for any usage limits or restrictions. 3. Ensure your Aikeedo platform is up to date. 4. If you receive error messages related to API access or quotas, verify your account status with Clipdrop. 5. If you experience slow response times, consider optimizing your prompts or checking your network connection. Regularly review your Clipdrop usage to ensure smooth integration with Aikeedo. Remember to review Clipdrop's usage policies and pricing to ensure compliance and manage costs effectively as you scale your image generation integration. # AWS S3 Source: https://docs.aikeedo.com/integrations/cloud-storage/aws-s3 Configure AWS S3 cloud storage for file uploads and AI-generated content in Aikeedo. Industry-standard object storage with high durability and availability. ## Overview AWS S3 (Simple Storage Service) is Amazon's industry-standard object storage service, offering high durability, availability, and scalability. It's one of the most popular choices for cloud storage due to its reliability and extensive feature set. **Key features:** * **High durability** - 99.999999999% (11 9's) durability * **Global availability** - Multiple regions worldwide * **Scalable storage** - Virtually unlimited storage capacity * **Security features** - Encryption, access controls, and compliance * **Integration ecosystem** - Works with thousands of AWS services * **S3-compatible API** - Easy integration with existing tools ## Prerequisites Before configuring AWS S3: 1. **AWS Account** - Create an account at [aws.amazon.com](https://aws.amazon.com) 2. **S3 Bucket** - Create a bucket for your files 3. **IAM User** - Create a user with S3 permissions 4. **API Credentials** - Generate access key and secret key 5. **Domain** - Optional custom domain for CloudFront CDN ## Configuration Steps In your AWS Console: 1. Go to [**S3** service](https://console.aws.amazon.com/s3/home) 2. Select your preferred region from the region selector in the top-right corner 3. Click **Create bucket** 4. Choose a unique bucket name (e.g., `your-app-storage`) 5. Use default configuration (sufficient for most use cases) 6. Click **Create bucket** Bucket names must be globally unique across all AWS accounts. Names must be 3-63 characters long, contain only lowercase letters, numbers, dots, and hyphens, and cannot start or end with a dot or hyphen. Create an IAM user with S3 permissions: 1. Go to **IAM** > **Users** > **Create user** 2. Enter username (e.g., `aikeedo-storage`) 3. Leave **"Provide user access to the AWS Management Console"** unchecked (programmatic access only) 4. Click **Next** 5. Select **"Attach policies directly"** 6. Search for and select **AmazonS3FullAccess** policy 7. Click **Next** to review, then **Create user** 8. Go to the user's **Security credentials** tab 9. Click **Create access key** 10. Select **"Application running outside AWS"** as the use case 11. Click **Next** to proceed 12. Copy the **Access key ID** and **Secret access key** 13. Save credentials securely Set up CORS for your domain: 1. Go to your S3 bucket 2. Click **Permissions** tab 3. Scroll to **Cross-origin resource sharing (CORS)** 4. Click **Edit** and add this configuration: ```json theme={null} [ { "AllowedHeaders": ["*"], "AllowedMethods": ["GET"], "AllowedOrigins": ["https://yourdomain.com", "https://www.yourdomain.com"] } ] ``` 5. Click **Save changes** Replace `yourdomain.com` with your actual domain. For development, you can use `*` for AllowedOrigins, but this is not recommended for production. In your admin panel: 1. Go to **Settings** > **Cloud storage** > **AWS S3** 2. Toggle **Status** to **Enabled** 3. Enter **Endpoint**: * Go to your S3 bucket in AWS Console * Copy the **Bucket website endpoint** or use format: `https://your-bucket.s3.region.amazonaws.com/` * For example: `https://my-app-storage.s3.us-east-1.amazonaws.com/` 4. Select **Region** from dropdown (must match your bucket's region) 5. Enter **Custom domain** (optional CloudFront CDN domain) 6. Enter **Bucket name**: Your S3 bucket name 7. Enter **Path prefix** (optional subfolder) 8. Enter **Access key**: Your IAM access key ID 9. Enter **Secret key**: Your IAM secret access key 10. Click **Save changes** Enable AWS S3 as your storage provider: 1. Go to **Settings** > **File storage** 2. In the **Adapter** dropdown, select **AWS S3** 3. Configure **Group files** and **Secure URLs** as needed 4. Click **Save changes** ## Configuration Fields **Required fields:** * **Endpoint** - S3 bucket endpoint URL (e.g., `https://your-bucket.s3.region.amazonaws.com/`) * **Region** - AWS region where your bucket is located * **Bucket name** - Name of your S3 bucket * **Access key** - IAM user access key ID for authentication * **Secret key** - IAM user secret access key for authentication **Optional fields:** * **Custom domain** - Custom domain for CloudFront CDN (if you have CloudFront distribution set up) * **Path prefix** - Optional subfolder within your bucket for organizing files ## Troubleshooting **Access denied errors:** * Verify IAM user has correct permissions for the specific bucket * Check bucket policy settings and public access settings * Ensure access keys are valid and not expired * Verify bucket name matches exactly (case-sensitive) **CORS issues:** * Check CORS configuration in S3 bucket permissions * Verify allowed origins include your domain (with https\://) * Ensure allowed methods include GET (sufficient for Aikeedo) * Wait a few minutes for CORS changes to propagate **Files not uploading:** * Verify bucket name and region are correct * Check network connectivity to AWS * Ensure bucket exists and is accessible * Verify endpoint URL format is correct * Check if bucket has any restrictions or policies blocking uploads **Performance issues:** * Consider using CloudFront CDN for better global performance * Check if you're using the correct region for your users * Monitor AWS CloudWatch for any service issues ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Cloudflare R2 Source: https://docs.aikeedo.com/integrations/cloud-storage/cloudflare-r2 Configure Cloudflare R2 cloud storage for file uploads and AI-generated content in Aikeedo. S3-compatible storage with zero egress fees. ## Overview Cloudflare R2 is an S3-compatible object storage service that offers zero egress fees, making it cost-effective for applications with high data transfer requirements. It's integrated with Cloudflare's global network for optimal performance. ## Prerequisites Before configuring Cloudflare R2: 1. **Cloudflare Account** - Create an account at [cloudflare.com](https://cloudflare.com) 2. **R2 Bucket** - Create a bucket for your files 3. **API Token** - Generate R2 API credentials 4. **Domain** - Optional custom domain setup ## Configuration Steps In your Cloudflare dashboard: 1. Go to **R2 Object Storage** in the left sidebar 2. Click **Create bucket** 3. Enter a unique bucket name (e.g., `your-app-storage`) 4. Choose location: * **Automatic** (recommended) - Cloudflare chooses optimal location * **Specify jurisdiction** - For data residency requirements 5. Select storage class: * **Standard** (recommended) - For objects accessed at least once a month * **Infrequent Access** - For objects accessed less than once a month 6. Click **Create bucket** Bucket names must be globally unique across all Cloudflare accounts and are permanent once created. Choose a name that reflects your application. By default, buckets are not publicly accessible. You can access objects through the API or by binding the bucket to a Worker. Bucket access can be changed to Public at any time. Create R2 API credentials: 1. Go to **R2 Object Storage** in the left sidebar 2. Click **Manage API tokens** 3. Choose token type: * **Account API token** (recommended for production) - Tied to the account, remains active even when you leave the organization * **User API token** (for development) - Tied to your user account, becomes inactive if you leave the organization 4. Click **Create Account API token** or **Create User API token** 5. Configure the token: * **Token name**: Enter a descriptive name (e.g., `aikeedo-storage`) * **Permissions**: Select **Object Read & Write** (allows read, write, and list objects in specific buckets) * **Specify bucket(s)**: Choose **Apply to specific buckets only** and select your bucket * **TTL**: Set to **Forever** or your preferred duration 6. Click **Create User API Token** (or **Create Account API Token**) 7. Copy the **Access Key ID** and **Secret Access Key** from the success page 8. Save credentials securely You will not be able to access your Secret Access Key again after this step. Copy and record both values to avoid losing them. The endpoint format is: `https://.r2.cloudflarestorage.com/`. You can copy this directly from your R2 bucket settings. Set up CORS for your domain: 1. Go to your R2 bucket 2. Click **Settings** tab 3. Scroll to **CORS Policy** section 4. Click **Edit** button 5. In the JSON editor, configure the CORS policy: ```json theme={null} [ { "AllowedOrigins": [ "https://yourdomain.com", "https://www.yourdomain.com" ], "AllowedMethods": [ "GET" ] } ] ``` 6. Click **Save** Replace `yourdomain.com` with your actual domain. For development, you can use `["*"]` for AllowedOrigins, but this is not recommended for production. The CORS policy uses JSON format in Cloudflare R2. Make sure your JSON syntax is valid before saving. In your admin panel: 1. Go to **Settings** > **Cloud storage** > **Cloudflare R2** 2. Toggle **Status** to **Enabled** 3. Enter **S3 API Endpoint**: * Go to your R2 bucket settings in Cloudflare dashboard * Copy the **S3 API** URL from the General section * Paste it into the S3 API Endpoint field 4. Enter **Public access domain**: * Use your custom domain (e.g., `https://cdn.yourdomain.com`) or R2.dev subdomain * **Must include the `https://` protocol** * If you've enabled Secure URLs, include the S3 API endpoint here * Otherwise, URLs will be public While Cloudflare R2 URLs are publicly accessible by design, Aikeedo ensures security by using hard-to-guess unique addresses for all uploaded files. 5. Enter **Bucket name**: Your R2 bucket name 6. Enter **Path prefix** (optional subfolder) 7. Enter **Access key ID**: Your R2 access key ID 8. Enter **Secret access key**: Your R2 secret access key 9. Click **Save changes** Enable Cloudflare R2 as your storage provider: 1. Go to **Settings** > **File storage** 2. In the **Adapter** dropdown, select **Cloudflare R2** 3. Configure **Group files** and **Secure URLs** as needed 4. Click **Save changes** ## Configuration Fields **Required fields:** * **S3 API Endpoint** - R2 S3 API endpoint URL (copy from bucket settings General section) * **Public access domain** - Public domain for accessing files (must include `https://` protocol, use custom domain or R2.dev subdomain) * **Bucket name** - Name of your R2 bucket * **Access key ID** - R2 access key ID for authentication * **Secret access key** - R2 secret access key for authentication **Optional fields:** * **Path prefix** - Optional subfolder within your bucket for organizing files ## Troubleshooting **Access denied errors:** * Verify API token has correct permissions (Object Read & Write recommended) * Check bucket name matches exactly * Ensure S3 API endpoint format is correct: `https://.r2.cloudflarestorage.com/` * Verify access keys are valid and not expired * Check if token is scoped to the correct bucket **CORS issues:** * Check CORS configuration in bucket settings using the JSON editor * Verify allowed origins include your domain (with https\://) * Ensure allowed methods include GET (sufficient for Aikeedo) * Validate JSON syntax is correct before saving **Files not uploading:** * Verify bucket name and endpoint are correct * Check network connectivity to Cloudflare * Ensure bucket exists and is accessible * Verify API token permissions are sufficient ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Digital Ocean Spaces Source: https://docs.aikeedo.com/integrations/cloud-storage/digital-ocean-spaces Configure Digital Ocean Spaces cloud storage for file uploads and AI-generated content in Aikeedo. S3-compatible storage with simple pricing. ## Overview Digital Ocean Spaces is an S3-compatible object storage service that offers simple pricing, easy setup, and global CDN integration. It's an excellent choice for developers who want AWS S3 compatibility without the complexity of AWS services. **Key features:** * **Predictable pricing** - Simple, transparent pricing model * **Built-in CDN** - Global content delivery network included * **Unlimited buckets** - Create up to 100 buckets per subscription * **Custom subdomain** - Use your own domain for file delivery * **S3-compatible API** - Easy integration with existing tools ## Prerequisites Before configuring Digital Ocean Spaces: 1. **DigitalOcean Account** - Create an account at [digitalocean.com](https://digitalocean.com) 2. **Space** - Create a Space for your files 3. **API Keys** - Generate Spaces access keys 4. **Domain** - Optional custom domain for CDN ## Configuration Steps In your DigitalOcean control panel: 1. Go to **Spaces Object Storage** in the left sidebar 2. Click **Create Bucket** 3. Choose a datacenter region (e.g., Frankfurt FRA1, San Francisco SFO3) 4. Optionally enable **CDN** for faster delivery 5. Enter a unique bucket name (e.g., `your-app-files`) 6. Select a project (e.g., `aikeedo`) 7. Click **Create a Spaces Bucket** Bucket names must be globally unique across all DigitalOcean accounts. Names must be in lowercase, 3-63 characters long, and may contain dashes. **Cannot contain dots (.) or other special characters.** Create API keys for Spaces access: 1. Go to **Spaces Object Storage** in the left sidebar 2. Click the **Access Keys** tab 3. Click **Generate New Key** 4. In the **Create Access Key** dialog: * Select **Limited Access** (recommended) or **Full Access** * If using Limited Access: * Select specific buckets from the list * Choose **Read/Write/Delete** permissions for each bucket (required for Aikeedo) * Enter a name for the key (e.g., `aikeedo-access`) * Note: Key names can only contain alphanumeric characters, dashes and periods 5. Click **Create Access Key** 6. Copy the **Access Key** and **Secret Key** 7. Save credentials securely API keys provide access to your Spaces. Store them securely. Set up CORS for your domain: 1. Go to your Space settings 2. Click **Settings** tab 3. Scroll to **CORS Configurations** 4. Click **Add a Rule** to open **Advanced CORS Options** 5. Configure the CORS settings: * **Origin**: `https://yourdomain.com` (or `*` for all origins) * **Allowed Methods**: Check `GET` (sufficient for Aikeedo) * **Allowed Headers**: No special headers required for Aikeedo * **Access Control Max Age**: `3000` (or `0` for no caching) 6. Click **Save CORS Configuration** CDN and CORS configurations may not apply immediately. Wait a few moments and try again if you encounter issues. In your admin panel: 1. Go to **Settings** > **Cloud storage** > **Digital Ocean Spaces** 2. Toggle **Status** to **Enabled** 3. Enter **Origin endpoint**: * Go to your Space in DigitalOcean * Copy the **Origin Endpoint** URL (e.g., `https://cdnaikeedocom.fra1.digitaloceanspaces.com`) * Paste it into the Origin endpoint field 4. Enter **Custom domain** (optional CDN domain) 5. Enter **Bucket name**: Your Space name 6. Enter **Path prefix** (optional subfolder) 7. Enter **Access key**: Your Spaces access key 8. Enter **Secret key**: Your Spaces secret key 9. Click **Save changes** Enable Digital Ocean Spaces as your storage provider: 1. Go to **Settings** > **File storage** 2. In the **Adapter** dropdown, select **Digital Ocean Spaces** 3. Configure **Group files** and **Secure URLs** as needed 4. Click **Save changes** ## Configuration Fields **Required fields:** * **Origin endpoint** - Spaces endpoint URL (e.g., `https://your-space.region.digitaloceanspaces.com`) * **Bucket name** - Name of your DigitalOcean Space * **Access key** - Spaces access key for authentication * **Secret key** - Spaces secret key for authentication **Optional fields:** * **Custom domain** - Custom domain for CDN (if you have a custom domain for your Space) * **Path prefix** - Optional subfolder within your Space for organizing files ## Troubleshooting **Access denied errors:** * Verify API keys are correct and active * Check Space name matches exactly * Ensure Space is not restricted **CORS issues:** * Check CORS configuration in Space settings * Verify allowed origins include your domain * Ensure allowed methods include required operations **Files not uploading:** * Verify region in endpoint URL * Check network connectivity to DigitalOcean * Ensure Space exists and is accessible ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # MinIO Source: https://docs.aikeedo.com/integrations/cloud-storage/minio Configure MinIO self-hosted object storage for file uploads and AI-generated content in Aikeedo. Complete control over your data with S3-compatible API. ## Overview MinIO AIStor is a high-performance, S3-compatible object storage server that you can self-host. It gives you complete control over your data while maintaining compatibility with S3 APIs, making it perfect for private cloud deployments or when you need full data sovereignty. **Key features:** * **Self-hosted** - Complete control over your data and infrastructure * **S3-compatible API** - Easy integration with existing S3 tools and libraries * **High performance** - Optimized for speed and efficiency * **Data sovereignty** - Keep your data on your own infrastructure * **Enterprise features** - Advanced security, monitoring, and management MinIO integration is available only if the Cloud Storage plugin is purchased from the [Aikeedo Marketplace](https://aikeedo.com/marketplace/?utm_source=docs\&utm_medium=content). ## Prerequisites Before configuring MinIO: 1. **Cloud Storage Plugin** - Purchase from [Aikeedo Marketplace](https://aikeedo.com/marketplace/?utm_source=docs\&utm_medium=content) 2. **MinIO AIStor Installation** - Follow the [official installation guide](https://docs.min.io/enterprise/aistor-object-store/) 3. **Bucket** - Create a bucket for your files 4. **Access Keys** - Generate API credentials 5. **Network Access** - Ensure Aikeedo can reach MinIO ## Configuration Steps Open the AIStor web console: 1. Navigate to your AIStor console URL 2. Login with your admin credentials 3. Ensure you have the necessary permissions for bucket and access key management For detailed installation and setup instructions, refer to the [official AIStor installation guide](https://docs.min.io/enterprise/aistor-object-store/). Create a bucket for your files: 1. In the AIStor console, go to **Buckets** 2. Click **Create Bucket** 3. Enter bucket name (e.g., `aikeedo-files`) 4. Choose access policy (Private recommended) 5. Click **Create Bucket** For detailed bucket management, refer to the [official bucket management documentation](https://docs.min.io/enterprise/aistor-object-store/administration/console/managing-objects/). Generate API credentials: 1. Go to **Access Keys** in the AIStor console 2. Click **Create Access Key** 3. Enter a name for the key (e.g., `aikeedo-access`) 4. Copy the **Access Key** and **Secret Key** 5. Save credentials securely For detailed access management, refer to the [official IAM documentation](https://docs.min.io/enterprise/aistor-object-store/administration/iam/access/). In your admin panel: 1. Go to **Settings** > **Cloud storage** > **MinIO** 2. Toggle **Status** to **Enabled** 3. Enter **Origin endpoint**: `http://your-server:port` (use your configured port) 4. Enter **Custom domain** (optional domain for MinIO) 5. Enter **Bucket name**: Your MinIO bucket name 6. Enter **Path prefix** (optional subfolder) 7. Enter **Access key**: Your MinIO access key 8. Enter **Secret key**: Your MinIO secret key 9. Click **Save changes** ## Configuration Fields **Required fields:** * **Origin endpoint** - MinIO server endpoint URL (e.g., `http://your-server:port`) * **Bucket name** - Name of your MinIO bucket * **Access key** - MinIO access key for authentication * **Secret key** - MinIO secret key for authentication **Optional fields:** * **Custom domain** - Custom domain for serving files through reverse proxy * **Path prefix** - Optional subfolder within your bucket for organizing files For detailed server configuration options, refer to the [official core settings documentation](https://docs.min.io/enterprise/aistor-object-store/reference/aistor-server/settings/core/?tab=object-store-cli-options-configuration-setting). ## Troubleshooting **Connection refused:** * Check if MinIO server is running * Verify the configured port is open and accessible * Check firewall settings * Ensure correct endpoint URL **Access denied errors:** * Verify access keys are correct * Check bucket name matches exactly * Ensure bucket exists and is accessible * Verify network connectivity **Files not uploading:** * Check server resources (CPU, RAM, disk) * Verify network latency between Aikeedo and MinIO * Ensure data directory is accessible * Check for disk errors ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Cloud Storage Source: https://docs.aikeedo.com/integrations/cloud-storage/overview Configure cloud storage providers for file uploads and AI-generated content in Aikeedo. Choose from AWS S3, Digital Ocean Spaces, Wasabi, Cloudflare R2, or MinIO. ## Overview The Cloud Storage plugin extends Aikeedo with support for multiple cloud storage providers, enabling you to store user uploads and AI-generated files in the cloud instead of local storage. This improves performance, scalability, and reliability for your AI SaaS platform. The Cloud Storage plugin is available for purchase from the [Aikeedo Marketplace](https://aikeedo.com/marketplace/?utm_source=docs\&utm_medium=content). ## Supported Providers The Cloud Storage plugin supports the following providers: Amazon Web Services Simple Storage Service - Industry standard with high durability and availability. S3-compatible storage with simple pricing and easy setup. S3-compatible storage with zero egress fees. High-performance cloud storage with S3-compatible API. Self-hosted object storage server for complete control. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Wasabi Source: https://docs.aikeedo.com/integrations/cloud-storage/wasabi Configure Wasabi cloud storage for file uploads and AI-generated content in Aikeedo. High-performance S3-compatible storage with competitive pricing. ## Overview Wasabi is a high-performance cloud storage service that offers S3-compatible API with competitive pricing and no egress fees. It's designed for businesses that need reliable, fast storage without the complexity of traditional cloud providers. **Key features:** * **No egress fees** - Download as much as you want without additional charges * **S3-compatible API** - Full AWS S3 API compatibility with additional features * **Always consistent** - Immediate consistency for all operations (no eventual consistency) * **11 9's durability** - Enterprise-grade reliability * **Hot cloud storage** - Fast access to all data * **Global availability** - Multiple regions worldwide ## Prerequisites Before configuring Wasabi: 1. **Wasabi Account** - Create an account at [wasabi.com](https://wasabi.com) 2. **Bucket** - Create a bucket for your files 3. **Access Keys** - Generate API credentials 4. **Region** - Choose appropriate region ## Configuration Steps In your Wasabi console: 1. On the Wasabi menu, click **Buckets** 2. In the upper right of the Console panel, click **Create Bucket** 3. Enter a unique DNS-compliant bucket name (e.g., `your-app-storage`) 4. Select the region where you want the bucket to reside 5. Click **Create Bucket** to create immediately, or click **Next** to configure additional properties 6. If continuing with setup, review bucket properties (versioning, logging, replication, tags) and click **Create Bucket** Bucket names must be globally unique across all Wasabi accounts. Names must be 3-63 characters long, begin with a lowercase letter or number, and consist of lowercase letters, numbers, periods, and/or dashes. Cannot contain underscores, end with a dash, have consecutive periods, or use dashes adjacent to periods. Generate API credentials: 1. Follow the steps in [Creating a User Account and Access Key](https://docs.wasabi.com/docs/creating-a-user-account-and-access-key#creating-a-user) 2. Create a new user account or use an existing one 3. Generate access keys for the user 4. Copy the **Access Key** and **Secret Key** 5. Save credentials securely Access keys provide full access to your Wasabi account. Store them securely. Set up CORS for your domain: 1. Go to your bucket settings 2. Click **Permissions** tab 3. Scroll to **CORS Configuration** 4. Click **Edit** button 5. In the JSON editor, configure the CORS policy: ```json theme={null} [ { "AllowedOrigins": [ "https://yourdomain.com", "https://www.yourdomain.com" ], "AllowedMethods": [ "GET" ], "AllowedHeaders": [ "*" ], "MaxAgeSeconds": 3000 } ] ``` 6. Click **Save** Wasabi uses JSON format for CORS configuration. Wasabi automatically provides CORS headers when an Origin header is present in requests, but you can also configure custom CORS policies for more specific control. For detailed CORS configuration, refer to the [official Wasabi CORS documentation](https://docs.wasabi.com/docs/cross-origin-resource-sharing-cors). Replace `yourdomain.com` with your actual domain. The CORS policy uses JSON format in Wasabi. Make sure your JSON syntax is valid before saving. In your admin panel: 1. Go to **Settings** > **Cloud storage** > **Wasabi** 2. Toggle **Status** to **Enabled** 3. Enter **Endpoint**: `https://s3..wasabisys.com` (replace `` with your actual region code) 4. Select **Region** from dropdown 5. Enter **Custom domain** (optional CDN domain) 6. Enter **Bucket name**: Your Wasabi bucket name 7. Enter **Path prefix** (optional subfolder) 8. Enter **Access key**: Your Wasabi access key 9. Enter **Secret key**: Your Wasabi secret key 10. Click **Save changes** Enable Wasabi as your storage provider: 1. Go to **Settings** > **File storage** 2. In the **Adapter** dropdown, select **Wasabi** 3. Configure **Group files** and **Secure URLs** as needed 4. Click **Save changes** ## Configuration Fields **Required fields:** * **Endpoint** - Wasabi S3 endpoint URL (e.g., `https://s3.us-east-1.wasabisys.com`) * **Region** - Wasabi region where your bucket is located * **Bucket name** - Name of your Wasabi bucket * **Access key** - Wasabi access key for authentication * **Secret key** - Wasabi secret key for authentication **Optional fields:** * **Custom domain** - Custom domain for serving files through CDN * **Path prefix** - Optional subfolder within your bucket for organizing files ## Troubleshooting **Access denied errors:** * Verify access keys are correct and active * Check bucket name matches exactly * Ensure bucket exists in the correct region * Verify endpoint URL includes correct region **CORS issues:** * Check CORS configuration in bucket settings * Verify allowed origins include your domain (with https\://) * Ensure allowed methods include GET (sufficient for Aikeedo) * Test with browser developer tools **Files not uploading:** * Verify bucket name and region are correct * Check network connectivity to Wasabi * Ensure bucket exists and is accessible * Verify endpoint URL format is correct ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Cohere AI Integration Source: https://docs.aikeedo.com/integrations/cohere Enhance your Aikeedo platform with Cohere's advanced language AI models. This guide walks you through setting up and leveraging Cohere's powerful capabilities for chat and content creation. ## Introduction Integrating Cohere AI into your Aikeedo platform unlocks a range of powerful language AI capabilities. Cohere's models excel in natural language understanding, generation, and task completion, making them ideal for enhancing your chat and writing tools. ## Setting Up the Integration Follow these steps to connect Cohere AI with your Aikeedo platform: ### Step 1: Obtain Your Cohere API Key 1. If you don't have a Cohere account, [sign up here](https://cohere.ai/). 2. Once logged in, navigate to your Cohere dashboard. 3. Locate and copy your API key from the [API Keys page](https://dashboard.cohere.com/api-keys)—you'll need this for Aikeedo. Keep your API key secure and confidential. It grants access to Cohere AI services and should not be shared publicly. ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to **Settings > Cohere AI**. 3. Paste your Cohere API key into the designated "API Key" field. 4. Click **Save changes** to activate the integration. Excellent! Cohere AI is now integrated with your Aikeedo platform. ## Aikeedo Tools Powered by Cohere AI Cohere AI integration enhances the following Aikeedo tools: 1. **Chat**: Engage in intelligent, context-aware conversations with users. 2. **Writer**: Answer a template's questions and continue the result in chat. 3. **Utilities**: Generate titles and enhance prompts. ## Best Practices To maximize your Cohere AI integration: * Experiment with different models to find the best balance of performance and efficiency for your use case. * Provide clear and specific prompts to get the most accurate and relevant outputs. * Utilize Cohere's strength in understanding context by providing relevant background information in your prompts. * Regularly review and update your usage to align with Cohere's evolving best practices and model capabilities. ## Troubleshooting If you encounter issues with the Cohere AI integration: 1. Verify that your API key is correct and active. 2. Check your Cohere account for any usage limits or restrictions. 3. Ensure your Aikeedo platform is up to date. 4. If you receive error messages related to model access or quotas, verify your account status with Cohere. Remember to review Cohere's usage policies and pricing to ensure compliance and manage costs effectively as you scale your Cohere AI integration. # CurrencyAPI Integration Source: https://docs.aikeedo.com/integrations/currency-api Integrate CurrencyAPI for real-time currency exchange rates in Aikeedo to support multi-currency pricing and automatic conversion. ## Introduction CurrencyAPI integration enables automatic currency conversion in your Aikeedo platform. This is essential when you accept payments in multiple currencies but your payment gateway only supports specific currencies, or when you want to display prices in users' local currencies. ## Prerequisites Before you begin, ensure you have: * An active [CurrencyAPI account](https://currencyapi.com/) * Access to your Aikeedo admin panel * Multi-currency payment requirements ## Why Use a Currency Rate Provider? Using a currency rate provider like CurrencyAPI is **highly recommended** for several reasons: 1. **MRR Calculation**: Monthly Recurring Revenue (MRR) calculations depend on accurate exchange rates 2. **Analytics Accuracy**: Revenue reporting and analytics require proper currency conversion 3. **Multi-Currency Support**: Enable pricing and payments in multiple currencies 4. **Automatic Conversion**: Seamlessly convert between currencies during checkout The default currency rate provider is set to "None" (null provider). Without a currency rate provider, features like MRR calculation will not work correctly, and multi-currency support will be limited. ## How CurrencyAPI Works in Aikeedo CurrencyAPI provides real-time exchange rates that Aikeedo uses to: 1. **Automatic Currency Conversion**: Convert between currencies during checkout 2. **Multi-Currency Support**: Display prices in different currencies 3. **Payment Gateway Compatibility**: Convert to supported currencies when processing payments 4. **Accurate Financial Metrics**: Calculate MRR and other revenue metrics correctly If your selected currency isn't directly supported by your payment gateway (Stripe or PayPal), Aikeedo automatically converts it to a supported currency using CurrencyAPI rates during checkout. ### Update Frequency Aikeedo fetches currency rates from CurrencyAPI **once every 4 hours**, which means: * **6 API requests per day** * **\~180 API requests per month** The free tier offers 300 requests per month, which is more than sufficient for Aikeedo's usage pattern. You don't need a paid plan for standard use! ## Step-by-Step Setup 1. Visit [CurrencyAPI.com](https://currencyapi.com/) 2. Click "Get Free API Key" or "Sign Up" 3. Complete the registration process 4. Verify your email address CurrencyAPI offers a free tier with 300 requests per month, which is suitable for testing and small-scale deployments. 1. Log in to your CurrencyAPI dashboard 2. Navigate to your account dashboard 3. Locate your API key (it will be displayed prominently) 4. Copy the API key for use in Aikeedo Keep your API key secure and confidential. Do not share it publicly or commit it to version control. 1. Log in to your Aikeedo admin panel 2. Navigate to **Settings > Billing** 3. Locate the "Currency Rate Provider" dropdown 4. Select **CurrencyAPI** from the options (default is "None") 5. Enter your CurrencyAPI API key in the "API Key" field 6. Click "Save changes" to activate the integration The default currency rate provider is "None" (null provider). Changing it to CurrencyAPI enables proper MRR calculations and multi-currency support. CurrencyAPI is now integrated with your Aikeedo platform! 1. Go to **Settings > General** (or Billing) 2. Set a currency that's not directly supported by your payment gateway 3. Create a test subscription or purchase 4. Verify that currency conversion happens correctly during checkout Monitor your CurrencyAPI dashboard to see API requests and ensure the integration is working properly. ## Use Cases ### Multi-Currency Pricing Display subscription prices in multiple currencies while accepting payments through a single payment gateway. **Example:** * Your payment gateway (Stripe) supports USD, EUR, GBP * You want to offer pricing in JPY, AUD, CAD * CurrencyAPI converts these currencies to USD during checkout ### Local Currency Display Show prices in users' local currencies for better user experience, even if payments are processed in a different currency. ### Exchange Rate Management Keep exchange rates up-to-date automatically without manual intervention, ensuring fair pricing across all currencies. ## Configuration Options ### Default Currency Set your default currency in **Settings > Billing**: ``` Settings > Billing > Default Currency ``` This is the base currency for your platform. All other currencies will be converted relative to this currency. ### Supported Currencies CurrencyAPI supports 150+ world currencies, including: * USD (US Dollar) * EUR (Euro) * GBP (British Pound) * JPY (Japanese Yen) * AUD (Australian Dollar) * CAD (Canadian Dollar) * CHF (Swiss Franc) * CNY (Chinese Yuan) * And many more... View the complete list at [CurrencyAPI Currencies](https://currencyapi.com/docs/currencies). ## API Rate Limits CurrencyAPI offers different pricing tiers: * **300 requests per month** * **Perfect for Aikeedo**: With updates every 4 hours, Aikeedo uses only \~180 requests per month * Suitable for production deployments * No credit card required The free tier is **sufficient for most Aikeedo installations**, including production environments! * Higher request limits (5,000 to 100,000+ per month) * More frequent update options * Consider only if you need custom update frequencies * [View pricing](https://currencyapi.com/pricing) Since Aikeedo fetches rates every 4 hours (180 API calls/month), the free tier provides a comfortable buffer. You only need a paid tier if you modify the update frequency or have multiple Aikeedo installations using the same API key. ## How Aikeedo Uses Exchange Rates 1. **Update Schedule**: Rates are fetched from CurrencyAPI every 4 hours (6 times per day) 2. **Caching**: Exchange rates are cached between updates to minimize API requests 3. **MRR Calculations**: Cached rates are used for calculating Monthly Recurring Revenue and other financial metrics 4. **Checkout Conversion**: When a user checks out: * Their selected currency is checked against payment gateway support * If unsupported, CurrencyAPI rates convert it to a supported currency * Payment is processed in the supported currency 5. **Accuracy**: Regular updates ensure fair and accurate conversions while staying within free tier limits With updates every 4 hours, Aikeedo balances rate accuracy with API efficiency, using only \~180 requests per month. ## Troubleshooting ### Exchange Rates Not Updating **Symptoms:** * Prices showing outdated exchange rates * Currency conversion seems incorrect **Solution:** 1. Verify your CurrencyAPI key is correct 2. Check that you haven't exceeded your API rate limit 3. Clear the application cache from the admin panel Status page 4. Verify CurrencyAPI service status at [status.currencyapi.com](https://status.currencyapi.com/) ### Currency Conversion Not Working **Symptoms:** * Checkout fails with currency errors * Prices not converting at checkout **Solution:** 1. Ensure CurrencyAPI is selected as the Currency Rate Provider 2. Verify your API key is entered correctly 3. Check that the default currency is set in **Settings > Billing** 4. Ensure the currencies you're using are supported by CurrencyAPI 5. Review error logs for specific error messages ### API Key Invalid Error **Symptoms:** * Error message about invalid API key * Currency conversion fails **Solution:** 1. Double-check your API key in the CurrencyAPI dashboard 2. Ensure there are no extra spaces when pasting the key 3. Verify your CurrencyAPI account is active 4. Check if you've exceeded your API rate limit ## Best Practices 1. **Always Use a Currency Rate Provider**: Even for single-currency setups, enable CurrencyAPI for proper MRR calculations 2. **Start with Free Tier**: The free tier (300 requests/month) is sufficient for Aikeedo's usage (\~180 requests/month) 3. **Monitor API Usage**: Check your CurrencyAPI dashboard occasionally to ensure you're within limits 4. **Test Before Launch**: Test currency conversion with different currencies before going live 5. **Keep API Key Secure**: Store your API key securely and never commit it to version control 6. **Plan for Growth**: If you run multiple Aikeedo installations, consider a paid tier or use separate API keys ## Alternative: No Currency Rate Provider The default setting is "None" (null provider), which means: * All transactions use the default currency only * No automatic conversion occurs * Users must pay in the currency you specify * **MRR calculations and revenue analytics will not work correctly** * Multi-currency support is disabled When set to "None," attempting to use currencies not supported by your payment gateway will result in checkout errors. Additionally, features that depend on currency conversion (like MRR calculation) will not function properly. **Recommendation:** Even if you only accept one currency, setting up CurrencyAPI is highly recommended for accurate financial reporting and future flexibility. The free tier is sufficient and requires no ongoing costs. ## Related Guides * [Billing Overview](/billing/overview) - Configure default currency and billing settings * [Stripe Integration](/integrations/payment-gateways/stripe) - Set up Stripe payment gateway * [PayPal Integration](/integrations/payment-gateways/paypal) - Set up PayPal payment gateway * [Plans & Subscriptions](/billing/plans-snapshots-subscriptions) - Create pricing plans ## Additional Resources * [CurrencyAPI Documentation](https://currencyapi.com/docs) * [CurrencyAPI Pricing](https://currencyapi.com/pricing) * [Supported Currencies List](https://currencyapi.com/docs/currencies) * [CurrencyAPI Status Page](https://status.currencyapi.com/) With CurrencyAPI integrated, your Aikeedo platform can now handle multi-currency transactions seamlessly! # Custom Scripts Integration Source: https://docs.aikeedo.com/integrations/custom-scripts Enhance your Aikeedo platform with custom HTML, CSS, and JavaScript. This guide walks you through adding custom scripts and content to your Aikeedo website. ## Introduction Aikeedo's Custom Scripts feature allows you to add custom HTML, CSS, and JavaScript to your platform. This powerful functionality enables you to extend the capabilities of your Aikeedo website, integrate additional tools, or customize the appearance and behavior of your site. ## Setting Up Custom Scripts Follow these steps to add custom scripts to your Aikeedo platform: 1. Log in to your Aikeedo admin panel. 2. Navigate to Settings. 3. Find and click on "Script Tags" in the Integrations section. 4. Look for the "Custom tags" option. ## Configuration Options In the Custom tags section, you'll see three main areas for adding custom content: ### Head Content * This is where you can add custom `` tags, CSS links, or other content that belongs in the `` section of your HTML. * Content added here will be injected right after the `` tag of your website. ### Body Content * Use this area to add custom HTML, JavaScript, or other content that you want to appear in the main body of your website. * Content added here will be injected right after the `` tag of your website. ### Footer Content * This section is ideal for adding tracking scripts, analytics code, or other content that should appear at the end of your web pages. * Content added here will be injected right before the closing `` tag of your website. ## Adding Custom Scripts 1. Decide which section (Head, Body, or Footer) is most appropriate for your custom content. 2. Enter your custom HTML, CSS, or JavaScript into the corresponding text area. 3. Click the "Save changes" button at the bottom of the page to apply your custom scripts. Your custom scripts are now integrated with your Aikeedo platform! ## Best Practices To make the most of the Custom Scripts feature: * Test your custom scripts thoroughly before adding them to your live site. * Use the appropriate section for each type of content (e.g., CSS in the Head, JavaScript in the Footer). * Be cautious when adding third-party scripts, as they can affect your site's performance and security. * Keep your custom scripts organized and commented for easy maintenance. * Regularly review and update your custom scripts to ensure they're still necessary and functioning correctly. Adding custom scripts can potentially break your website's functionality or compromise its security. Only add scripts from trusted sources and that you fully understand. ## Troubleshooting If you experience issues after adding custom scripts: 1. Check your browser's console for any JavaScript errors. 2. Verify that your custom HTML is well-formed and doesn't conflict with existing page elements. 3. Ensure that any external resources (like CSS or JavaScript files) are accessible and loading correctly. 4. If your site's functionality is broken, try removing the custom scripts one by one to identify the problematic code. 5. Consider using browser developer tools to debug and test your custom scripts. It's a good practice to keep a backup of your original configuration before making significant changes with custom scripts. # ElevenLabs Integration Source: https://docs.aikeedo.com/integrations/elevenlabs Enhance your Aikeedo platform with ElevenLabs' advanced text-to-speech and voice AI capabilities. This guide walks you through setting up and leveraging ElevenLabs' powerful models for voice generation and audio processing. ## Introduction Aikeedo's ElevenLabs integration unlocks a world of AI-powered voice capabilities for your platform. From natural-sounding text-to-speech to voice isolation, ElevenLabs' advanced models can enhance various aspects of your Aikeedo experience. ## Setting Up the Integration Follow these simple steps to connect ElevenLabs with your Aikeedo platform: ### Step 1: Obtain Your ElevenLabs API Key 1. If you don't have an ElevenLabs account, [sign up here](https://elevenlabs.io/sign-up). 2. Once logged in, navigate to your ElevenLabs dashboard. 3. In the bottom left corner of the page, click on your profile name. 4. In the dropdown menu, select "API Keys" to access your API key management page. 5. On the API Keys page, you'll find your existing API key or options to create a new one. 6. If you don't already have an API key, click on "Create new API key". 7. Copy the generated API key—you'll need this for Aikeedo. Keep your API key secure and confidential. It grants access to ElevenLabs services and should not be shared publicly. ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to **Settings > ElevenLabs**. 3. Paste your ElevenLabs API key into the designated field. 4. Click **Save Changes** to activate the integration. Congratulations! ElevenLabs is now integrated with your Aikeedo platform. ## Voice Synchronization Aikeedo synchronizes the available voices from your ElevenLabs account every 4 hours. This means that any new voices added to your ElevenLabs account library may take up to 4 hours to appear in the Aikeedo app. Only voices available through the ElevenLabs API can be used with Aikeedo. Community-created voices are not available through the API by default. To use community voices, you must first add them to your ElevenLabs account voice library. Once added, they will become available through the voice list API and subsequently in Aikeedo after the next synchronization. ## Aikeedo Tools Powered by ElevenLabs ElevenLabs integration enhances the following Aikeedo tools: 1. **VoiceOver**: Transform text into natural-sounding speech with a wide range of voices and languages. 2. **Voice Isolator**: Separate and enhance voice audio from background noise. ## Best Practices To make the most of your ElevenLabs integration: * Experiment with different voices to find the best fit for your use case. * Use clear and well-formatted text input for optimal text-to-speech results. * Consider the language and accent requirements of your project when selecting voices. * Monitor your API usage to manage costs effectively. * Regularly check your ElevenLabs account for new voices and add desired ones to your library. ## Troubleshooting If you encounter issues with the ElevenLabs integration, try these steps: 1. Verify that your API key is correct and active. 2. Check your ElevenLabs account for any usage limits or restrictions. 3. Ensure your Aikeedo platform is up to date. 4. Confirm you have sufficient credit balance in your ElevenLabs account. 5. For model-specific issues, verify that your account has access to the required models. 6. If you don't see newly added voices, remember that synchronization can take up to 4 hours. 7. If you receive error messages related to voice generation or processing, check the ElevenLabs status page for any ongoing service issues. Regularly review your ElevenLabs usage, available models, and voice library to ensure smooth integration with Aikeedo. Remember to review ElevenLabs' usage policies and pricing to ensure compliance and manage costs effectively. # Fal AI Integration Source: https://docs.aikeedo.com/integrations/falai Enhance your Aikeedo platform with Fal AI's advanced image generation capabilities. This guide walks you through setting up and leveraging Fal AI's powerful models for creating unique and high-quality images. ## Introduction Aikeedo's Fal AI integration unlocks advanced image generation capabilities for your platform. With access to Fal AI's cutting-edge models, you can significantly enhance your Imagine tool, allowing users to create unique and high-quality images from text descriptions. ## Setting Up the Integration Follow these steps to connect Fal AI with your Aikeedo platform: ### Step 1: Obtain Your Fal AI API Key 1. If you don't have a Fal AI account, [sign up here](https://www.fal.ai/). 2. Once logged in, navigate to your Fal AI dashboard. 3. In the top navigation menu, click on "API Keys". 4. You'll see a list of your existing API keys. If you don't have any, or want to create a new one, click the "Add Key" button in the top right corner. 5. Copy the API key to your clipboard — you'll need this for Aikeedo. Keep your API key secure and confidential. It grants access to Fal AI services and should not be shared publicly. Fal AI masks part of the key in the dashboard for security reasons. ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to **Settings > FalAI**. 3. In the "API" section, enter your Fal AI API Secret in the "API Secret" field. 4. Click **Save changes** to activate the integration. Great job! Fal AI is now integrated with your Aikeedo platform. ## Aikeedo Tools Powered by Fal AI Fal AI integration enhances the following Aikeedo tool: 1. **Imagine**: Create unique and high-quality images from text descriptions using Fal AI's advanced image generation models. ## Best Practices To make the most of your Fal AI integration: * Experiment with different models to find the best fit for your use case. * Provide clear and detailed text descriptions for optimal image generation results. * Consider the style and complexity requirements of your project when selecting models. * Monitor your API usage to manage costs effectively. * Regularly update your integration to access the latest models and features. ## Troubleshooting If you encounter issues with the Fal AI integration, try these steps: 1. Verify that your API Secret is correct and active. 2. Check your Fal AI account for any usage limits or restrictions. 3. Ensure your Aikeedo platform is up to date. 4. If you receive error messages related to model access or quotas, verify your account status with Fal AI. 5. For model-specific issues, confirm that your account has access to the required models. 6. If you experience slow response times, consider using a different model or optimizing your requests. Regularly review your Fal AI usage and available model options to ensure smooth integration with Aikeedo. Remember to review Fal AI's usage policies and pricing to ensure compliance and manage costs effectively as you scale your image generation integration. # Google Cloud Platform Integration Source: https://docs.aikeedo.com/integrations/gcp Enhance your Aikeedo platform with Google Cloud Platform's advanced AI capabilities. This guide walks you through setting up and leveraging GCP's powerful text-to-speech services for high-quality voice generation. ## Introduction Aikeedo's Google Cloud Platform integration unlocks advanced text-to-speech capabilities for your platform. With access to a wide range of high-quality voices, GCP's services can significantly enhance your VoiceOver tool and audio content creation. ## Setting Up the Integration Follow these steps to connect Google Cloud Platform with your Aikeedo platform: ### Step 1: Obtain Your GCP Service Account Credentials 1. If you don't have a Google Cloud Platform account, [sign up here](https://cloud.google.com/). You'll need to provide some basic information and a valid payment method to create an account. 2. Once logged in, access the Google Cloud Console: * Go to [console.cloud.google.com](https://console.cloud.google.com). * If this is your first time, you'll be prompted to create a new project. Otherwise, you can create a new project or select an existing one from the top-left dropdown menu. 3. Enable the Text-to-Speech API for your project: * In the Cloud Console, go to the "APIs & Services" page. * Click on the "+ ENABLE APIS AND SERVICES" button at the top. * Search for "Cloud Text-to-Speech API" and select it. * Click the "ENABLE" button to activate the API for your project. 4. Create a service account and download the JSON key file: * Navigate to the [IAM & Admin > Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts) page in the Cloud Console. * Click the "+ CREATE SERVICE ACCOUNT" button at the top of the page. * Enter a name for your service account (e.g., "aikeedo-tts-service"), and optionally add a description. * Click "CREATE AND CONTINUE". * In the "Grant this service account access to project" section, you can skip this step as it's not necessary for our use case. * Click "CONTINUE" and then "DONE" to finish creating the service account. * On the Service Accounts page, find the account you just created and click the three dots menu on the right. * Select "Manage keys" from the dropdown. * Click "ADD KEY" and choose "Create new key". * Select "JSON" as the key type and click "CREATE". * The JSON key file will be automatically downloaded to your computer. Keep this file secure, as it contains sensitive information. The JSON key file you've downloaded contains credentials that grant access to your GCP project and its resources. Treat it like a password and never share it publicly or commit it to version control systems. Keep your service account JSON key file secure and confidential. It grants access to your GCP services and should not be shared publicly. ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to **Settings > Google Cloud Platform Settings**. 3. In the "Service account" section, click "Choose file" and select the JSON key file you downloaded from GCP. 4. Click **Save changes** to activate the integration. Great job! Google Cloud Platform is now integrated with your Aikeedo platform. ## Available Voice Types Aikeedo leverages GCP's Text-to-Speech service, which offers a variety of voice types: * Standard voices * Premium voices * Studio voices These voice types offer different levels of quality and naturalness, allowing you to choose the best fit for your specific use case. ## Aikeedo Tools Powered by GCP Google Cloud Platform integration enhances the following Aikeedo tool: 1. **VoiceOver**: Transform text into high-quality, natural-sounding speech using a wide range of voices and languages. ## Best Practices To make the most of your GCP integration: * Experiment with different voice types (Standard, Premium, Studio) to find the best fit for your use case. * Consider the language and accent requirements of your project when selecting voices. * Monitor your API usage to manage costs effectively. ## Troubleshooting If you encounter issues with the GCP integration, try these steps: 1. Verify that your service account JSON key file is correct and active. 2. Check your GCP project for any usage limits or restrictions. 3. Ensure the Text-to-Speech API is enabled for your project. 4. Confirm you have sufficient credit balance in your GCP account. 5. For voice-specific issues, verify that your account has access to the required voice types. 6. If you receive error messages related to authentication or API calls, double-check your service account permissions. Regularly review your GCP usage and available voice options to ensure smooth integration with Aikeedo. Remember to review Google Cloud Platform's usage policies and pricing to ensure compliance and manage costs effectively as you scale your text-to-speech integration. # Google Analytics Source: https://docs.aikeedo.com/integrations/google-analytics Track user behavior, page views, and engagement metrics in Aikeedo using Google Analytics 4 (GA4) measurement and reporting. ## Introduction Google Analytics 4 integration enables tracking and analysis of user behavior on your Aikeedo platform, providing insights to optimize user experience and engagement. ## Setting Up the Integration Follow these steps to connect Google Analytics with your Aikeedo platform: ### Step 1: Create a Google Analytics Account and Property 1. If you don't have a Google Analytics account, [sign up here](https://analytics.google.com/). 2. Once logged in, create a new property for your Aikeedo website. 3. Follow Google's prompts to set up your property and obtain your Measurement ID (it starts with "G-"). If you're new to Google Analytics, consider watching their introductory videos or reading their setup guide for beginners. ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to Settings. 3. Find and click on "Script Tags" in the Integrations section. 4. Look for the "Google Analytics" integration option. 5. In the "Config" section, you'll see two important fields: * **Status**: This is a toggle switch to enable or disable Google Analytics integration. * **GA4 Measurement ID**: This is where you'll enter your Google Analytics 4 Measurement ID. 6. Toggle the "Status" switch to enable the integration. 7. Enter your Google Analytics 4 Measurement ID (it should start with "G-") in the "GA4 Measurement ID" field. 8. Click the "Save changes" button to apply your configuration. Great job! Google Analytics is now integrated with your Aikeedo platform. This integration is intended only for Google Analytics 4. For other versions, you may need to use custom script tags. If you can't find your Measurement ID, click the "Click here" link below the ID field for additional guidance. ## What This Integration Does * Tracks page views across your Aikeedo website * Monitors basic user interactions and behavior * Provides insights on user demographics and interests (if enabled in your Google Analytics settings) * Helps you understand which pages are most visited ## Best Practices To make the most of your Google Analytics integration: * Regularly check your Google Analytics dashboard for insights on page views and user behavior. * Use the data to inform decisions about content creation and website improvements. * Consider setting up custom events or enhanced measurement in your Google Analytics account for more detailed tracking. * Familiarize yourself with Google Analytics 4 features to maximize the value of the collected data. * Respect user privacy and comply with data protection regulations like GDPR. * If you need more advanced tracking (e.g., custom events, goal conversions), consider working with a developer to implement custom Google Analytics code. This integration injects the default Google Analytics script. While it provides valuable basic insights, setting up advanced features like goal tracking may require additional custom implementation. ## Troubleshooting If you're not seeing data in your Google Analytics account: 1. Verify that you've entered the correct Measurement ID in Aikeedo. 2. Allow 24-48 hours for data to start appearing in your Google Analytics dashboard. 3. Use Google's real-time reports to check if current traffic is being tracked. 4. Ensure you don't have any ad-blocking software that might interfere with Analytics. 5. Check if you need to accept terms or complete any additional setup steps in your Google Analytics account. Remember that Google Analytics data is not real-time for most reports. There's usually a delay of several hours before data appears in your standard reports. # Google Tag Manager Integration Source: https://docs.aikeedo.com/integrations/google-tag-manager Enhance your Aikeedo platform with Google Tag Manager to manage and deploy marketing tags on your website. This guide walks you through setting up Google Tag Manager for your Aikeedo website. ## Introduction Aikeedo's Google Tag Manager integration allows you to easily manage and deploy various marketing and analytics tags on your platform without modifying the code. By adding Google Tag Manager, you can efficiently implement tracking codes, conversion pixels, and other third-party scripts, providing flexibility in managing your website's tags. ## Setting Up the Integration Follow these steps to connect Google Tag Manager with your Aikeedo platform: ### Step 1: Create a Google Tag Manager Account and Container 1. If you don't have a Google Tag Manager account, [sign up here](https://tagmanager.google.com/). 2. Once logged in, create a new container for your Aikeedo website. 3. Follow Google's prompts to set up your container and obtain your Container ID (it starts with "GTM-"). If you're new to Google Tag Manager, consider exploring their documentation or tutorials to understand how to set up tags, triggers, and variables. ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to Settings. 3. Find and click on "Script Tags" in the Integrations section. 4. Look for the "Google Tag Manager" integration option. 5. In the "Config" section, you'll see two important fields: * **Status**: This is a toggle switch to enable or disable Google Tag Manager integration. * **GTM Container ID**: This is where you'll enter your Google Tag Manager Container ID. 6. Toggle the "Status" switch to enable the integration. 7. Enter your Google Tag Manager Container ID (it should start with "GTM-") in the "GTM Container ID" field. 8. Click the "Save changes" button to apply your configuration. Great job! Google Tag Manager is now integrated with your Aikeedo platform. ## What This Integration Does * Allows you to manage various marketing and analytics tags from a single interface * Enables easy implementation of tracking codes, conversion pixels, and other scripts * Provides flexibility to add, edit, or remove tags without directly modifying your website's code * Facilitates A/B testing and personalization through tag management ## Best Practices To make the most of your Google Tag Manager integration: * Use Google Tag Manager to implement your Google Analytics tracking (if you're using it) * Create a clear naming convention for your tags, triggers, and variables * Use built-in templates when possible to reduce errors * Test your tags thoroughly in a non-production environment before publishing * Use workspaces and versions to manage changes and rollbacks * Regularly audit your tags to remove any that are no longer needed * Consider setting up user permissions to control who can make changes to your tags While Google Tag Manager makes it easier to manage tags, it's important to understand the impact of each tag on your website's performance and user privacy. ## Troubleshooting If you're experiencing issues with your Google Tag Manager integration: 1. Verify that you've entered the correct Container ID in Aikeedo. 2. Use Google Tag Manager's Preview mode to check if the container is loading correctly on your website. 3. Check the browser console for any JavaScript errors that might be preventing tags from firing. 4. Ensure that there are no conflicts between tags implemented via Google Tag Manager and any hardcoded scripts on your website. 5. Verify that your tags are set up correctly in the Google Tag Manager interface, with appropriate triggers and variables. Google Tag Manager's Debug mode is a powerful tool for troubleshooting tag issues. Use it to see which tags are firing and why. # Intercom Integration Source: https://docs.aikeedo.com/integrations/intercom Enhance your Aikeedo platform with Intercom to provide real-time customer support and engagement. This guide walks you through setting up Intercom for your Aikeedo website. ## Introduction Aikeedo's Intercom integration allows you to add powerful customer messaging and support capabilities to your platform. By integrating Intercom, you can engage with your users in real-time, provide support, and gather valuable insights about your customer interactions. ## Setting Up the Integration Follow these steps to connect Intercom with your Aikeedo platform: ### Step 1: Create an Intercom Account and Obtain Necessary Credentials 1. If you don't have an Intercom account, [sign up here](https://www.intercom.com/). 2. Once logged in, navigate to the Settings menu in your Intercom dashboard. 3. In the left sidebar, click on "Messenger" under the "Channels" section. 4. On the Messenger settings page, click on the "Install" tab. 5. You'll see two important pieces of information here: * **Workspace/App ID**: This is displayed at the top of the installation code snippet. It's a string that looks like "abc123de". * **Secret Key**: Click on "Copy secret key" to copy your secret key. It's a long string of characters used for identity verification. The Secret Key is crucial for enabling Identity Verification, which adds an extra layer of security to your integration. Never share this key publicly or commit it to version control systems. Intercom recommends using Identity Verification to ensure the security and integrity of your user data. Make sure to enable this feature in both Intercom and Aikeedo settings. 6. Copy both the Workspace/App ID and the Secret Key—you'll need these for configuring Aikeedo. Keep your Secret Key confidential. As the Intercom dashboard warns: "Never commit it directly to your repository, client-side code, or anywhere a third party can find it." ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to Settings. 3. Find and click on "Script Tags" in the Integrations section. 4. Look for the "Intercom" integration option. 5. In the "Config" section, you'll see the following fields: * **Status**: A toggle switch to enable or disable the Intercom integration. * **Identity verification**: A toggle to enable or disable identity verification. * **Workspace/App ID**: Enter your Intercom Workspace/App ID here. * **Secret key**: Enter your Intercom Secret Key here (required for identity verification). 6. Toggle the "Status" switch to enable the integration. 7. We recommend enabling "Identity verification" for enhanced security. 8. Enter your Intercom Workspace/App ID in the designated field. 9. If you've enabled identity verification, enter your Intercom Secret Key. 10. Click the "Save changes" button to apply your configuration. Great job! Intercom is now integrated with your Aikeedo platform. The Secret Key is required to enable Identity Verification, which adds an extra layer of security to your integration. If you can't find your Workspace/App ID, click the "Click here" link below the ID field for additional guidance. ## What This Integration Does * Adds the Intercom chat widget to your Aikeedo website * Allows real-time communication with your users * Enables you to provide customer support directly through your website * Helps you gather user feedback and insights * Facilitates user onboarding and engagement through targeted messages ## Best Practices To make the most of your Intercom integration: * Set up welcome messages to greet new users and guide them through your platform * Use Intercom's targeted messaging features to engage users based on their behavior * Customize the appearance of the Intercom widget to match your brand * Set up an organized inbox and team assignments for efficient customer support * Utilize Intercom's knowledge base feature to create self-service support resources * Regularly review conversation data and user feedback to improve your product and support Remember to respect user privacy and comply with data protection regulations when collecting and handling user data through Intercom. ## Troubleshooting If you're experiencing issues with your Intercom integration: 1. Verify that you've entered the correct Workspace/App ID in Aikeedo. 2. If using identity verification, ensure your Secret Key is correct and up to date. 3. Check if the Intercom widget appears on your website after enabling the integration. 4. Clear your browser cache and cookies, then reload your website to see if the widget appears. 5. Ensure there are no JavaScript errors in your browser console that might be preventing Intercom from loading. 6. If the widget appears but isn't functioning correctly, verify your Intercom account settings and workspace configuration. Intercom provides a test mode in their dashboard. Use this to verify your integration without affecting real users. # Ollama Integration Source: https://docs.aikeedo.com/integrations/ollama Run open-source large language models locally with Ollama integration. This guide explains how to set up and configure Ollama for your Aikeedo platform. ## Introduction Ollama allows you to run large language models locally on your own hardware. By integrating Ollama with Aikeedo, you can provide AI capabilities without relying on cloud services, ensuring data privacy and reducing costs. Currently, Ollama integration is available only for the Chat tool in Aikeedo. ## About Ollama Ollama is an open-source project that simplifies running and managing large language models locally. It offers: * Easy installation and setup * Support for various open-source models * Local execution for enhanced privacy * Custom model configuration * REST API for integration For more information, visit the [official Ollama website](https://ollama.ai). ## Setting Up Ollama ### Step 1: Install Ollama ```bash theme={null} curl -fsSL https://ollama.ai/install.sh | sh ``` For Apple Silicon (M1/M2) Macs, Metal GPU acceleration is supported automatically. ```bash theme={null} curl -fsSL https://ollama.ai/install.sh | sh ``` For NVIDIA GPUs: * Ensure CUDA 11.7 or later is installed * Install NVIDIA container toolkit For AMD GPUs: * ROCm 5.6 or later is required * Check hardware compatibility in ROCm documentation 1. Download the latest installer from [Ollama Windows Release](https://github.com/ollama/ollama/releases) 2. Run the downloaded installer 3. Follow the installation wizard Requirements: * Windows 10 or later * For NVIDIA GPUs, install CUDA 11.7 or later For detailed installation instructions and troubleshooting, refer to the [Ollama Installation Guide](https://github.com/ollama/ollama#installation). ### Step 2: Configure Your Model 1. Start the Ollama service 2. Pull your desired model. For example: ```bash theme={null} ollama pull llama2 # or ollama pull mistral # or ollama pull llama2-uncensored ``` View all available models at [Ollama Model Library](https://ollama.ai/library). ### Step 3: Configure Server Address By default, Ollama runs on: ``` http://localhost:11434 ``` For remote access, you'll need to: 1. Configure your firewall to allow access to port 11434 2. Set up proper security measures as Ollama doesn't include authentication by default When exposing Ollama to remote access, ensure you implement appropriate security measures to protect your server. ## Integrating with Aikeedo ### Step 1: Configure Aikeedo 1. Log in to your Aikeedo admin panel 2. Navigate to Settings → Integrations → Ollama 3. Enter your Ollama server address (e.g., `http://localhost:11434`) 4. Add your models: * **Key**: A unique identifier (e.g., `ollama/llama2:latest`) * **Name**: Display name for the model * **Provider**: Set as "Meta" for Llama models, or appropriate provider 5. Click "Save changes" The server address must include the scheme (http/https), host, and port number. ## Model Configuration You can customize model behavior using Modelfiles. Example: ```text theme={null} FROM llama2 PARAMETER temperature 0.7 PARAMETER top_p 0.9 PARAMETER top_k 40 ``` Learn more about model configuration in the [Ollama Documentation](https://github.com/ollama/ollama/blob/main/docs/modelfile.md). ## Hardware Requirements Minimum requirements vary by model: * 7B models: 8GB RAM * 13B models: 16GB RAM * 33B+ models: 32GB+ RAM GPU acceleration is supported for: * NVIDIA GPUs with CUDA * AMD GPUs with ROCm * Apple Silicon (Metal) ## Best Practices 1. **Model Selection**: * Start with smaller models (7B) and test performance * Consider your hardware capabilities * Choose models based on your specific use case 2. **Performance**: * Enable GPU acceleration when available * Monitor system resources * Adjust model parameters for optimal performance 3. **Security**: * Implement proper firewall rules * Use reverse proxy for additional security * Regular system updates ## Troubleshooting Common issues and solutions: 1. **Connection Issues**: * Verify Ollama service is running * Check server address format * Confirm firewall settings 2. **Model Loading Failures**: * Ensure sufficient system resources * Verify model is properly pulled * Check model compatibility 3. **Performance Issues**: * Monitor system resources * Consider using a smaller model * Adjust model parameters ## Additional Resources * [Ollama GitHub Repository](https://github.com/ollama/ollama) * [Ollama Documentation](https://github.com/ollama/ollama/tree/main/docs) * [Ollama API Reference](https://github.com/ollama/ollama/blob/main/docs/api.md) * [Ollama Discord Community](https://discord.gg/ollama) Keep Ollama and your models updated for the best performance and security. # OneSignal Integration Source: https://docs.aikeedo.com/integrations/onesignal Enhance your Aikeedo platform with OneSignal's push notification capabilities. This guide walks you through setting up and leveraging OneSignal for engaging your users with timely notifications. ## Introduction Aikeedo's OneSignal integration enables powerful push notification functionality for your platform. By integrating OneSignal, you can significantly enhance user engagement by sending timely and relevant notifications to your users across various devices. ## Setting Up the Integration Follow these steps to connect OneSignal with your Aikeedo platform: ### Step 1: Create a OneSignal App and Obtain Your App ID 1. If you don't have a OneSignal account, [sign up here](https://onesignal.com/). 2. Once logged in, click on "All Apps" in the left sidebar. 3. Click the "New App/Website" button to create a new app. 4. Fill in the following details: * **OneSignal App Name**: Enter a name for your Aikeedo integration (e.g., "Aikeedo Notifications"). * **Select your organization**: Choose the appropriate organization from the dropdown. 5. Under "Set up your first channel", select "Web" as we're integrating with a web application. 6. Click "Next: Configure Your Platform" to proceed. 7. On the Web Configuration page, choose "Custom Code" as the integration type. 8. Follow the prompts to complete the web push setup for your domain using the Custom Code integration. 9. Once setup is complete, navigate to "Settings" > "Keys & IDs" in the left sidebar. 10. Under the "OneSignal Keys" section, you'll find your "OneSignal App ID". It's a long string of characters (e.g., 900877c5-995b-49ef-95e8-af7d52f36054). 11. Copy this App ID—you'll need it for Aikeedo. ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to **Settings > OneSignal**. 3. In the "Configuration" section, you'll see the following options: * **Status**: Toggle this to enable or disable the OneSignal integration. * **App ID**: Enter your OneSignal App ID in this field. 4. Paste your OneSignal App ID into the "App ID" field. 5. Enable the integration by toggling the "Status" switch to the enabled position. 6. Click **Save changes** to activate the integration. Great job! OneSignal is now integrated with your Aikeedo platform. ## Best Practices To make the most of your OneSignal integration: * Craft clear and concise notification messages to engage users effectively. * Use segmentation to send targeted notifications to specific user groups. * Test your notifications across different devices and platforms to ensure consistency. * Monitor notification performance and user engagement metrics in your OneSignal dashboard. ## Troubleshooting If you encounter issues with the OneSignal integration, try these steps: 1. Verify that your App ID is correct and active. 2. Ensure that webpush is properly set up in your OneSignal account with Custom Code. 3. Check that the integration is enabled in your Aikeedo settings. 4. Test the integration by sending a test notification from your OneSignal dashboard. 5. If you experience delivery issues, check your OneSignal dashboard for any error messages or delivery reports. 6. Ensure your Aikeedo platform is up to date. Can't find your App ID? Click the "Click here" link below the App ID field in the Aikeedo settings for additional guidance. Remember to review OneSignal's usage policies and pricing to ensure compliance and manage costs effectively as you scale your push notification integration. # OpenAI Integration Source: https://docs.aikeedo.com/integrations/openai Integrate OpenAI models into Aikeedo for chat, content generation, image creation, transcription, and text-to-speech capabilities. ## Introduction The OpenAI integration enables access to latest models for chat, content generation, image creation, transcription, and text-to-speech capabilities within your Aikeedo platform. ## Setting Up the Integration Follow these simple steps to connect OpenAI with your Aikeedo platform: ### Step 1: Obtain Your OpenAI API Key 1. If you don't have an OpenAI account, [sign up here](https://platform.openai.com/signup). 2. Once logged in, navigate to the [API keys page](https://platform.openai.com/account/api-keys). 3. Click on **Create new secret key**. 4. Copy the generated API key—you'll need this for Aikeedo. Keep your API key secure. It provides access to OpenAI's services and should not be shared publicly. ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to **Settings > OpenAI**. 3. Paste your OpenAI API key into the **API Secret** field. 4. Configure webhook settings (see Step 3 below). 5. Click **Save Changes** to activate the integration. Congratulations! OpenAI is now integrated with your Aikeedo platform. ### Step 3: Configure Webhooks (Required) Webhook configuration is required for OpenAI integration to function properly. To enable real-time event notifications from OpenAI, you need to configure webhooks: 1. **Set up Webhook URL**: The webhook URL is automatically provided as `https://your-domain.com/webhooks/openai` 2. **Configure OpenAI Dashboard**: * Go to your [OpenAI Webhooks Settings](https://platform.openai.com/settings/project/webhooks) * Create a new webhook endpoint using the provided webhook URL 3. **Set Webhook Secret**: * Generate a webhook secret in your OpenAI dashboard * Copy the secret and paste it into the **Webhook secret** field in Aikeedo 4. **Select Events**: Ensure the following events are selected in your OpenAI webhook configuration: * `video.completed` * `video.failed` Make sure to select all listed events in your OpenAI webhook configuration for proper functionality. ## Custom API Keys (BYOK) Aikeedo supports Bring Your Own Key (BYOK) functionality for OpenAI integration: * **Workspace-level API keys**: Workspace owners can provide their own OpenAI API key * **System override**: When configured, the workspace-specific API key takes precedence over the system-wide API key * **Credit management**: Custom API keys bypass workspace credit deductions for OpenAI services * **Subscription requirement**: A valid subscription plan and credit balance are still required for other features and API services **BYOK is not available for features that require OpenAI webhooks.** Video generation always uses the system-wide API key because it depends on webhook notifications for proper functionality. BYOK is particularly useful for organizations that want to manage their own OpenAI billing and usage directly. For detailed information about BYOK configuration and setup, see the [BYOK documentation](/advanced/byok). ## Aikeedo Tools Powered by OpenAI OpenAI integration enhances the following Aikeedo tools: 1. **Chat**: Engage in intelligent conversations, with Canvas documents and clarifying questions. 2. **Writer**: Answer a template's questions and continue the result in chat. 3. **Imagine**: Create and edit images from text descriptions and reference images. 4. **Transcriber**: Convert audio to text with high accuracy. 5. **Voiceover**: Transform text into natural-sounding speech. 6. **Classifier**: Categorize and analyze text content. 7. **Utilities**: Generate titles and enhance prompts. ## Best Practices To make the most of your OpenAI integration: * Experiment with different models to find the best fit for your use case. * Use clear and specific prompts to get the most accurate results. * Monitor your API usage to manage costs effectively. ## Troubleshooting If you encounter issues with the OpenAI integration, try these steps: 1. **API Key Issues**: * Verify that your API key is correct and active * Check your OpenAI account for any usage limits or restrictions * Confirm you have sufficient credit balance in your OpenAI platform account 2. **Webhook Configuration**: * Ensure webhook URL is correctly configured in your OpenAI dashboard * Verify that the webhook secret matches between OpenAI and Aikeedo * Check that all required events (`video.completed`, `video.failed`) are selected 3. **General Issues**: * Ensure your Aikeedo platform is up to date * Check network connectivity and firewall settings * Verify SSL certificates are valid for webhook endpoints 4. **Model Access Issues**: * For model-specific issues, verify that your account has access to the required models * If you receive an error message like "The model \[model-name] does not exist or you do not have access to it": * This error comes directly from OpenAI and indicates that the specific model is not enabled for your account * Some models may require specific account tiers or permissions * Check which models are accessible to you on the [OpenAI Playground](https://platform.openai.com/playground) * Ensure your OpenAI account has sufficient credits and the correct billing setup for the models you're trying to use 5. **BYOK Issues**: * If using custom API keys, ensure the workspace-specific key is valid and active * Verify that the custom key has the necessary permissions for required models * For comprehensive BYOK troubleshooting and configuration details, refer to the [BYOK documentation](/advanced/byok) Regularly review your OpenAI usage and available models to ensure smooth integration with Aikeedo. Remember to review OpenAI's usage policies and pricing to ensure compliance and manage costs effectively. # OpenAI API-Compatible Servers Source: https://docs.aikeedo.com/integrations/openai-api-compatibility Learn how to integrate any OpenAI-compatible API provider with your Aikeedo platform. ## Introduction Aikeedo supports any API provider that implements the OpenAI API specification. This means you can integrate any service that follows OpenAI's API format, whether it's a cloud service, self-hosted model, or custom implementation. If a service is compatible with OpenAI's API specification, it will work with Aikeedo - there are no restrictions on which providers you can use. ## Common Providers While you can use any OpenAI-compatible provider, here are some popular options: * Together AI * OpenRouter * Groq * DeepSeek * Google AI (Gemini) * Perplexity AI * Hugging Face * Nebius * DeepInfra * AI/ML API * Azure OpenAI Service * v0 by Vercel * Self-hosted models (via compatible servers) * Custom LLM implementations Most of the providers below ship as ready-made servers with their current models. Import them from **Settings → Starter content → LLM servers**, then add your API key. See [Starter content](/advanced/seed-data#llm-servers-and-their-models). ## Adding a New Provider 1. Go to Settings → Integrations 2. Scroll to "Custom LLM Servers" section 3. Click "New server" ### Configuration Fields #### API Server * **Name**: A descriptive name for the provider * **Server address**: The API endpoint URL * **API Key/Authorization token**: Your authentication token for the service The server address supports dynamic variables for flexible configuration. ##### **Dynamic Variables** You can use the following variable in your server address: * `{model}`: Will be dynamically replaced with the current model name **Example for Azure OpenAI Service**: ```text theme={null} https://my-instance.openai.azure.com/openai/deployments/{model} ``` When using model "gpt-4o-mini", the actual request will go to: ```text theme={null} https://my-instance.openai.azure.com/openai/deployments/gpt-4o-mini ``` Dynamic variables are useful for services where the model name is part of the API endpoint. Most providers take the model name in the request body instead and don't need them. #### Headers Aikeedo automatically adds these default headers: * `Content-Type: application/json` * `Authorization: Bearer YOUR_API_KEY` (when API key field is filled) You can override these default headers or add custom headers as needed. This is useful when a provider requires specific header configurations. ##### Adding Custom Headers 1. Click "Add header" 2. Enter the header key (e.g., `HTTP-Referer`) 3. Enter the header value 4. Repeat for additional headers ##### Examples **Override default Authorization header**: ```text theme={null} Key: Authorization Value: Basic YOUR_BASE64_CREDENTIALS ``` **Add provider-specific headers**: ```text theme={null} Key: X-Title Value: Your Application Name ``` If you need to override the default Content-Type or Authorization headers, simply add them with your desired values in the custom headers section. #### Models Configuration For each model you want to use: * **Key**: Unique identifier for the model (e.g., `gpt-3.5-turbo`) * **Name**: Display name shown to users * **Provider**: The model provider's name * **Vision**: Toggle if the model supports image analysis * **Tools**: Toggle if the model supports function calling ## Provider-Specific Setup ```text Server theme={null} https://api.together.xyz/v1 ``` Get your API key from [Together AI Settings](https://api.together.ai/settings/api-keys) ```text Server theme={null} https://openrouter.ai/api/v1 ``` Get your API key from [OpenRouter Settings](https://openrouter.ai/settings/keys) ```text Server theme={null} https://generativelanguage.googleapis.com/v1beta/openai ``` Get your API key from [Google AI Studio](https://aistudio.google.com/apikey) ```text Server theme={null} https://router.huggingface.co/v1 ``` Get your API key from [Hugging Face Settings](https://huggingface.co/settings/tokens) Use the model's Hugging Face ID as the model key, for example `deepseek-ai/DeepSeek-V4-Pro-0813`. Hugging Face routes the request to one of its inference providers. The old `https://api-inference.huggingface.co/models/{model}/v1/` address no longer works. If you added Hugging Face with it, change the server address to the one above. ```text Server theme={null} https://api.groq.com/openai/v1 ``` Get your API key from [Groq Console](https://console.groq.com/keys) Groq is known for its extremely fast inference speeds and competitive pricing. ```text Server theme={null} https://api.deepseek.com ``` Required headers: * `Authorization`: Bearer YOUR\_API\_KEY Get your API key from [DeepSeek Platform](https://platform.deepseek.com/api_keys) DeepSeek offers both general-purpose and code-specialized models with competitive pricing. ```text Server theme={null} https://api.perplexity.ai ``` Get your API key from [Perplexity Settings](https://www.perplexity.ai/settings/api) Perplexity offers high-quality models with strong reasoning capabilities and up-to-date knowledge. ```text Server theme={null} https://api.tokenfactory.nebius.com/v1 ``` Get your API key from [Nebius Token Factory](https://tokenfactory.nebius.com/) Nebius AI Studio is now Nebius Token Factory. Servers added with the old `https://api.studio.nebius.ai/v1/` address still respond, but switch to the address above. ```text Server theme={null} https://api.deepinfra.com/v1/openai/ ``` Get your API key from [DeepInfra Dashboard](https://deepinfra.com/dash/api_keys) DeepInfra provides access to a variety of open-source models with competitive pricing and low latency. ```text Server theme={null} https://api.aimlapi.com/v1/ ``` Get your API key from [AI/ML API Keys](https://aimlapi.com/app/keys) ```text Server theme={null} https://:resource_name.openai.azure.com/openai/deployments/:deployment_name/chat/completions?api-version=:api_version ``` Get your API key and other details from [Azure Portal](https://portal.azure.com/#blade/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/OpenAI) For Azure OpenAI Service: * Replace `:resource_name` with your Azure OpenAI resource name * Replace `:deployment_name` with `{model}` to use your configured model names as deployment names * Replace `:api_version` with your desired API version (e.g., '2024-10-21') * Different endpoints (like completions, embeddings) will need their specific paths Example configuration: ```text theme={null} https://my-instance.openai.azure.com/openai/deployments/{model}/chat/completions?api-version=2024-10-21 ``` When you configure a model named "gpt-4o-mini", it will automatically use that as the deployment name in the URL. ```text Server theme={null} https://api.v0.dev/v1 ``` Model name: `v0-1.0-md` Get your API key from [v0.dev Settings](https://v0.dev/chat/settings/keys) The v0 API is currently in beta and requires a Premium or Team plan with usage-based billing enabled. ## Tools Compatibility When configuring models for your custom LLM server, you can enable them for: 1. **Chat**: Interactive conversations and assistance 2. **Writer**: Template-driven writing that continues in chat 3. **Title Generation**: Automatic title creation for content 4. **Prompt Enhancement**: Rewriting and generating prompts in the Imagine and Video composers Make sure to enable only the capabilities that your chosen model actually supports. Enabling unsupported features may result in unexpected behavior. ## Best Practices 1. **Testing**: * Test each model after configuration * Verify response formats * Check token limits and pricing 2. **Security**: * Keep API keys secure * Use HTTPS for external providers * Regularly rotate API keys 3. **Monitoring**: * Track API usage * Monitor response times * Check for error rates ## Troubleshooting Common issues and solutions: 1. **Authentication Errors**: * Verify API key format * Check header configuration * Confirm server address is correct 2. **Model Issues**: * Ensure model names match provider's specifications * Verify model availability in your subscription * Check provider's status page 3. **Connection Problems**: * Verify network connectivity * Check for firewall restrictions * Confirm server address format Always refer to your provider's documentation for the most up-to-date configuration details and troubleshooting guides. ## Rate Limits and Quotas * Monitor your provider's rate limits * Check quota usage regularly * Set up alerts for quota thresholds * Consider implementing retry logic for rate limit errors ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions Keep your integrations updated as providers may change their API specifications or requirements. # Bank Transfer Payment Source: https://docs.aikeedo.com/integrations/payment-gateways/bank-transfer Configure bank transfer payments in Aikeedo with domestic and international transfer options, beneficiary details, and bank information for secure offline payment processing. Bank Transfer is a built-in payment method in Aikeedo that allows customers to pay via direct bank transfers. This payment option supports both domestic and international transfers with comprehensive bank details configuration. ## Overview Bank Transfer payments provide an alternative to online payment gateways, allowing customers to transfer funds directly to your business bank account. This method is particularly useful for: * High-value transactions * B2B payments * Customers who prefer traditional banking methods * Regions with limited online payment gateway support Bank Transfer is a built-in payment method and doesn't require additional plugins or external service setup. ## Prerequisites Before configuring bank transfer payments, ensure you have: * A business bank account with domestic and/or international transfer capabilities * Complete bank details including routing numbers, SWIFT codes, and addresses * Beneficiary information for your business * Bank-issued documents (if required by your bank) ## Configuration ### Accessing Bank Transfer Settings 1. Log in to your Aikeedo admin panel 2. Navigate to **Settings > Payments > Bank Transfer** 3. You'll see three main configuration sections: * **Details** (General settings) * **Domestic Transfer** (Local bank transfers) * **International Transfer** (Cross-border transfers) ### General Settings (Details) Configure the basic bank transfer settings: Toggle the **Status** switch to "Enabled" to activate bank transfer payments. Set the **Enabled for** dropdown to specify which payment types support bank transfers: * One time payments (Recommended) * One-time and annual payments * All payments Choose **One time payments (Recommended)** from the dropdown for standard bank transfer processing. Since bank transfers require manual verification, it's recommended to enable them only for one-time payments to avoid complications with recurring payment processing. ### Domestic Transfer Configuration Set up domestic bank transfer details for local payments: Toggle the **Status** switch to "Enabled" for domestic transfers. Enter your business information: * **Beneficiary name / Account holder**: Your business legal name * **Account number**: Your business bank account number * **Beneficiary address**: Complete business address Provide your bank's information: * **Bank name**: Your bank's official name * **Routing number**: Bank routing number (US) or sort code (UK) * **Bank address**: Complete bank branch address * **Currency**: Select the primary currency (e.g., US Dollar) * **Tax ID**: Your business tax identification number (optional) * **Reference / Memo**: Payment reference information (optional) If required by your bank, upload supporting documents: * Click **Browse files** to upload bank-issued documents * Use **View current** to review uploaded files * Use **Delete** to remove outdated documents ### International Transfer Configuration Configure international bank transfer details for cross-border payments: Toggle the **Status** switch to "Enabled" for international transfers. Enter international transfer information: * **Beneficiary name / Account holder**: Your business legal name * **IBAN / Account number**: International Bank Account Number * **Beneficiary address**: Complete business address including country Provide international banking information: * **Bank name**: Your bank's official name * **SWIFT / BIC Code**: Bank Identifier Code for international transfers * **Bank address**: Complete bank address including country * **Currency**: Select the currency for international transfers * **Tax ID**: Your business tax identification number (optional) * **Reference / Memo**: Payment reference with bank details If your bank requires an intermediary bank: * **Bank name**: Corresponding bank name * **SWIFT / BIC Code**: Corresponding bank's SWIFT code * **Account number**: Your account number with the corresponding bank * **Bank address**: Corresponding bank's address * Upload any required bank requisites documents ## Payment Processing Flow ### For Customers When customers choose bank transfer payment: 1. **Payment Selection**: Customer selects "Bank Transfer" from available payment methods during checkout 2. **Order Placement**: Customer clicks "Place order" to complete the purchase 3. **Payment Instructions**: Customer is redirected to order details page with comprehensive bank transfer instructions 4. **Transfer Execution**: Customer initiates transfer through their bank using provided details 5. **Order Tracking**: Customer can monitor order status in their billing overview 6. **Order Fulfillment**: Order is processed after payment verification by admin Payment details are provided after placing the order, not during checkout. This ensures customers have complete banking information before initiating transfers. ### For Administrators To process bank transfer payments: 1. **Access Orders**: Navigate to **Billing > Orders** in admin panel to view all orders 2. **Filter Pending Orders**: Select "Pending" status from the filter options to view all orders awaiting manual verification (including bank transfers and other manual payment methods) 3. **Review Order Details**: Click on individual orders to view customer and payment information 4. **Verify Payments**: Check your bank account for incoming transfers matching order details 5. **Update Order Status**: Use **Approve** or **Reject** buttons to update order status 6. **Process Orders**: Approved orders are processed immediately and cannot be reverted Bank transfer payments require manual verification. Always confirm payment receipt before fulfilling orders. Once approved or rejected, orders cannot be reverted. ## Order Management ### Admin Order Management Bank transfer orders appear in the admin panel with "Pending" status until manually verified. Note that the pending orders list includes all manual payment methods, not just bank transfers: 1. **Access Orders**: Navigate to **Billing > Orders** in the admin panel to view all orders 2. **Filter Pending Orders**: Select "Pending" status from the filter options to view all orders awaiting manual verification (including bank transfers and other manual payment methods) 3. **Review Order Details**: Click on any order to view: * Customer information and workspace details * Order summary (plan, credits, total amount) * Payment gateway information (Yookassa transaction ID) * Order creation date and status ### Order Status Actions For each pending bank transfer order, you can: * **Approve**: Click the green "Approve" button to confirm payment and fulfill the order * **Reject**: Click the gray "Reject" button to cancel the order if payment is not received ### Customer Order Tracking Customers can track their bank transfer orders through their billing overview: 1. **Access Billing**: Navigate to billing overview from the main dashboard 2. **View Orders**: Check the "Latest orders" section for pending bank transfer orders 3. **Order Details**: Click on any order to view detailed bank transfer instructions 4. **Status Updates**: Order status updates automatically when admin approves payment ### Customer Checkout Experience When customers select bank transfer as their payment method: 1. **Payment Method Selection**: During checkout, customers can choose "Bank Transfer" from available payment options 2. **Order Placement**: After selecting bank transfer, customers click "Place order" to complete the purchase 3. **Order Confirmation**: The system creates a pending order and redirects to order details page 4. **Bank Transfer Instructions**: Customers receive comprehensive banking details including: * Order ID for reference * Beneficiary information (company name, account details) * Bank details (name, routing number, SWIFT code) * Complete addresses for both beneficiary and bank * Correspondent bank information (for international transfers) * Download option for bank requisites The checkout page displays "Payment details will be provided after placing the order" to inform customers that banking information comes after order creation. ## Best Practices ### Security Considerations * **Verify Payments**: Always confirm payment receipt before order fulfillment * **Document Everything**: Keep records of all bank transfer transactions * **Secure Information**: Protect sensitive banking information * **Regular Reconciliation**: Regularly reconcile bank statements with orders ### Customer Communication * **Clear Instructions**: Provide detailed, easy-to-follow transfer instructions * **Reference Numbers**: Include order numbers in transfer references * **Timeline Expectations**: Set clear expectations for payment processing time * **Support Contact**: Provide customer support for payment-related questions ### Documentation Requirements * **Bank Statements**: Keep copies of bank statements for verification * **Transfer Confirmations**: Save transfer confirmation documents * **Order Records**: Maintain detailed order and payment records * **Compliance**: Ensure compliance with local banking regulations ## Troubleshooting ### Common Issues **Payment Not Received** * Verify bank account details are correct * Check if transfer is still in progress * Contact your bank for transfer status **Incorrect Transfer Details** * Verify customer provided correct reference information * Check if transfer was sent to correct account * Contact customer for clarification **International Transfer Delays** * International transfers can take 1-5 business days * Check with your bank for processing times * Verify all international banking codes are correct ### Verification Process 1. **Check Bank Account**: Review recent transactions in your bank account 2. **Match Details**: Compare transfer details with order information in admin panel 3. **Verify Order ID**: Ensure the order ID matches the reference provided to customer 4. **Contact Bank**: If needed, contact your bank for verification 5. **Update Order Status**: Use the "Approve" button in admin panel to confirm payment ### Order Status Management **Pending Orders** * Orders remain in "Pending" status until manually approved * Customers cannot use purchased credits until order is approved * Orders can be rejected if payment is not received within reasonable time **Approved Orders** * Orders are processed immediately upon approval * Credits are immediately available to customers * Orders cannot be reverted or reversed once approved **Rejected Orders** * Orders are cancelled and credits are not provided * Orders cannot be reverted or reversed once rejected * Customers should be notified of rejection with reason * New orders can be placed if payment issues are resolved Bank Transfer payments are now configured and ready to accept customer payments through direct bank transfers. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Cryptomus Integration Source: https://docs.aikeedo.com/integrations/payment-gateways/cryptomus Configure Cryptomus payment gateway in Aikeedo with API credentials for secure cryptocurrency payments and digital asset transactions. Cryptomus integration enables secure cryptocurrency payment processing for your Aikeedo platform, supporting various digital currencies and blockchain networks. This guide covers account setup and API configuration. Cryptomus integration is available as a separate plugin that must be purchased from the [Aikeedo Marketplace](https://aikeedo.com/marketplace/?utm_source=docs\&utm_medium=content) before you can configure this payment gateway. ## Prerequisites Before you begin, ensure you have: * An active [Cryptomus merchant account](https://cryptomus.com/gateway) * Access to your Aikeedo admin panel * Your domain properly configured with SSL enabled * A verified business entity ## Step 1: Set Up Your Cryptomus Account If you haven't already, sign up for a Cryptomus merchant account: 1. Visit the [Cryptomus website](https://cryptomus.com/gateway) and click "Get Started" 2. Register using your email or phone number 3. Create a merchant account for payment processing 4. Complete the business verification process 5. Wait for account approval and moderation Cryptomus requires domain verification to ensure the legitimacy of your platform. This can be done through DNS records, meta tags, or HTML file upload. ## Step 2: Obtain Cryptomus API Credentials To connect Aikeedo with Cryptomus, you'll need to retrieve your API credentials: 1. Log in to your [Cryptomus Dashboard](https://cryptomus.com/dashboard) 2. Navigate to **Business** > **Merchants** 3. Select your project and click **Merchant Settings** 4. In the **API Integration** section, you'll find your credentials: * **Merchant ID**: Your unique merchant identifier (e.g., `1bd8163d-92e0-4c1d-9452-5b4dc212f307`) * **Payment API Key**: Your API key for payment operations (e.g., `Dgke********3stU`) Keep your Payment API Key confidential! Never share it publicly or include it in client-side code. ## Step 3: Pass KYB Verification and Domain Verification Before you can process payments, you need to pass Cryptomus verification: 1. **KYB (Know Your Business) Verification**: * Click "Pass KYB" in your merchant settings * Provide required business documents and information * This ensures your safety by preventing fraud in financial transactions 2. **Domain Verification**: Choose one of these methods: * **DNS Record**: Add a TXT record to your domain * **Meta Tag**: Insert a meta tag in your website's head section * **HTML File**: Upload an HTML file to your website root 3. **Wait for Approval**: Cryptomus will review your application Both KYB verification and domain verification are mandatory for security and compliance purposes. Without them, your merchant account cannot process payments. ## Step 3: Configure Cryptomus in Aikeedo Now that you have your Cryptomus account set up, configure the integration in Aikeedo: 1. Log in to your Aikeedo admin panel 2. Navigate to **Payments** in the main menu 3. Click on **Cryptomus** ### Details Section Configure the general settings: 1. **Status**: Toggle the switch to enable Cryptomus payments 2. **Charge Currency**: Select your preferred currency * **Inherit**: Use your platform's default currency (USD) * **Custom**: Choose from a wide range of fiat currencies including USD, EUR, GBP, and many others * If you select a currency different from your default and have a currency rate provider set up, amounts will be automatically converted 3. **Enabled for** (required field): * **One-time payments**: Single transactions only * **One-time and monthly payments**: Both single and recurring subscriptions (recommended) ### Keys Section Enter your API credentials: 1. **Merchant ID**: Enter your Cryptomus Merchant ID (e.g., `1bd8163d-92e0-4c1d-9452-5b4dc212f307`) 2. **Payment API Key**: Enter your Cryptomus Payment API Key 3. Click **Save changes** to apply your settings Congratulations! Cryptomus payments are now enabled on your Aikeedo platform. ## Testing Your Integration Before going live, it's crucial to test your Cryptomus integration: 1. Create test plans with small prices to verify payment processing 2. Test different cryptocurrency networks 3. Test payment confirmation and order updates Always test thoroughly with small amounts before processing larger payments. Cryptocurrency transactions are irreversible. ## Troubleshooting If you encounter any issues with your Cryptomus integration, try these steps: 1. **Verify API Credentials**: Double-check your Merchant ID and Payment API Key in the Keys section 2. **Check KYB Verification**: Ensure your merchant account has passed KYB verification in the merchant settings 3. **Check Domain Verification**: Ensure your domain is properly verified 4. **Test Payments**: Create test plans with small amounts to verify the integration works correctly ### Common Issues Double-check your Merchant ID and Payment API Key. You can find these in your Cryptomus Dashboard under Business > Merchants > Merchant Settings. Ensure your merchant account has passed KYB verification and domain verification. Check that your domain is properly verified and your merchant account has passed moderation. If you see "KYB not verified" in your merchant settings, click "Pass KYB" and provide the required business documents and information to complete the verification process. Cryptomus does not support annual payments. Only one-time payments and monthly subscriptions are available. This limitation is clearly indicated in the settings interface. ## Additional Resources * [Cryptomus API Documentation](https://doc.cryptomus.com/) * [Cryptomus Business Dashboard](https://cryptomus.com/dashboard) * [Supported Cryptocurrencies](https://cryptomus.com/currencies) By following this guide, you've successfully integrated Cryptomus payments into your Aikeedo platform, providing your users with a secure and convenient cryptocurrency payment experience. # Manual Payment Method Source: https://docs.aikeedo.com/integrations/payment-gateways/custom-payment-method Configure custom manual payment methods in Aikeedo with custom instructions, file uploads, and flexible payment processing for unique business requirements. Manual Payment Method is a built-in payment option in Aikeedo that allows you to create custom payment instructions for customers. This flexible payment method is perfect for unique business requirements, offline payments, or specific payment processes that don't fit standard payment gateways. ## Overview Custom Payment Method provides complete flexibility in how customers pay for your services. You can define custom payment instructions, upload supporting files, and create payment flows that match your specific business needs. This payment method is ideal for: * Offline payment processes * Custom payment instructions * Business-specific payment requirements * Alternative payment methods not covered by standard gateways * Manual payment verification processes Manual Payment Method is a built-in payment option and doesn't require additional plugins or external service setup. ## Prerequisites Before configuring manual payment methods, ensure you have: * Clear payment instructions for your customers * Any supporting documentation or files ready for upload * A defined process for verifying custom payments * Customer support procedures for payment-related inquiries ## Configuration ### Accessing Manual Payment Settings 1. Log in to your Aikeedo admin panel 2. Navigate to **Settings > Payments > Manual Payment** (or **Settings > Payments > \[Your Method Name]** if already configured) 3. You'll see the "Manual payment settings" configuration page The navigation path changes based on configuration status: * **Before configuration**: **Settings > Payments > Manual Payment** * **After configuration**: **Settings > Payments > \[Your Method Name]** (where \[Your Method Name] is the method name you've defined) ### Basic Configuration Configure the fundamental settings for your custom payment method: Toggle the **Status** switch to "Enabled" to activate custom payment processing. Set the **Enabled for** dropdown to specify which payment types support custom payment methods: * One time payments (Recommended) * One-time and annual payments * All payments Choose **One time payments (Recommended)** from the dropdown for standard custom payment processing. Since custom payment methods require manual verification, it's recommended to enable them only for one-time payments to avoid complications with recurring payment processing. ### Payment Method Details Define how your custom payment method appears to customers: Enter a **Method name** that will be displayed to customers at checkout: * Use a clear, descriptive name (e.g., "Check Payment", "Money Order", "Corporate Purchase Order") * This name appears in the payment options during checkout * The navigation path will change to **Settings > Payments > \[Your Method Name]** after saving * Keep it concise but informative Provide detailed **Payment instructions** for customers: * Enter step-by-step instructions customers should follow * Include all necessary details for payment completion * Specify any required information or documentation * Mention processing times and next steps Be as detailed as possible. Include contact information, reference numbers, and any specific requirements. ### Optional File Upload Enhance your payment instructions with supporting documentation: Add an optional **Instructions file** to provide additional guidance: * Click **Browse files** to upload supporting documents * Upload PDFs, images, or other relevant files * Use **View current** to review uploaded files * Use **Delete** to remove outdated files Supported file types typically include PDF, DOC, DOCX, JPG, PNG, and other common formats. ## Payment Processing Flow ### For Customers When customers choose your custom payment method: 1. **Payment Selection**: Customer selects your custom payment method from available payment methods during checkout 2. **Order Placement**: Customer clicks "Place order" to complete the purchase 3. **Payment Instructions**: Customer is redirected to order details page with your custom payment instructions 4. **Transfer Execution**: Customer follows your specific payment process using provided instructions 5. **Order Tracking**: Customer can monitor order status in their billing overview 6. **Order Fulfillment**: Order is processed after payment verification by admin Payment details are provided after placing the order, not during checkout. Customers are immediately redirected to the order details page where they can view complete payment instructions for initiating payments. ### For Administrators To process custom payment method orders: 1. **Access Orders**: Navigate to **Billing > Orders** in admin panel to view all orders 2. **Filter Pending Orders**: Select "Pending" status from the filter options to view all orders awaiting manual verification (including custom payment methods and other manual payment methods) 3. **Review Order Details**: Click on individual orders to view customer and payment information 4. **Verify Payments**: Confirm payment completion through your defined process 5. **Update Order Status**: Use **Approve** or **Reject** buttons to update order status 6. **Process Orders**: Approved orders are processed immediately and cannot be reverted Custom payment methods require manual verification. Always confirm payment completion before fulfilling orders. Once approved or rejected, orders cannot be reverted. ## Order Management ### Admin Order Management Custom payment method orders appear in the admin panel with "Pending" status until manually verified. Note that the pending orders list includes all manual payment methods, not just custom payment methods: 1. **Access Orders**: Navigate to **Billing > Orders** in the admin panel to view all orders 2. **Filter Pending Orders**: Select "Pending" status from the filter options to view all orders awaiting manual verification (including custom payment methods and other manual payment methods) 3. **Review Order Details**: Click on any order to view: * Customer information and workspace details * Order summary (plan, credits, total amount) * Payment method information * Order creation date and status ### Order Status Actions For each pending custom payment method order, you can: * **Approve**: Click the green "Approve" button to confirm payment and fulfill the order * **Reject**: Click the gray "Reject" button to cancel the order if payment is not received ### Customer Order Tracking Customers can track their custom payment method orders through their billing overview: 1. **Access Billing**: Navigate to billing overview from the main dashboard 2. **View Orders**: Check the "Latest orders" section for pending custom payment method orders 3. **Order Details**: Click on any order to view detailed payment instructions 4. **Status Updates**: Order status updates automatically when admin approves payment ### Customer Checkout Experience When customers select your custom payment method as their payment method: 1. **Payment Method Selection**: During checkout, customers can choose your custom payment method from available payment options 2. **Order Placement**: After selecting the custom payment method, customers click "Place order" to complete the purchase 3. **Order Confirmation**: The system creates a pending order and redirects to order details page 4. **Payment Instructions**: Customers receive comprehensive payment instructions including: * Order ID for reference * Custom payment instructions you've configured * Any uploaded instruction files * Contact information for support The checkout page displays "Payment details will be provided after placing the order" to inform customers that payment instructions come after order creation. ## Best Practices ### Instruction Writing **Clear and Concise** * Use simple, easy-to-understand language * Break complex processes into numbered steps * Include all necessary contact information * Specify exact amounts and reference numbers **Complete Information** * Include all required payment details * Specify processing times and deadlines * Mention any required documentation * Provide multiple contact methods ### Customer Communication **Proactive Support** * Provide clear contact information for questions * Set realistic expectations for processing times * Offer multiple ways to reach support * Follow up on pending payments **Documentation** * Keep records of all custom payment transactions * Maintain copies of payment confirmations * Document any special arrangements * Track payment processing times ### Security Considerations **Payment Verification** * Always verify payment completion before order fulfillment * Use secure methods for payment confirmation * Protect sensitive customer information * Maintain audit trails for all transactions **Documentation Security** * Secure storage of payment-related files * Regular backup of payment records * Access controls for sensitive information * Compliance with data protection regulations ## Common Use Cases ### Offline Payments * Cash payments for local customers * Check payments for B2B transactions * Money order or cashier's check payments * In-person payment collection ### Specialized Payment Methods * Cryptocurrency payments * Wire transfers with specific instructions * Payment plans or installments * Corporate purchase orders ### Regional Payment Methods * Local payment systems not supported by standard gateways * Bank-specific payment processes * Government or institutional payment methods * Alternative financial services ## Troubleshooting ### Common Issues **Unclear Instructions** * Review and simplify payment instructions * Test instructions with a sample customer * Gather feedback and improve clarity * Provide multiple contact methods for questions **Payment Verification Delays** * Establish clear verification procedures * Set up automated notifications for new orders * Create escalation procedures for delayed payments * Maintain regular communication with customers **File Upload Issues** * Check file size and format requirements * Ensure files are accessible and properly formatted * Test file uploads before going live * Provide alternative access methods if needed ### Order Status Management **Pending Orders** * Orders remain in "Pending" status until manually approved * Customers cannot use purchased credits until order is approved * Orders can be rejected if payment is not received within reasonable time **Approved Orders** * Orders are processed immediately upon approval * Credits are immediately available to customers * Orders cannot be reverted or reversed once approved **Rejected Orders** * Orders are cancelled and credits are not provided * Orders cannot be reverted or reversed once rejected * Customers should be notified of rejection with reason * New orders can be placed if payment issues are resolved Manual Payment Method is now configured and ready to accept payments through your custom payment process. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Iyzico Integration Source: https://docs.aikeedo.com/integrations/payment-gateways/iyzico Configure the Iyzico payment gateway in Aikeedo via UI: enter keys, set currency, and add webhooks. No coding required. Iyzico enables secure card payments and subscriptions in Turkey. This guide shows how to configure the ready‑to‑use plugin in Aikeedo using your Iyzico dashboard. No code is needed. Iyzico integration is available as a separate plugin that must be purchased from the [Aikeedo Marketplace](https://aikeedo.com/marketplace/?utm_source=docs\&utm_medium=content) before you can configure this payment gateway. Subscription management (Abonelik Yönetimi) is provided by Iyzico as an add‑on. To use subscriptions, enable it from the Eklentiler section in your Iyzico dashboard. Learn more: [Iyzico Abonelik](https://docs.iyzico.com/urunler/abonelik). ## Prerequisites Make sure you have: * An active [Iyzico merchant account](https://www.iyzico.com/) * Access to your Aikeedo admin panel * Your domain with SSL (HTTPS) * A business registered in Turkey (required by Iyzico) ## Step 1: Get your Iyzico API keys From the Iyzico dashboard: 1. Log in to the [Iyzico Merchant Panel](https://merchant.iyzipay.com/login) or Sandbox panel if testing. 2. Go to **Ayarlar > Firma Ayarları** (Settings > Merchant Settings). 3. In the **API Anahtarları** card you will see: * **API Anahtarı** (API Key) — public key * **Güvenlik Anahtarı** (Secret Key) 4. Copy both values. You will paste them into Aikeedo. Keep your Secret Key confidential. Do not share it publicly. ## Step 2: Configure Iyzico in Aikeedo 1. In Aikeedo, open **Payments** and click **Iyzico**. 2. In the **Details** section: * **Status**: Enable to turn on Iyzico. * **Charge Currency**: Choose the currency to charge customers. Options include: Turkish Lira (TRY), US Dollar (USD), Euro (EUR), British Pound (GBP), Norwegian Krone (NOK), Russian Ruble (RUB), Swiss Franc (CHF), or **Inherit** to use your default. * **Mode**: Select **Sandbox** for testing or **Live** for production. 3. In the **Keys** section (Sandbox or Live tab): * **API public key**: paste your Iyzico API Key. * **Secret key**: paste your Iyzico Secret Key. 4. In the **Webhooks** card, Aikeedo shows your read‑only webhook URL. * Copy this URL; you will paste it into the Iyzico dashboard in the next step. 5. Click **Save changes**. Iyzico is now connected. New payments will be processed through Iyzico according to your selected mode and currency. ## Step 3: Add webhook URLs in Iyzico To receive payment and subscription notifications from Iyzico: 1. In the Iyzico dashboard, open **Ayarlar > Firma Ayarları**. 2. In **İşyeri Bildirimleri** (Merchant Notifications), enable notifications and paste the webhook URL you copied from Aikeedo into the **İşyeri Bildirimleri Url** field. 3. If you use subscriptions, in **İşyeri Abonelik Ödeme Bildirimleri** enable both toggles and paste the same webhook URL into: * **Başarılı Abonelik Bildirimleri Url** * **Başarısız Abonelik Bildirimleri Url** 4. Save changes in the Iyzico dashboard. Using the same single webhook URL for all merchant and subscription events is recommended. Aikeedo routes events automatically. ## Testing To test without real charges: 1. In Aikeedo, set **Mode** to **Test**. 2. Log in to the [Iyzico Sandbox](https://sandbox-merchant.iyzipay.com/). 3. Use Iyzico test cards to perform a payment or a subscription: [Test Kartları](https://docs.iyzico.com/ek-bilgiler/test-kartlari). 4. Check that the transaction appears in Aikeedo and that webhooks are received. Sandbox uses test cards and does not move money. Switch to Live only after successful tests. ## Going live 1. Replace Sandbox keys in Aikeedo with your Live **API Key** and **Secret Key** from Iyzico. 2. Ensure **İşyeri Bildirimleri** and (if applicable) **Abonelik Ödeme Bildirimleri** point to your production domain. 3. Change **Mode** to **Live** and save. ## Troubleshooting Verify you pasted the correct key pair (API Key and Güvenlik Anahtarı) for the selected mode (Sandbox/Live). Confirm notifications are enabled in Iyzico and that the URL matches `{your_domain}/webhooks/iyzico` over HTTPS. If a currency rate provider is configured in Aikeedo, amounts will be converted to the selected Charge Currency automatically. Ensure the Iyzico Abonelik add‑on is purchased and enabled under Eklentiler in the Iyzico dashboard, and subscription notification URLs are set. ## Additional resources * [Iyzico Abonelik (official docs)](https://docs.iyzico.com/urunler/abonelik) * [Iyzico Merchant Panel – Sandbox](https://sandbox-merchant.iyzipay.com/) * [Iyzico Test Cards](https://docs.iyzico.com/ek-bilgiler/test-kartlari) * [Iyzico Website](https://www.iyzico.com/) # Mercado Pago Source: https://docs.aikeedo.com/integrations/payment-gateways/mercadopago Configure Mercado Pago as a payment gateway in Aikeedo to accept one-time and recurring payments across Latin America. The Mercado Pago plugin adds payment acceptance for Latin America to your Aikeedo platform. It supports one-time purchases and recurring subscription billing across seven regional currencies, using Mercado Pago's hosted checkout and Preapproval subscription flows. Mercado Pago is an additional plugin available for purchase from the [Aikeedo Marketplace](https://aikeedo.com/marketplace/mercadopago/?utm_source=docs\&utm_medium=content). Install it from your admin panel before following this guide. ## Prerequisites * A [Mercado Pago](https://www.mercadopago.com/) business account * The Mercado Pago plugin installed on your Aikeedo installation * Access to your Aikeedo admin panel ## Supported currencies | Currency | Country | | - | - | | ARS | Argentina | | BRL | Brazil | | CLP | Chile | | COP | Colombia | | MXN | Mexico | | PEN | Peru | | UYU | Uruguay | ## Step 1: Obtain your access tokens You need separate **Access Token** values for test and live modes. Refer to the [Mercado Pago credentials documentation](https://www.mercadopago.com.ar/developers/en/docs/subscriptions/additional-content/your-integrations/credentials) for instructions on how to find and activate your credentials. Keep your access tokens confidential. Never share them publicly or commit them to version control. ## Step 2: Set up the webhook and obtain the signing secret Aikeedo verifies incoming Mercado Pago webhooks using an HMAC-SHA256 signature. You need to register your webhook URL and obtain the signing secret Mercado Pago provides. 1. In the Mercado Pago Developer Dashboard, navigate to **Notifications > Webhooks**. 2. Click **Add webhook**. 3. Set the notification URL to: ``` https://your-aikeedo-domain.com/webhooks/mercadopago ``` 4. Under **Events**, select all events, or at minimum **Subscription preapproval** (`subscription_preapproval`) to receive subscription lifecycle events. 5. Save the webhook. Mercado Pago will display a **signing secret** — copy it. 6. Repeat this for both your test and live webhook configurations to obtain separate signing secrets for each mode. ## Step 3: Enable Mercado Pago in Aikeedo 1. In your Aikeedo admin panel, navigate to **Settings > Payments > Mercado Pago**. 2. Toggle the switch to enable Mercado Pago. 3. Set the **Charge Currency** — select a specific currency or leave it as **Inherit** to use the platform's default currency. 4. Select the **Mode**: **Test** for development, **Live** for production. 5. Enter your credentials for each mode: * **Live**: live access token and live webhook signing secret * **Test**: test access token and test webhook signing secret 6. Click **Save changes**. Mercado Pago is now enabled on your platform. ## Payment flows **One-time payments** — Aikeedo creates a Checkout Preference and redirects the customer to the Mercado Pago-hosted checkout page. After payment, the customer is redirected back to your platform and the payment is verified against the order. **Recurring subscriptions** — Aikeedo creates a Mercado Pago Preapproval and redirects the customer to authorize it. Subsequent billing cycles are charged automatically on a monthly or yearly cadence. When a subscription is cancelled in Aikeedo, it is cancelled in Mercado Pago via the API. If Mercado Pago sends a `cancelled` or `paused` status via webhook, Aikeedo cancels the subscription on its side as well. ## Testing 1. Set the mode to **Test** in **Settings > Payments > Mercado Pago**. 2. Use [Mercado Pago test users and cards](https://www.mercadopago.com/developers/en/docs/checkout-pro/additional-content/your-integrations/test/cards) to simulate payment scenarios. 3. Verify that one-time payments and subscriptions complete correctly and that webhook events are received and processed. Switch to **Live** mode when you are ready to accept real payments. ## Troubleshooting * **Payments not completing**: Verify that the access token matches the selected mode (test/live) and that the application credentials are active. * **Webhooks not received**: Confirm that the webhook URL is publicly accessible and that the `subscription_preapproval` event type is selected in the Mercado Pago developer dashboard. * **Webhook signature verification failing**: Ensure the **Webhook Signing Secret** in Aikeedo matches the secret shown in the Mercado Pago dashboard for the registered webhook endpoint. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Payment Gateways Source: https://docs.aikeedo.com/integrations/payment-gateways/overview Configure payment gateways for secure online payments in Aikeedo. Choose from built-in options like Stripe, PayPal, Bank Transfer, and Manual Payment, or purchase additional gateway plugins. ## Overview Aikeedo provides comprehensive payment processing capabilities through multiple payment gateways, enabling you to accept payments from customers worldwide. The platform includes built-in payment methods and supports additional gateway plugins for specialized payment processing needs. Built-in payment methods are included with Aikeedo, while additional gateway plugins are available for purchase from the [Aikeedo Marketplace](https://aikeedo.com/marketplace/?utm_source=docs\&utm_medium=content). ## Built-in Payment Methods Aikeedo includes several payment methods out of the box: Industry-leading payment processor with support for cards, digital wallets, and international payments. Popular payment platform supporting PayPal accounts, credit cards, and PayPal Credit. Direct bank transfer payments with domestic and international transfer support. Custom payment method with flexible instructions and manual verification process. ## Additional Gateway Plugins Expand your payment options with specialized gateway plugins available in the marketplace: Russian payment gateway supporting cards, e-wallets, and mobile payments. African payment gateway with support for local payment methods across Africa. Indian payment gateway supporting cards, UPI, net banking, and digital wallets. Turkish payment gateway with comprehensive local payment method support. Cryptocurrency payment gateway supporting Bitcoin, Ethereum, and other digital currencies. Payment gateway for Latin America supporting one-time and recurring payments in ARS, BRL, CLP, COP, MXN, PEN, and UYU. Payment gateway for Southeast Asia supporting one-time and recurring payments in IDR, PHP, VND, THB, SGD, and MYR. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # PayPal Integration Source: https://docs.aikeedo.com/integrations/payment-gateways/paypal Configure PayPal payment gateway in Aikeedo with API credentials, webhooks, and subscription handling for secure online payments. PayPal integration enables secure payment processing and subscription management for your Aikeedo platform. This guide covers account setup, API configuration, and webhook implementation. ## Prerequisites Before you begin, ensure you have: * An active [PayPal Business account](https://www.paypal.com/us/business) * Access to your Aikeedo admin panel * Your domain properly configured with SSL enabled ## Step 1: Set Up Your PayPal Business Account If you haven't already, sign up for a PayPal Business account: 1. Visit the [PayPal Business website](https://www.paypal.com/us/business) and click "Sign Up" 2. Follow the prompts to create and verify your business account 3. Complete any additional verification steps required by PayPal ## Step 2: Obtain PayPal API Credentials To connect Aikeedo with PayPal, you'll need to retrieve your API credentials: 1. Log in to the [PayPal Developer Dashboard](https://developer.paypal.com/dashboard/) 2. Navigate to **Apps & Credentials** 3. Click on **Create App** to generate a new app for your integration 4. Set the following details: * App Name: Choose a name for your integration (e.g., "Aikeedo Payments") * Select "Merchant" as the app type 5. Click "Create App" 6. On the next page, you'll find your **Client ID** and can generate a **Secret Key** Keep your Secret Key confidential! Never share it publicly or include it in client-side code. ## Step 3: Set Up PayPal Webhooks Webhooks are crucial for handling recurring payments and keeping your Aikeedo platform in sync with PayPal. Here's how to set them up: 1. In the PayPal Developer Dashboard, go to your app's details page 2. Scroll down to the **Webhooks** section and click "Add Webhook" 3. Enter your webhook URL: `https://your-aikeedo-domain.com/webhooks/paypal` 4. Select the following events: * `INVOICING.INVOICE.CANCELLED` * `INVOICING.INVOICE.CREATED` * `INVOICING.INVOICE.PAID` * `INVOICING.INVOICE.REFUNDED` * `INVOICING.INVOICE.SCHEDULED` * `INVOICING.INVOICE.UPDATED` * `BILLING.SUBSCRIPTION.CANCELLED` 5. Click "Save" to create the webhook 6. After creation, you'll see a "Webhook ID" - copy this for later use If you're not sure which events to select, it's safe to choose all relevant billing and invoicing events for comprehensive coverage. ## Step 4: Enable PayPal in Aikeedo Now that you have your PayPal account set up, it's time to configure Aikeedo: 1. Log in to your Aikeedo admin panel 2. Navigate to **Settings > Payments > PayPal** 3. Toggle the switch to enable PayPal payments 4. Choose the appropriate mode: * **Sandbox**: For testing payments * **Live**: For processing real transactions 5. Enter the following details: * **Client ID**: Your PayPal app's Client ID * **API Secret Key**: Your PayPal app's Secret Key * **Webhook ID**: The Webhook ID from your webhook setup 6. Set your preferred **Charge Currency** 7. Click "Save changes" to apply your settings Congratulations! PayPal payments are now enabled on your Aikeedo platform. ## Testing Your Integration Before going live, it's crucial to test your PayPal integration: 1. Set Aikeedo to "Sandbox" mode 2. Use [PayPal's sandbox accounts](https://developer.paypal.com/tools/sandbox/accounts/) to simulate various payment scenarios 3. Create a test subscription or product purchase 4. Verify that payments are processed correctly and webhooks are functioning Once you're confident everything is working as expected, switch to "Live" mode to start accepting real payments. ## Troubleshooting If you encounter any issues with your PayPal integration, try these steps: 1. Double-check all API credentials and Webhook ID for accuracy 2. Ensure your webhook URL is correct and accessible 3. Review PayPal's developer dashboard for any error logs or failed webhook attempts 4. Check Aikeedo's error logs for any integration-related issues By following this guide, you've successfully integrated PayPal payments into your Aikeedo platform, providing your users with a secure and convenient payment experience. # Paystack Integration Source: https://docs.aikeedo.com/integrations/payment-gateways/paystack Configure Paystack payment gateway in Aikeedo with API credentials and subscription handling for secure online payments across Africa. Paystack integration enables secure payment processing and subscription management for your Aikeedo platform, specifically designed for African markets. This guide covers account setup and API configuration. Paystack integration is available as a separate plugin that must be purchased from the [Aikeedo Marketplace](https://aikeedo.com/marketplace/?utm_source=docs\&utm_medium=content) before you can configure this payment gateway. ## Prerequisites Before you begin, ensure you have: * An active [Paystack merchant account](https://paystack.com/) * Access to your Aikeedo admin panel * Your domain properly configured with SSL enabled * A valid business registration in supported African countries ## Step 1: Set Up Your Paystack Account If you haven't already, sign up for a Paystack merchant account: 1. Visit the [Paystack website](https://paystack.com/) and click "Create a free account" 2. Follow the prompts to create and verify your merchant account 3. Complete the business verification process with required documents 4. Wait for account approval (typically 1-2 business days) Paystack requires business registration in supported African countries. Personal accounts are not supported for merchant services. ## Step 2: Obtain Paystack API Credentials To connect Aikeedo with Paystack, you'll need to retrieve your API credentials: 1. Log in to your [Paystack Dashboard](https://dashboard.paystack.com/) 2. Navigate to **Settings** > **API Keys & Webhooks** 3. You'll find your credentials: * **Public Key**: Starts with `pk_test_` (test) or `pk_live_` (live) * **Secret Key**: Starts with `sk_test_` (test) or `sk_live_` (live) Keep your Secret Key confidential! Never share it publicly or include it in client-side code. ## Step 3: Configure Paystack in Aikeedo Now that you have your Paystack account set up, configure the integration in Aikeedo: 1. Log in to your Aikeedo admin panel 2. Navigate to **Settings > Payments** page 3. Click on **Paystack** ### Details Section Configure the general settings: 1. **Status**: Toggle the switch to enable Paystack payments 2. **Charge Currency**: Select your preferred currency * **Inherit**: Use your platform's default currency * **Nigerian Naira (NGN)**: Default for Nigeria * **Ghanaian Cedi (GHS)**: For Ghana * **Kenyan Shilling (KES)**: For Kenya * **South African Rand (ZAR)**: For South Africa * **US Dollar (USD)**: International transactions * If you select a currency different from your default and have a currency rate provider set up, amounts will be automatically converted 3. **Mode**: Choose between: * **Test**: For testing payments with Paystack's test environment * **Live**: For processing real transactions ### Keys Section Enter your API credentials: 1. **API public key**: Enter your Paystack public key (starts with `pk_test_` for test mode or `pk_live_` for live mode) 2. **API secret key**: Enter your Paystack secret key (starts with `sk_test_` for test mode or `sk_live_` for live mode) 3. Click **Save changes** to apply your settings ### Webhooks Section Configure webhook notifications: 1. **Webhook URL**: The webhook URL is automatically set to `{your_domain}/webhooks/paystack` 2. Copy this URL and add it to your Paystack Dashboard: * Go to **Settings** > **API Keys & Webhooks** in your Paystack Dashboard * Enter the webhook URL in the **Test Webhook URL** field (or **Live Webhook URL** for production) * Click **Save changes** in your Paystack Dashboard The webhook URL will automatically handle all necessary payment events including successful payments, failed payments, and subscription updates. No additional configuration is required in Aikeedo. Congratulations! Paystack payments are now enabled on your Aikeedo platform. ## Testing Your Integration Before going live, it's crucial to test your Paystack integration: 1. Set the Paystack payment gateway to "Test" mode in the Details section 2. Use [Paystack's test card numbers](https://paystack.com/docs/payments/test-payments) to simulate various payment scenarios: 3. Create a test subscription or product purchase 4. Verify that payments are processed correctly Paystack test environment uses special test card numbers and doesn't process real payments. Always test thoroughly before switching to live mode. ## Troubleshooting If you encounter any issues with your Paystack integration, try these steps: 1. **Verify API Credentials**: Double-check your API Public Key and Secret Key in the Keys section 2. **Check Mode Setting**: Ensure you're using Test mode for testing and Live mode for production 3. **Verify Currency**: Make sure your selected currency is supported by Paystack 4. **Test Payments**: Use Paystack's test card numbers to verify the integration works correctly 5. **Check Webhook Configuration**: Ensure your webhook URL is properly configured in both Aikeedo and Paystack ### Common Issues Double-check your API Public Key and Secret Key. You can find these in your Paystack Dashboard under Settings > API Keys & Webhooks. Ensure you're using the correct mode (Test for testing, Live for production) and that your currency is supported. Verify that your webhook URL is properly configured in your Paystack Dashboard and that your domain has SSL enabled. If you have a currency rate provider set up, ensure it supports the currencies you're using. The amount will be automatically converted to your chosen charge currency. ## Additional Resources * [Paystack Developer Documentation](https://paystack.com/docs) * [Paystack API Reference](https://paystack.com/docs/api/) * [Webhook Events Documentation](https://paystack.com/docs/api/#events) * [Test Payments Guide](https://paystack.com/docs/payments/test-payments) * [Supported Countries and Currencies](https://paystack.com/docs/payments/currencies) By following this guide, you've successfully integrated Paystack payments into your Aikeedo platform, providing your users with a secure and convenient payment experience tailored for African markets. # Razorpay Integration Source: https://docs.aikeedo.com/integrations/payment-gateways/razorpay Configure the Razorpay plugin in Aikeedo using API keys and webhooks. Razorpay enables secure payments and subscriptions for the Indian market. This guide shows you how to fetch keys from Razorpay and paste them into Aikeedo. Razorpay integration is available as a separate plugin that must be purchased from the [Aikeedo Marketplace](https://aikeedo.com/marketplace/?utm_source=docs\&utm_medium=content) before you can configure this payment gateway. ## Prerequisites Before you begin, ensure you have: * An active [Razorpay merchant account](https://razorpay.com/) * Access to your Aikeedo admin panel * Your domain using HTTPS (valid SSL certificate) * Business eligibility for accepting payments in India ## Step 1: Set up your Razorpay account If you are new to Razorpay: 1. Visit the [Razorpay website](https://razorpay.com/) and click Sign Up”. 2. Complete onboarding and KYC verification. 3. Wait for account approval (usually 1–2 business days). ## Step 2: Get your API keys in Razorpay 1. Log in to the [Razorpay Dashboard](https://dashboard.razorpay.com/). 2. Select the mode at the top: **Test** or **Live**. 3. Go to **Account & Settings → API Keys** and click **Generate Key** for the selected mode. 4. Copy the following from the pop‑up: * **Key Id** (starts with `rzp_test_` in Test or `rzp_live_` in Live) * **Key Secret** (shown once when generated) Keep your Key Secret confidential. It is shown only once on generation; store it securely. Generating **Live** keys may require your website/app details to be verified in Razorpay. Only users with Owner or Admin role can access API Keys. See Razorpay’s guide: [API Keys](https://razorpay.com/docs/payments/dashboard/account-settings/api-keys/). ## Step 3: Configure required Razorpay settings for subscriptions These settings are mandatory when you sell subscriptions: * **Enable Flash Checkout** in your Razorpay Dashboard. See Razorpay’s docs: [Subscriptions – Flash Checkout](https://razorpay.com/docs/payments/subscriptions/#flash-checkout). * **Fee bearer model** must be set to **You pay the fees**. The “Convenience fee model” is not supported for subscriptions. See Razorpay’s guide: [Configuration – Fee bearer model](https://razorpay.com/docs/payments/dashboard/account-settings/configuration/#manage-fee-bearer-model). Without these settings, subscription payments will fail. ## Step 4: Create a webhook in Razorpay 1. In the Razorpay Dashboard, go to **Accounts & Settings → Webhooks**. 2. Click **Add New Webhook**. 3. Set the Webhook URL to your site URL followed by `/webhooks/razorpay`, for example: `https://your-domain.com/webhooks/razorpay`. 4. Select **All events**. 5. Set a **Webhook secret** (any random string). Copy it—you will paste the same value into Aikeedo. 6. Save the webhook. The webhook secret must match exactly in Razorpay and in Aikeedo. ## Step 5: Enable Razorpay in Aikeedo Open the Aikeedo admin and go to **Payments → Razorpay**. Fill in the sections as shown in the Aikeedo dashboard screenshot. ### Details section 1. **Status**: Enable the toggle to turn on Razorpay. 2. **Charge Currency**: Choose your billing currency. If you use a currency different from your default currency and have a currency rate provider configured, amounts are converted automatically. 3. **Mode**: Choose **Test** for testing or **Live** for real payments. For subscriptions, ensure Flash Checkout is enabled and Fee bearer is set to “You pay the fees” in Razorpay, as noted above. ### Keys section 1. **API Key Id**: Paste the value from Razorpay. 2. **API Key Secret**: Paste the secret from Razorpay. ### Webhooks section 1. **Webhook URL**: This is shown in the Aikeedo UI. Create the same URL in Razorpay. 2. **Webhook secret**: Paste the exact secret you set in Razorpay. 3. Click **Save changes**. Razorpay is now connected. You can accept payments and create subscriptions. ## Testing your integration 1. Set **Mode** to **Test** in Aikeedo and use your Razorpay Test keys. 2. Make a test purchase or subscription using Razorpay’s test methods: [Test Card Details](https://razorpay.com/docs/payments/payments/test-card-details/). 3. Confirm you see payment updates in Aikeedo and in the Razorpay Dashboard. The test environment does not move real funds. Switch to Live mode only after successful tests. ## Troubleshooting Check that Flash Checkout is enabled and Fee bearer is set to “You pay the fees” in Razorpay. See: [Subscriptions – Flash Checkout](https://razorpay.com/docs/payments/subscriptions/#flash-checkout) and [Configuration – Fee bearer model](https://razorpay.com/docs/payments/dashboard/account-settings/configuration/#manage-fee-bearer-model). Verify your site is accessible via HTTPS, the Webhook URL matches `https://your-domain.com/webhooks/razorpay`, and the secret matches in both places. Re‑copy the API Key Id and API Key Secret from **Accounts & Settings → API Keys** and paste them into Aikeedo. ## Additional resources * Razorpay Subscriptions – Flash Checkout: [Subscriptions – Flash Checkout](https://razorpay.com/docs/payments/subscriptions/#flash-checkout) * Fee bearer model configuration: [Configuration – Fee bearer model](https://razorpay.com/docs/payments/dashboard/account-settings/configuration/#manage-fee-bearer-model) * Test cards and sandbox methods: [Test Card Details](https://razorpay.com/docs/payments/payments/test-card-details/) # Stripe Integration Source: https://docs.aikeedo.com/integrations/payment-gateways/stripe Configure Stripe payment gateway in Aikeedo with API keys, webhooks, and subscription handling for secure online payments and recurring billing. Stripe integration enables secure payment processing and subscription management for your Aikeedo platform. This guide covers account setup, API configuration, and webhook implementation. ## Prerequisites Before you begin, ensure you have: * An active [Stripe account](https://stripe.com/) * Access to your Aikeedo admin panel * Your domain properly configured with SSL enabled ## Step 1: Set Up Your Stripe Account If you haven't already, sign up for a Stripe account: 1. Visit the [Stripe website](https://stripe.com/) and click "Start now" or "Create account" 2. Follow the prompts to create and verify your account 3. Complete any additional verification steps required by Stripe ## Step 2: Obtain Stripe API Keys To connect Aikeedo with Stripe, you'll need to retrieve your API keys: 1. Log in to your [Stripe Dashboard](https://dashboard.stripe.com/) 2. Navigate to **Developers** > [**API keys**](https://dashboard.stripe.com/apikeys) 3. You'll see two types of keys: * **Publishable key**: Starts with `pk_` * **Secret key**: Starts with `sk_` Keep your secret key confidential! Never share it publicly or include it in client-side code. ## Step 3: Set Up Stripe Webhooks Webhooks are crucial for handling recurring payments and keeping your Aikeedo platform in sync with Stripe. Here's how to set them up: 1. In your Stripe Dashboard, go to **Developers** > [**Webhooks**](https://dashboard.stripe.com/webhooks) 2. Click "Add endpoint" 3. Enter your webhook URL: `https://your-aikeedo-domain.com/webhooks/stripe` 4. Under "Events to send," select the following: * `invoice.created` * `invoice.updated` * `invoice.finalized` * `invoice.marked_uncollectible` * `invoice.payment_succeeded` * `invoice.deleted` * `invoice.voided` * `customer.subscription.updated` * `customer.subscription.deleted` 5. Click "Add endpoint" to create the webhook 6. After creation, you'll see a "Signing secret" - copy this for later use If you're not sure which events to select, it's safe to choose "Select all events" for comprehensive coverage. ## Step 4: Enable Stripe in Aikeedo Now that you have your Stripe account set up, it's time to configure Aikeedo: 1. Log in to your Aikeedo admin panel 2. Navigate to **Settings > Payments > Stripe** 3. Toggle the switch to enable Stripe payments 4. Choose the appropriate mode: * **Test**: For testing payments (use Stripe's test cards) * **Live**: For processing real transactions 5. Enter the following details: * **API Publishable Key**: Your Stripe publishable key * **API Secret Key**: Your Stripe secret key * **Webhook Secret**: The signing secret from your webhook setup 6. Click "Save changes" to apply your settings Congratulations! Stripe payments are now enabled on your Aikeedo platform. ## Testing Your Integration Before going live, it's crucial to test your Stripe integration: 1. Set Aikeedo to "Test" mode 2. Use [Stripe's test card numbers](https://stripe.com/docs/testing) to simulate various payment scenarios 3. Create a test subscription or product purchase 4. Verify that payments are processed correctly and webhooks are functioning Once you're confident everything is working as expected, switch to "Live" mode to start accepting real payments. ## Troubleshooting If you encounter any issues with your Stripe integration, try these steps: 1. Double-check all API keys and secrets for accuracy 2. Ensure your webhook URL is correct and accessible 3. Review Stripe's dashboard for any error logs or failed webhook attempts 4. Check Aikeedo's error logs for any integration-related issues By following this guide, you've successfully integrated Stripe payments into your Aikeedo platform, providing your users with a secure and efficient payment experience. ## Form types Aikeedo supports three form types for Stripe payments. You can select the form type in **Settings > Payments > Stripe** under the **Form type** dropdown: | Form type | Description | | - | - | | **Simple** | A minimal card-only input form. | | **Advanced** | A full card form that includes all payment methods enabled in your Stripe account (e.g. wallets, local methods). | | **Hosted Checkout** | Redirects customers to a Stripe-hosted checkout page to complete payment, rather than an embedded form on your platform. | ## Stripe Automatic Tax Collection When **Hosted Checkout** is selected as the form type, an additional **Automatic Tax** option becomes available. When enabled, Stripe determines the correct tax rates and collects tax on your behalf — no manual rate configuration or tax engine plugin required. To enable Stripe Automatic Tax Collection: 1. Navigate to **Settings > Payments > Stripe** in your admin panel. 2. Set **Form type** to **Hosted Checkout**. 3. Under the **Tax** section, toggle on **Automatic Tax**. 4. Click **Save changes**. Stripe Tax must be activated in your [Stripe Dashboard](https://dashboard.stripe.com/tax/registrations) before enabling this option. You should also set a default product tax code in your Stripe Tax settings as a fallback. Enable Automatic Tax only when no other tax engine plugin is active in your billing settings. Running both simultaneously will result in double tax calculation. Stripe Automatic Tax Collection is a separate feature from the [Stripe Tax Engine plugin](/integrations/tax-engines/stripe-tax). The plugin calculates tax using the Stripe Tax Calculations API for use within Aikeedo's checkout flow, while Automatic Tax Collection delegates tax handling entirely to Stripe. # Xendit Source: https://docs.aikeedo.com/integrations/payment-gateways/xendit Configure Xendit as a payment gateway in Aikeedo to accept one-time and recurring payments across Southeast Asia. The Xendit plugin adds payment acceptance for Southeast Asia to your Aikeedo platform. It supports one-time payment links and recurring subscription plans across six regional currencies, serving customers in Indonesia, the Philippines, Vietnam, Thailand, Singapore, and Malaysia. Xendit is an additional plugin available for purchase from the [Aikeedo Marketplace](https://aikeedo.com/marketplace/xendit/?utm_source=docs\&utm_medium=content). Install it from your admin panel before following this guide. ## Prerequisites Before you begin, ensure you have: * A [Xendit](https://www.xendit.co/) business account * The Xendit plugin installed on your Aikeedo installation * Access to your Aikeedo admin panel ## Supported currencies Xendit supports the following Southeast Asian currencies: | Currency | Country | | - | - | | IDR | Indonesia | | PHP | Philippines | | VND | Vietnam | | THB | Thailand | | SGD | Singapore | | MYR | Malaysia | ## Step 1: Obtain your API key and webhook token 1. Log in to your [Xendit Dashboard](https://dashboard.xendit.co/). 2. Navigate to **Settings > API Keys**. 3. Copy your **Secret API Key** (starts with `xnd_`). Keep your secret API key confidential. Never share it publicly or commit it to version control. To authenticate incoming webhooks: 1. In the Xendit Dashboard, navigate to **Settings > Webhooks**. 2. Copy the **Webhook Verification Token** shown at the top of the page. Aikeedo uses this token to verify that incoming webhook events are genuine. ## Step 2: Configure the webhook 1. In the Xendit Dashboard, navigate to **Settings > Webhooks**. 2. Under the relevant event types, add your webhook URL: ``` https://your-aikeedo-domain.com/webhooks/xendit ``` 3. Enable at minimum the **Subscription** events to keep subscription status in sync. 4. Save the webhook configuration. ## Step 3: Enable Xendit in Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to **Settings > Payments > Xendit**. 3. Toggle the switch to enable Xendit. 4. Enter your **Secret API Key**. 5. Enter your **Webhook Verification Token**. 6. Click **Save changes**. Xendit is now enabled on your platform. ## Payment flows **One-time payments** — Aikeedo creates a Xendit payment session (payment link) and redirects the customer to the Xendit-hosted payment page. After payment, the customer is redirected back to your platform. **Recurring subscriptions** — Aikeedo creates a Xendit recurring plan and redirects the customer to an authorization page for the initial payment. Subsequent billing cycles are charged automatically. When a subscription is cancelled in Aikeedo, the corresponding Xendit recurring plan is inactivated. Xendit recurring plans do not support billing dates on days 29–31. If a subscription would fall on one of those days, Aikeedo automatically shifts the anchor date to the 1st of the following month. ## Testing Xendit provides a test mode accessible with test-mode API keys. To test your integration: 1. In the Xendit Dashboard, switch to **Test Mode** and copy your test-mode Secret API Key. 2. Enter the test key in **Settings > Payments > Xendit** in Aikeedo. 3. Use Xendit's test payment methods to simulate one-time and recurring payment scenarios. 4. Verify that webhook events are received and subscription statuses are updated correctly in Aikeedo. Switch back to your live API key when you are ready to accept real payments. ## Troubleshooting * **Payments not completing**: Verify that your secret API key is correct and that the account is active in Xendit. * **Webhooks not received**: Confirm that the webhook URL is publicly accessible and that the correct event types are subscribed in the Xendit Dashboard. * **Webhook verification failures**: Ensure the **Webhook Verification Token** in Aikeedo matches the token shown in the Xendit Dashboard under **Settings > Webhooks**. * **Recurring plan errors**: Check that your Xendit account is enabled for recurring payments and that the selected currency is supported in your account region. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # YooKassa Integration Source: https://docs.aikeedo.com/integrations/payment-gateways/yookassa Configure YooKassa payment gateway in Aikeedo with API credentials and subscription handling for secure online payments in Russia and CIS countries. YooKassa integration enables secure payment processing and subscription management for your Aikeedo platform, specifically designed for the Russian and CIS markets. This guide covers account setup and API configuration. YooKassa integration is available as a separate plugin that must be purchased from the [Aikeedo Marketplace](https://aikeedo.com/marketplace/?utm_source=docs\&utm_medium=content) before you can configure this payment gateway. ## Prerequisites Before you begin, ensure you have: * An active [YooKassa merchant account](https://yookassa.ru/) * Access to your Aikeedo admin panel * Your domain properly configured with SSL enabled * A valid business registration in Russia or CIS countries ## Step 1: Set Up Your YooKassa Account If you haven't already, sign up for a YooKassa merchant account: 1. Visit the [YooKassa website](https://yookassa.ru/) and click "Подключить" (Connect) 2. Follow the prompts to create and verify your merchant account 3. Complete the business verification process with required documents 4. Wait for account approval (typically 1-3 business days) YooKassa requires business registration in Russia or CIS countries. Personal accounts are not supported for merchant services. ## Step 2: Obtain YooKassa API Credentials To connect Aikeedo with YooKassa, you'll need to retrieve your API credentials: ### Get Your Shop ID 1. Log in to your [YooKassa Dashboard](https://yookassa.ru/my) 2. In the left sidebar, find your **Shop ID** under your organization name * It will show your organization name with "ShopID XXXXXXX" ### Get Your API Secret Key 1. In the left sidebar, click on **Интеграция** (Integration) 2. Select **Ключи API** (API Keys) from the integration submenu 3. You'll find your **Секретный ключ** (Secret Key) in the API Keys section Keep your Secret Key confidential! Never share it publicly or include it in client-side code. If you lose your key, you can regenerate it using the refresh icon in the dashboard. ## Step 3: Configure YooKassa in Aikeedo Now that you have your YooKassa account set up, configure the integration in Aikeedo: 1. Log in to your Aikeedo admin panel 2. Navigate to **Payments** in the main menu 3. Click on **YooKassa** ### Details Section Configure the general settings: 1. **Status**: Toggle the switch to enable YooKassa payments 2. **Charge Currency**: Select your preferred currency * **Russian Ruble**: Use RUB for all transactions * **Inherit**: Use your platform's default currency (e.g., USD) without conversion * If you select a currency different from your default and have a currency rate provider set up, amounts will be automatically converted 3. **VAT code**: Select the appropriate VAT rate for Russian tax compliance * This information is only for the YooKassa receipt * Plan prices must be set tax inclusive 4. **Mode**: Choose between: * **Test**: For testing payments with YooKassa's test environment * **Live**: For processing real transactions ### Keys Section Enter your API credentials: 1. **Shop ID**: Enter your YooKassa Shop ID (required) 2. **API secret key**: Enter your YooKassa Secret Key (required) 3. Click **Save changes** to apply your settings Congratulations! YooKassa payments are now enabled on your Aikeedo platform. ## Testing Your Integration Before going live, it's crucial to test your YooKassa integration: 1. Set the YooKassa payment gateway to "Test" mode in the Details section 2. Use [YooKassa's test card numbers](https://yookassa.ru/developers/payment-acceptance/testing-and-going-live/testing) to simulate various payment scenarios 3. Create a test subscription or product purchase 4. Verify that payments are processed correctly YooKassa test environment uses special test card numbers and doesn't process real payments. Always test thoroughly before switching to live mode. ## Troubleshooting If you encounter any issues with your YooKassa integration, try these steps: 1. **Verify API Credentials**: Double-check your Shop ID and Secret Key in the Keys section 2. **Check Mode Setting**: Ensure you're using Test mode for testing and Live mode for production 3. **Verify Currency**: Make sure your selected currency is supported by YooKassa 4. **Test Payments**: Use YooKassa's test card numbers to verify the integration works correctly ### Common Issues Double-check your Shop ID and Secret Key. You can find these in your YooKassa Dashboard under Integration > API Keys. Ensure you're using the correct mode (Test for testing, Live for production) and that your currency is supported. Make sure you've selected the correct VAT code for your business type and that your plan prices are set tax inclusive. ## Additional Resources * [YooKassa Developer Documentation](https://yookassa.ru/developers?lang=en) * [YooKassa API Reference](https://yookassa.ru/developers/api?lang=en#intro) * [Payment Methods Guide](https://yookassa.ru/developers/payment-acceptance/overview) * [Testing Guide](https://yookassa.ru/developers/payment-acceptance/testing-and-going-live/testing) By following this guide, you've successfully integrated YooKassa payments into your Aikeedo platform, providing your users with a secure and convenient payment experience tailored for the Russian and CIS markets. # Serper API Integration Source: https://docs.aikeedo.com/integrations/serper Enhance your Aikeedo platform with Serper API's Google search capabilities. This guide walks you through setting up and leveraging Serper API for real-time search results in your Chat tool. ## Introduction Aikeedo's Serper API integration unlocks real-time Google search capabilities for your platform. By integrating Serper.dev's API, you can significantly enhance your Chat tool, allowing users to access up-to-date search results directly within their conversations. ## Setting Up the Integration Follow these steps to connect Serper API with your Aikeedo platform: ### Step 1: Obtain Your Serper API Key 1. If you don't have a Serper account, [sign up here](https://serper.dev/). 2. Once logged in, you'll be taken to your Serper dashboard. 3. In the left sidebar of the dashboard, click on the "API Key" menu item. 4. Copy your API key from the popup that appears—you'll need this for Aikeedo. Keep your API key secure and confidential. It grants access to Serper API services and should not be shared publicly. Serper provides a dashboard where you can monitor your API usage, including the number of requests made in the last 30 days and 24 hours, as well as your total credits used. ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to **Settings > Serper API**. 3. In the "API" section, enter your Serper API key in the "API Key" field. 4. Click **Save changes** to activate the integration. Great job! Serper API is now integrated with your Aikeedo platform. ## Aikeedo Tools Powered by Serper API Serper API integration enhances the following Aikeedo tool: 1. **Chat**: Enable real-time Google search results within conversations using the "Google search" capability. ## Best Practices To make the most of your Serper API integration: * Use clear and concise search queries for best results. * Encourage users to specify their search intent when using the Google search capability. * Monitor your API usage to manage costs effectively. * Regularly update your integration to access the latest features and improvements. ## Troubleshooting If you encounter issues with the Serper API integration, try these steps: 1. Verify that your API key is correct and active. 2. Check your Serper account for any usage limits or restrictions. 3. Ensure your Aikeedo platform is up to date. 4. If you receive error messages related to API access or quotas, verify your account status with Serper. Can't find your API Key? Click the "Click here" link below the API Key field in the Aikeedo settings for additional guidance. Remember to review Serper's usage policies and pricing to ensure compliance and manage costs effectively as you scale your search integration. # Stability AI Integration Source: https://docs.aikeedo.com/integrations/stabilityai Enhance your Aikeedo platform with Stability AI's advanced image generation capabilities. This guide walks you through setting up and leveraging Stability AI's powerful models for creating unique and high-quality images. ## Introduction Aikeedo's Stability AI integration unlocks advanced image generation capabilities for your platform. With access to Stability AI's cutting-edge models, you can significantly enhance your Imagine tool, allowing users to create unique and high-quality images from text descriptions. ## Setting Up the Integration Follow these steps to connect Stability AI with your Aikeedo platform: ### Step 1: Obtain Your Stability AI API Key 1. If you don't have a Stability AI account, [sign up here](https://platform.stability.ai/sign-up). 2. Once logged in, click on your profile image in the top right corner of the page. 3. The API Keys page will open automatically. If not, select "API Keys" from the left side menu. 4. On the API Keys page, you'll see a list of your existing API keys. 5. If you don't have any keys, or want to create a new one, click the "+ Create API Key" button in the top right corner of the API Keys section. 6. Once created, you'll see your new API key in the list. The key itself will be partially hidden for security reasons. 7. Use the copy icon next to your API key to copy it to your clipboard—you'll need this for Aikeedo. Keep your API key secure and confidential. It grants access to Stability AI services and should not be shared publicly. Stability AI masks part of the key in the dashboard for security reasons. ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel. 2. Navigate to **Settings > StabilityAI**. 3. In the "API" section, enter your Stability AI API key in the "API Key" field. 4. Click **Save changes** to activate the integration. Great job! Stability AI is now integrated with your Aikeedo platform. ## Aikeedo Tools Powered by Stability AI Stability AI integration enhances the following Aikeedo tool: 1. **Imagine**: Create unique and high-quality images from text descriptions using Stability AI's advanced image generation models. ## Best Practices To make the most of your Stability AI integration: * Experiment with different models to find the best fit for your use case. * Provide clear and detailed text prompts for optimal image generation results. * Consider the style and complexity requirements of your project when selecting models. * Use negative prompts to refine and exclude unwanted elements from generated images. * Monitor your API usage to manage costs effectively. * Regularly update your integration to access the latest models and features. ## Troubleshooting If you encounter issues with the Stability AI integration, try these steps: 1. Verify that your API key is correct and active. 2. Check your Stability AI account for any usage limits or restrictions. 3. Ensure your Aikeedo platform is up to date. 4. If you receive error messages related to model access or quotas, verify your account status with Stability AI. 5. For model-specific issues, confirm that your account has access to the required models. 6. If you experience slow response times, consider using a different model or optimizing your prompts. Regularly review your Stability AI usage and available model options to ensure smooth integration with Aikeedo. Remember to review Stability AI's usage policies and pricing to ensure compliance and manage costs effectively as you scale your image generation integration. # Manual Tax Engine Source: https://docs.aikeedo.com/integrations/tax-engines/manual-tax Configure flat and percentage tax rates manually in Aikeedo using the Manual Tax Engine plugin, with support for per-country rules and multiple stacked rates. The Manual Tax Engine plugin lets you define your own tax rates without relying on any external service. You configure a global default rate as a fallback, then add per-country rules with one or more named rates each. Rates can be a percentage of the order amount or a fixed currency amount. Manual Tax Engine is an additional plugin available for purchase from the [Aikeedo Marketplace](https://aikeedo.com/marketplace/manual-tax/?utm_source=docs\&utm_medium=content). Install it from your admin panel before following this guide. Tax law varies by jurisdiction. Consult a qualified tax professional to determine the correct rates and rules for your situation. Aikeedo does not provide tax advice. ## Opening the settings Navigate to **Settings > Tax Engines** in your admin panel, then click **Manual Tax**. ## Default tax rate The **Default Tax Rate** section at the top of the page applies a fallback rate to any customer whose billing address does not match a country rule. * Use the toggle to enable or disable the default rate entirely. * Enter the rate value in the **Rate** field. The rate is a percentage by default — click the **%** button to switch to a fixed currency amount instead. ## Country rules The **Rules** section lists per-country tax rules. Each rule overrides the default rate for customers billing from that country and can contain multiple named rates that are added together. ### Adding a rule 1. Click **+ Add rule**. 2. Select a country from the dropdown. 3. If the selected country has subdivisions (states or provinces), an additional **Subdivision** dropdown appears. Selecting a subdivision is optional — leave it blank to apply the rule to the entire country, or select a specific state/province to target that subdivision only. 4. Click **Add rule** to confirm. The new rule appears in the rules list. Click on it to open the rule and add tax rates. ### Adding rates to a rule Each country rule can have one or more named rates: 1. Click on a country rule to open it. 2. Click **+ Add rate**. 3. Enter a **name** (shown to the customer, e.g. "VAT") and a **value** (percentage or fixed amount). 4. Repeat for any additional rates. Multiple rates within a rule are added together. For example, a rule with 18% VAT and 14% Custom Handling Fee results in a combined 32% tax for customers in that country. ### Zero-rating a country To explicitly exempt a country from tax, add a rule for that country and set the rate value to `0`. This ensures the default rate does not apply to customers from that country. When a country-level rule (no subdivision selected) exists for a country, subdivision-level rules for that same country are ignored. Subdivision rules only apply when there is no country-level rule for that country. ## Saving changes Click **Save changes** at the bottom of the page to apply your configuration. ## Testing After configuring your rules, create a test purchase using a billing address that matches each of your configured countries. Verify that the correct tax rates appear in the checkout summary. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Tax Engines Source: https://docs.aikeedo.com/integrations/tax-engines/overview Configure tax calculation for your Aikeedo platform using tax engine plugins to collect the correct tax on subscription and one-time purchases. ## Overview Aikeedo v4.0 introduces a core tax infrastructure layer that enables tax calculation on purchases made through your platform. A tax engine is a plugin that calculates the tax amount on each order based on the customer's billing address and the configured rules or connected tax service. You can install multiple tax engine plugins and switch between them at any time from your billing settings. Only one engine is active at a time, but all installed engines remain configured and ready to use. ## Available tax engine plugins Define flat and percentage tax rates manually by country and subdivision. Full control, no external services required. Automatic tax calculation via the Stripe Tax Calculations API. Requires Stripe to be configured as your payment gateway. ## Selecting the active tax engine Installing a tax engine plugin does not activate it automatically. You select the active engine from your billing configuration: 1. Navigate to **Settings > Billing** in your admin panel. 2. Under the **Tax** section, open the **Tax engine** dropdown. 3. Select the engine you want to use, or choose **No tax** to disable tax calculation entirely. 4. Click **Save changes**. The **Tax Engines** page (**Settings > Tax Engines**) is where you configure each individual engine's rules and settings independently of which one is currently active. ## Tax base In **Settings > Billing > Tax**, you can also set the **Tax base** — the amount that tax is calculated against: | Option | Description | | - | - | | **Net after coupon** | Tax is calculated on the discounted amount after any coupon is applied. If no coupon applies, the full plan list price is used as the base. | | **Full plan list price** | Tax is always calculated on the full plan price, regardless of any discounts. | ## Stripe Automatic Tax Collection If you use Stripe as your payment gateway with the **Hosted Checkout** form type, there is an additional option that does not require a tax engine plugin: [Stripe Automatic Tax Collection](/integrations/payment-gateways/stripe#stripe-automatic-tax-collection). With this feature enabled, Stripe handles both tax calculation and collection end-to-end within its hosted checkout flow. This only applies to payments processed through Stripe — other payment gateways are unaffected. It is also distinct from the Stripe Tax Engine plugin, which calculates tax for non-hosted Stripe checkout flows. ## How tax is applied 1. A customer proceeds to checkout with a billing address on file. 2. Aikeedo calls the active tax engine with the order amount and billing address. 3. The tax engine returns one or more tax lines (name, rate, amount). 4. The tax lines are displayed to the customer and included in the total. 5. The payment gateway collects the full amount, including tax. Tax is calculated based on the customer's **workspace billing address**. Customers must have a billing address on file for tax to be applied. If no address is present, no tax is charged. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Stripe Tax Engine Source: https://docs.aikeedo.com/integrations/tax-engines/stripe-tax Configure automatic tax calculation in Aikeedo using the Stripe Tax Engine plugin, powered by the Stripe Tax Calculations API. The Stripe Tax Engine plugin integrates Aikeedo's billing system with the [Stripe Tax Calculations API](https://stripe.com/docs/tax). When active, it automatically determines the correct tax amount for each purchase based on the customer's billing address and your Stripe Tax configuration — without requiring you to manually define rates or rules. Stripe Tax Engine is an additional plugin available for purchase from the [Aikeedo Marketplace](https://aikeedo.com/marketplace/stripe-tax/?utm_source=docs\&utm_medium=content). Install it from your admin panel before following this guide. This plugin calculates tax for standard (non-hosted) Stripe checkout flows. If you use [Stripe Hosted Checkout](/integrations/payment-gateways/stripe#form-types), consider using [Stripe Automatic Tax Collection](/integrations/payment-gateways/stripe#stripe-automatic-tax-collection) instead, which handles tax entirely within the Stripe-hosted flow. ## Prerequisites The settings page includes a built-in checklist that shows whether all prerequisites are met: * **Stripe integration enabled** — Stripe must be enabled in your payment settings. Tax is only calculated while Stripe is active; if Stripe is disabled, no tax lines are added. * **Secret key configured** — your Stripe secret key must be set in the Stripe payment settings. * **Stripe Tax active on account** — Stripe Tax must be activated in your [Stripe Dashboard](https://dashboard.stripe.com/tax/registrations), with registrations for the jurisdictions where you have tax obligations. Tax will only be calculated for jurisdictions where you have an active registration in your Stripe account. Review [Stripe's Tax documentation](https://stripe.com/docs/tax) to understand what registrations are required for your business. ## Configuration Navigate to **Settings > Tax Engines > Stripe Tax** in your admin panel. ### Product tax code (optional) A Stripe product tax code tells Stripe what you sell (for example, SaaS vs. physical goods) so the correct tax rules apply. Enter the code in the **Tax code** field (format: `txcd_...`). If left blank, Stripe uses the default tax code configured in your Stripe Dashboard Tax settings. To find the right code: * [Stripe Tax: product tax categories](https://stripe.com/docs/tax/tax-categories) — lists common codes for software, SaaS, and other product types. * [Stripe Dashboard: Tax settings](https://dashboard.stripe.com/settings/tax) — set your default product tax code and manage Stripe Tax for your account. ### API keys Stripe Tax uses the same API keys as your Stripe Payments integration. No separate key configuration is required on this page. ## Activating the plugin Once configured, select **Stripe Tax** as the active tax engine in **Settings > Billing Configuration > Tax engine**. See the [Tax Engines overview](/integrations/tax-engines/overview#selecting-the-active-tax-engine) for details. ## Troubleshooting * **Checklist items not passing**: Address each failing item — ensure Stripe is enabled in Payments, the secret key is set, and Stripe Tax is active on your Stripe account. * **Tax not appearing at checkout**: Confirm that the customer has a billing address on file and that you have active Stripe Tax registrations for their jurisdiction. * **Incorrect tax amounts**: Review your Stripe Tax registrations and product tax code to ensure they match your product category and the customer's jurisdiction. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # xAI Integration Source: https://docs.aikeedo.com/integrations/xai Enhance your Aikeedo platform with xAI's Grok models. This guide explains how to set up and configure xAI integration for your platform. ## Introduction Aikeedo's xAI integration allows you to leverage Grok models for AI-powered conversations and content generation. This guide will help you set up and manage the xAI integration in your platform. ## Setting Up the Integration Follow these steps to connect xAI with your Aikeedo platform: ### Step 1: Obtain Your xAI API Key 1. Sign up for xAI API access at [console.x.ai](https://console.x.ai/) 2. Navigate to API Keys page 3. Generate a new API key by clicking **Create API Key** 4. Copy the generated API key for use in Aikeedo Store your API key securely and never share it publicly. The key provides direct access to xAI services. ### Step 2: Configure Aikeedo 1. Log in to your Aikeedo admin panel 2. Navigate to **Settings > xAI / Grok** 3. Paste your xAI API key into the API Key field 4. Click **Save Changes** to activate the integration Once saved, xAI services will be available across your Aikeedo platform. ## Aikeedo Tools Using xAI The xAI integration powers these Aikeedo tools: 1. **Chat**: Engage in conversations using Grok's capabilities 2. **Writer**: Answer a template's questions and continue the result in chat 3. **Imagine**: Create images with Grok Image models 4. **Video**: Generate videos with Grok Video models ## Best Practices To optimize your xAI integration: * Monitor your API usage regularly * Keep your API key secure and up to date * Test the integration after setup to ensure everything works correctly ## Troubleshooting If you encounter issues: 1. Verify your API key is correct and active 2. Check if your xAI account has active subscription 3. Ensure your Aikeedo platform is updated to the latest version 4. Verify your account has access to the required models If you receive authentication errors, double-check your API key and ensure your xAI subscription is active. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Commercial License Resources Source: https://docs.aikeedo.com/overview/commercial-resources Access exclusive resources for Extended/Commercial License users, including Figma designs and pricing calculators. Here, you'll find valuable tools and assets exclusively available to our Extended/Commercial License users. These resources are designed to enhance your experience and help you make the most of Aikeedo's powerful AI-driven content creation capabilities. ## Why are these resources exclusive? These supplementary resources are offered as a complimentary benefit to our Extended/Commercial License holders. Here's why: 1. **SaaS Focus**: These tools are primarily useful if you're using Aikeedo as a SaaS (Software as a Service) platform and plan to charge end users for access. 2. **Added Value**: While not essential for the core functionality of Aikeedo, these resources provide additional support for business-oriented implementations. 3. **Specialized Use**: The Figma designs and pricing calculator are tailored for users who are looking to customize and monetize their Aikeedo instance. These resources do not affect any functionality within the Aikeedo app itself. They are provided as complementary tools to assist Extended/Commercial License users in maximizing the potential of their Aikeedo implementation. ## Accessing Commercial Resources Our commercial resources, including the Figma design file and the Aikeedo Price Calculator, are stored in a single, secure folder. Here's how to gain access: 1. **Important:** Have your Extended/Commercial License key (purchase code) ready before proceeding. Requests without a valid license code will not be processed. 2. Visit the [Aikeedo Commercial Resources](https://drive.google.com/drive/folders/1AHqGqHT6tQyRwRxS2v2j0RngxGbqr_pA?usp=drive_link) link. 3. In the "Message (optional)" text area, enter your Extended/Commercial License key. 4. Click the "Request access" button to submit your access request. 5. Our team will verify your license and grant you access to the folder containing all commercial resources. These resources are exclusive benefits for Extended/Commercial License users and are not included in the standard Aikeedo package. Always include your license code when requesting access to ensure prompt processing of your request. ## Available Resources ### 1. Figma Design File Get access to our professionally crafted Figma design file for the Aikeedo landing page. This resource is perfect for customizing your Aikeedo instance or drawing inspiration for your own AI-powered projects. ### 2. Aikeedo Price Calculator Our custom-built price calculator helps you determine optimal pricing strategies for your Aikeedo-powered services. This tool is invaluable for setting up your credit system and pricing plans. ## Using the Price Calculator Our price calculator is designed to be user-friendly and intuitive, even for those without a technical background. Here's a quick guide to get you started: 1. **Input Fields**: Look for green cells in the spreadsheet. These are where you'll enter your data. * Define the total number of credits you want to sell per 1 USD. * Set your desired profit margin. 2. **Output Fields**: Orange cells display the calculated results. * These show the credit conversion ratios you'll use in the Aikeedo Admin UI. 3. **Pricing Plans**: Scroll down to find sections where you can define pricing plans in your preferred currency. * The calculator will automatically determine the maximum credits for each plan based on your defined profit margin. Hover over cells with small black triangles in the corner for additional guidance and explanations. ## Best Practices * **Experiment with Different Scenarios**: Use the calculator to model various pricing strategies before implementing them in your Aikeedo instance. * **Regular Reviews**: Periodically revisit your pricing structure to ensure it aligns with your business goals and market conditions. * **Combine with Analytics**: Use the insights from the price calculator in conjunction with your user analytics for a comprehensive pricing strategy. * **Customize Your Design**: Leverage the Figma file to create a unique look for your Aikeedo instance that aligns with your brand identity. Thank you for choosing Aikeedo! We're excited to see how you'll leverage these resources to create an outstanding AI-powered content creation platform. # File Structure Source: https://docs.aikeedo.com/overview/file-structure Understand the Aikeedo package structure, including server files, documentation, and support resources to prepare for installation. Before you begin, make sure you've completed your [Aikeedo purchase](https://aikeedo.com?utm_source=docs). If you haven't yet, head over to our website to get started! ## Overview After purchasing Aikeedo, you'll receive a ZIP archive containing all the necessary files to set up your AI-powered platform. This guide will walk you through the contents of your download and explain the purpose of each component. ## Unpacking Your Aikeedo Files Follow these simple steps to access your Aikeedo files: 1. **Download the ZIP archive**: After your purchase, you'll receive a link to download the Aikeedo package. 2. **Locate the download**: Find the ZIP file in your computer's download folder or the location you specified. 3. **Extract the contents**: Use your computer's built-in unzip tool or a third-party application like 7-Zip to extract the files. If you're unsure how to extract ZIP files on your operating system, a quick web search for "how to unzip files on \[Your OS]" will provide step-by-step instructions. ## Understanding the File Structure Once you've extracted the ZIP archive, you'll find the following components: ### 1. documentation.pdf This PDF file contains a direct link to the comprehensive online documentation you're currently reading. It's a quick way to access the most up-to-date information about Aikeedo. Pro tip: Bookmark the documentation link for easy access in the future! ### 2. support.pdf This PDF contains information about our support options and how to access paid support services if you need assistance with Aikeedo. For technical support and assistance, please refer to the support information in this PDF for available support packages and contact details. ### 3. aikeedo-server-files.zip This is the heart of your Aikeedo package. This ZIP file contains all the core files required to set up and run Aikeedo on your server. Here's what you need to know about it: * It includes the main application files, configuration templates, and any necessary scripts. * You'll need to extract and upload these files to your server during the installation process. * Detailed instructions for handling these files can be found in our [Installation Guide](/setup/installation). Always keep a backup of the `aikeedo-server-files.zip` in a safe place. You may need it for future updates or if you decide to move your installation to a different server. ## Next Steps Now that you understand the contents of your Aikeedo download, you're ready to move forward with the installation process. Here's what to do next: Ensure your hosting environment is compatible with Aikeedo Follow step-by-step instructions to set up Aikeedo on your server Configure your Aikeedo instance with technical settings By following this guide and the subsequent installation steps, you'll be well on your way to launching your own AI-powered platform with Aikeedo. Good luck, and welcome to the Aikeedo community! # Get Aikeedo Source: https://docs.aikeedo.com/overview/get-aikeedo Purchase Aikeedo license from official channels, download the software package, and access your license key for installation. This guide covers the Aikeedo purchase process, what you receive after purchase, and how to access your installation files. ## Purchasing Aikeedo Aikeedo licenses are available through our official website: Purchase directly from our official website to stay up-to-date with the latest offers and updates. ## What You'll Receive Upon completing your purchase, you'll gain access to: 1. **Aikeedo Software Package**: A downloadable ZIP file containing the complete Aikeedo source code, ready for installation. 2. **License Key**: A unique activation key that you'll use to validate your Aikeedo installation on your server. These resources empower you to deploy and customize Aikeedo to meet your specific requirements. Keep your license key secure and confidential. It's tied to your purchase and is required for installation and updates. ## Understanding Your License Your Aikeedo license grants you the right to use the software according to the terms outlined in our License Agreement. Here are some key points to remember: * Each license is valid for a single installation (one domain). * You can create derivative works and customize Aikeedo for your needs. * Redistribution or resale of Aikeedo is not permitted. For a complete understanding of your rights and obligations, please review our [License Agreement](https://aikeedo.com/license/?utm_source=docs\&utm_medium=content). ## Accessing Your Purchase After your purchase is complete, you'll receive an email with instructions on how to download your Aikeedo package. Here's what to do next: 1. **Check your email**: Look for a message from Aikeedo (via LemonSqueezy). 2. **Download the ZIP file**: Follow the provided link to download the Aikeedo software package. 3. **Locate your license key**: Your unique license key will be included in the email or your account dashboard. ## Next Steps With your Aikeedo package ready, proceed to installation: Review the package contents and directory organization Verify your hosting environment meets all compatibility requirements Follow step-by-step instructions to install Aikeedo on your server Complete technical configuration including cron jobs Configure all application settings and features You now have everything needed to begin installing Aikeedo. # Introduction to Aikeedo Source: https://docs.aikeedo.com/overview/introduction Discover how to launch your AI SaaS business with Aikeedo - a self-hosted, source-available PHP platform for AI-powered content generation and monetization. Aikeedo - Your AI SaaS business, ready by this week! Aikeedo - Your AI SaaS business, ready by this week! ## Getting started Aikeedo is a ready-made PHP software designed to help you launch your AI SaaS business quickly and efficiently. Whether you're new to AI services or looking to expand your offerings, Aikeedo provides the tools and flexibility you need to get started and grow your business. A step by step guide to installing Aikeedo on your server Explore prompt templating syntax and how to use it Explore development guide to customize Aikeedo to your needs Explore API basics and overview for integrating Aikeedo with your applications ## Your AI SaaS business, ready by this week! Aikeedo is a powerful, ready-made PHP software designed to launch your AI SaaS business quickly and generate revenue fast. With its customizable features, Aikeedo stands out as a **self-hosted**, **source-available**, and **standalone SaaS-ready** PHP web application. * **Self-Hosted**: Take full control of your data and hosting environment. Enjoy the flexibility of managing your platform on your own terms. * **Source-Available**: We provide the full, non-obfuscated source code with your license purchase. This allows you to explore, customize, and tailor the software to your specific needs, giving you complete control over your AI SaaS platform. * **Standalone SaaS Ready**: Aikeedo is not just a web application; it's a complete Software as a Service (SaaS) solution. Deploy seamlessly and experience the benefits of a robust content platform. With Aikeedo, you can have your AI SaaS business up and running in a week, giving you a head start in the competitive AI market. ## Connect with @heyaikeedo Stay updated and connect with us on social media! Follow us [(@heyaikeedo)](https://twitter.com/heyaikeedo) for the latest news, updates, and community discussions. Join the conversation, share your experiences, and be part of the Aikeedo community. Explore more sections of our documentation to dive deeper into the features, installation guides, and best practices. Let's embark on this exciting journey together! # Server Requirements Source: https://docs.aikeedo.com/overview/server-requirements Complete server requirements for Aikeedo installation including PHP 8.2+, MySQL 8.0+, required extensions, and recommended hosting specifications. This guide outlines the necessary components and configurations to ensure your server is ready to host Aikeedo efficiently. ## Core Requirements ### PHP and MySQL Versions Aikeedo requires up-to-date versions of PHP and MySQL to ensure optimal performance and security: 8.2 or later 8.0 or later Using the latest stable versions is recommended for the best experience and to take advantage of the newest features and security updates. ### Essential PHP Extensions To run Aikeedo smoothly, make sure your PHP installation includes these extensions: * ctype * curl * dom * fileinfo * intl * json * libxml * mbstring * openssl * pcre * phar * simplexml * tokenizer * xml * xmlwriter * zip Most of these extensions are typically included in standard PHP installations. If you're unsure, consult your hosting provider or server administrator. ## Minimum Server Requirements To ensure optimal performance of Aikeedo, we recommend the following minimum server specifications: 2 GB RAM or more 2 vCPUs or more For our demo environment, we use a VPS with 4 GB Memory and 2 Intel vCPUs on DigitalOcean. This setup provides excellent performance for most use cases. ### Hosting Recommendations While Aikeedo can run on various hosting environments, we strongly recommend using a Virtual Private Server (VPS) for better control and performance, especially for commercial use cases. Start with a smaller VPS configuration and resize as needed. This approach allows you to scale your resources based on your actual usage and growth. Popular VPS providers that work well with Aikeedo include: * DigitalOcean (Use our [referral link](https://m.do.co/c/084136521a6a) for \$200 in credits, valid for 60 days) * Vultr (Use our [referral link](https://www.vultr.com/?ref=9690154) for \$300 in credits, valid for 30 days) * Amazon Web Services ([AWS](https://aws.amazon.com/)) While most shared hosting environments are supported, they may have limitations that could affect Aikeedo's performance. For the best experience, especially for commercial use, we strongly advise using a VPS. Special note about Cloudways: The text streaming function doesn't work on Cloudways servers due to their complicated server stack. Unfortunately, they don't provide root access to the server to modify the configuration. This issue cannot be resolved at the application level as it's not application-related. If text streaming is crucial for your use case, we recommend choosing a different hosting provider. ## PHP Configuration Proper PHP configuration is crucial for Aikeedo to function correctly. Adjust the following settings in your `php.ini` file: * **File Uploads:** On * **Post Max Size:** 25MB or more * **Upload Max Filesize:** 25MB or more If you're not familiar with editing the `php.ini` file, don't worry! Many hosting control panels provide user-friendly interfaces to adjust these settings. If you need help, check out the [PHP configuration guide](https://www.php.net/manual/en/configuration.file.php) or contact your hosting provider. ## Web Server Compatibility Aikeedo is designed to work with popular web servers, ensuring flexibility in your hosting setup: Fully tested and supported Fully tested and supported While Apache and Nginx are our primary supported web servers, Aikeedo is built to be compatible with most standard web server configurations. New to web server setup? Check out these helpful guides: * [How to install Apache](https://httpd.apache.org/docs/2.4/install.html) * [How to install Nginx](https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/) ## Next Steps Once you've confirmed that your server meets these requirements, you're ready to move on to the installation process! Learn how to install Aikeedo on your server # Chatbots Source: https://docs.aikeedo.com/plugins/chatbots Install and configure the Chatbots plugin to let your subscribers build and embed AI-powered chatbots on their own websites. The Chatbots plugin is currently **experimental**. It is fully functional, but the API and admin configuration options may change in future releases. The Chatbots plugin adds a chatbot builder to your Aikeedo platform. Once installed, your subscribers can create AI-powered chatbots from within their workspace, train them on custom knowledge base sources, and embed the widget on their own websites. All conversations and contacts from the embedded widget are tracked in the subscriber's workspace inbox. ## Prerequisites * Aikeedo v5.0.0 or later for the latest version of the plugin (earlier plugin versions support v4.x) * At least one AI provider configured (OpenAI, Anthropic, Cohere, xAI, Ollama, or a custom OpenAI-compatible provider) * Access to your Aikeedo admin panel ## Installation The Chatbots plugin is available for purchase from the [Aikeedo Marketplace](https://aikeedo.com/marketplace/chatbots/?utm_source=docs\&utm_medium=content). 1. Purchase and download the plugin package. 2. In your admin panel, navigate to **Plugins** and upload the package. 3. Click **Install** and follow the on-screen instructions. Once installed, the Chatbots, Sources, Inbox, and Contacts sections become available in your subscribers' workspaces. ## Admin settings ### Platform-level settings Navigate to **Settings > Features > Chatbots** in your admin panel to configure platform-wide settings. **General** * **Status** — enable or disable the Chatbots feature across your entire platform. **Powered by** Controls the branding shown at the bottom of all embedded chatbot widgets: * **Icon** — upload your brand icon (PNG, SVG, or WEBP, recommended 64×64px). * **Brand name to display** — the name shown next to the "Powered by" label. Leave empty to hide the branding section entirely. * **Link to the brand** — the URL the branding label links to. **Instruction Templates** Predefined system prompts that subscribers can select when configuring their chatbot agent: * **Enable instruction templates** — when enabled, subscribers see a template selector when setting up their chatbot's agent instructions. * **Manage Instructions** — opens the instruction templates editor where you can create, edit, and import built-in prompt templates. A set of ready-to-use templates (e.g. "Base instructions", "Customer support agent") can be imported with one click. ### Plan-level settings Per-plan chatbot controls are in the **Extensions** tab of each plan's configuration (**Plans > \[plan name] > Extensions > Chatbots**): * **Allow Branding Removal** — when enabled, subscribers on this plan can hide the "Powered by" text from their chatbot widget. * **Chatbot Limit** — maximum number of chatbots a subscriber on this plan can create. Leave blank to allow unlimited chatbots. ## Supported AI providers The Chatbots plugin works with all AI providers already configured on your platform: * OpenAI * Anthropic * Cohere * xAI (Grok) * Ollama * Any custom OpenAI-compatible provider Subscribers choose which model powers their chatbot from the models available on their plan. ## Subscriber experience (overview) The chatbot builder is subscriber-operated, but understanding its structure helps you support your users. ### Creating a chatbot Subscribers navigate to **Chatbots** in their workspace sidebar and click **+ Add new**. They enter a chatbot name (internal only — not visible to end users) to create it. ### Chatbot editor Each chatbot has a left-sidebar editor with the following sections: **General** * **Name** — internal identifier, not shown to end users. * **Access** — either **Only me** (only the owner can configure it) or **Workspace** (all workspace members can configure it). Conversations, contacts, and inbox are always shared with all workspace members. * **Status** — toggle between Published and unpublished. **Agent** * Configure the AI model, instructions (system prompt), and select an instruction template if enabled. **Train** * Add knowledge base sources to ground the chatbot's responses. Sources can be added as: * **Select sources** — pick from existing Sources in the workspace * **Add files** — upload documents or PDFs directly * **Add links** — add URLs to crawl **Widget > Content** * Configure the three widget spaces: * **Home** — landing screen with welcome message, quick-action buttons, and links * **Messages** — the main conversation interface * **Help** — FAQ links and a help center button **Widget > Style** * **Color scheme** — Light or Dark * **Position** — Right or Left * **Chat icon** — custom launcher icon (PNG, SVG, WEBP up to 1MB) * **Colors** — primary color and text color overrides **Widget > Security** * **Domain restrictions** — restrict the widget to specific trusted domains. Supports wildcards (e.g. `*.example.com`). Note that `*.example.com` does not include the apex domain `example.com` — add it separately if needed. Leave the list empty to allow the widget on any domain. * **Identity verification** — generate a JWT secret key to verify logged-in end-users. Enables personalized, secure interactions. **Widget > Deploy** * Copy the JavaScript embed snippet and paste it into any website's HTML to install the widget. **Engagement > Conversations** * All conversations initiated through the embedded widget, with full message history and contact details. **Engagement > Contacts** * All contacts captured through the widget, including first seen date, location, IP, and conversation history. ## Troubleshooting * **Chatbots section not appearing after installation**: Clear the admin cache via **Settings > Advanced > Clear Cache** and reload. * **Chatbot not responding**: Verify that at least one AI provider is configured and that the subscriber's plan grants access to at least one model. * **Widget not loading on a website**: Check that the website's domain is listed under trusted domains in the chatbot's Security settings, or that domain restriction is disabled. * **"Powered by" still visible after plan allows removal**: Confirm that **Allow Branding Removal** is enabled on the subscriber's plan, and that the subscriber has toggled it off in their widget settings. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Application Configuration Source: https://docs.aikeedo.com/setup/configuration Complete guide to configuring your Aikeedo application settings after installation. After completing the initial technical setup, you'll need to configure your Aikeedo application to match your business requirements. This guide provides a comprehensive checklist of all settings you should review and configure. You can configure these settings in any order, but we recommend following this checklist to ensure you don't miss any important configurations. ## Essential Settings Checklist ### General Settings Configure your site's core details including website name, domain settings, SSL configuration, landing page, default app page, and SEO settings. Complete step-by-step instructions for configuring all general settings including domain, SSL, and SEO optimization. ### Public Details Configure your business information and social media presence at **Settings > Public Details**: **Business Details:** * **Business Name**: Your company or organization name * **Business Address**: Complete business address for legal and contact purposes **Social Media Accounts:** * X (Twitter), Facebook, Instagram, TikTok * Discord, LinkedIn, YouTube, GitHub * Telegram, VK (VKontakte) Social media links are optional but help establish your brand presence and provide additional ways for users to connect with your business. These details appear in your site footer and contact pages, building trust and credibility with your users. ### Legal Policies Configure your legal documents at **Settings > Policies**: * **Terms of services**: Define usage terms and conditions for your platform * **Privacy policy**: Explain how you collect, use, and protect user data * **Refund policy**: Set clear expectations for refunds and returns **Important Features:** * **Markdown support**: Format your policies using Markdown syntax for better readability * **External redirection**: Include full URLs in content to redirect users to external policy pages Ensure your policies comply with applicable laws and regulations in your jurisdiction. Consider consulting with a legal professional if needed. ### Features & Models Go to **Settings > Features** to control features available to your users. Disable features you don't plan to offer to keep your interface clean and focused. A few feature settings worth reviewing: * **Chat → Capabilities**: turn on **Media generation** (images, video, voice-overs and transcripts from chat), **Canvas** (documents in a side panel) and **Clarifying questions** (the model asks multiple-choice questions before answering an ambiguous request). Each capability must also be enabled on your plans. * **Chat → Connectors**: lets users connect MCP servers, such as Notion or Linear, and use their tools in chat. See [Connectors](/advanced/connectors). * **Privacy & safety**: turns on **Private mode**, which makes everything a user creates temporary until they turn the mode off, and sets how many days private items are kept. See [Private Mode](/advanced/private-mode). * **Writer**: turns on the template wizard, which asks a template's questions and continues in chat. Manage the templates under **Templates**. See [Prompt Templates](/advanced/prompt-templates). * **Community**: lets users share Imagine and Video generations to a feed visible to everyone on your installation. **Minimum shared generations** keeps the Community tab hidden until a tool has that many shared generations. * **Utilities**: turns **Prompt enhancement** and **Surprise me** on or off for the Imagine and Video composers, and sets the model they use. It also sets the **Title generator** model for the whole installation. To import the templates that ship with Aikeedo, go to **Settings > Starter content**. See [Starter Content](/advanced/seed-data). To choose which languages your users can pick, go to **Settings > Languages**. See [Localization](/advanced/localization). Navigate to **Settings > Models** to activate specific AI models. Models must be enabled globally here before they can be used. You'll also need to configure the corresponding AI provider integrations. ### Branding Customize your platform's look and feel at **Settings > Branding**. For detailed instructions, see our [Branding Guide](/website-basics/branding). ### Billing & Payments #### Credit System Configure credit ratios at **Settings > Credit Ratios**: * Set how credits convert to different AI operations * Define credit costs for different models * Adjust ratios based on your pricing strategy Learn more in our [Unified Credit System](/billing/unified-credit-system) documentation. #### Plans & Subscriptions Set up your subscription plans at **Settings > Billing**: * Create subscription tiers (Free, Pro, Enterprise, etc.) * Define credit allocations per plan * Set pricing for each tier For comprehensive guidance, see our [Billing Overview](/billing/overview) and [Plans, Snapshots & Subscriptions](/billing/plans-snapshots-subscriptions) guides. #### Payment Gateways Configure payment processors at **Settings > Payments**: Set up Stripe for card payments and subscriptions Configure PayPal for alternative payment options #### Exchange Rates Set up currency conversion at **Settings > Exchange**. See our [Currency API Integration](/integrations/currency-api) guide for details. ### Email Configuration Configure email delivery at **Settings > Email**: * Choose your email delivery method (SMTP, API, etc.) * Configure SMTP server settings * Test email delivery Follow our comprehensive email setup guide Also see: [SMTP Configuration](/email/smtp) for detailed SMTP setup instructions. ### Integrations Connect third-party services at **Settings > Integrations**: #### AI Provider Integrations * [OpenAI](/integrations/openai) - GPT models * [Anthropic Claude](/integrations/claude) - Claude models * [Cohere](/integrations/cohere) - Cohere models * [xAI](/integrations/xai) - Grok models * [Custom LLM Servers](/integrations/ollama) - Self-hosted models * [Stability AI](/integrations/stabilityai) - Stable Diffusion * [Clipdrop](/integrations/clipdrop) - AI image tools * [Fal.ai](/integrations/falai) - Fast AI generation * [ElevenLabs](/integrations/elevenlabs) - Voice synthesis * [Google Cloud Platform](/integrations/gcp) - Speech services * [Azure](/integrations/azure) - Microsoft speech services #### Other Integrations * [Google Analytics](/integrations/google-analytics) - Track site usage * [Google Tag Manager](/integrations/google-tag-manager) - Manage tracking tags * [OneSignal](/integrations/onesignal) - Push notifications * [Intercom](/integrations/intercom) - Customer support chat * [Custom Scripts](/integrations/custom-scripts) - Add custom tracking codes Start with one or two AI providers to test your setup, then expand to additional providers based on user demand and your business needs. ### Authentication Configure user authentication options at **Settings > Authentication**: * [Account Settings](/authentication/accounts-settings) - Configure registration and login * [Social Login Providers](/authentication/identity-providers/google) - Add Google, Facebook, GitHub, LinkedIn * [CAPTCHA](/authentication/captcha) - Prevent spam and bot registrations ## Verification Checklist Before launching your platform to users, verify you've completed: * [ ] General settings configured (site name, domain, SEO) * [ ] Public details added (company info, social links) * [ ] Legal policies published (Terms, Privacy) * [ ] Features enabled for your target audience * [ ] AI models activated and tested * [ ] Subscription plans created and priced * [ ] Payment gateways configured and tested * [ ] At least one AI provider configured * [ ] Email delivery configured and tested * [ ] Analytics tracking set up (optional) * [ ] Create a test user account * [ ] Test subscription purchase flow * [ ] Verify AI features work correctly * [ ] Confirm email delivery ## Next Steps After completing your application configuration: 1. **Test Everything**: Create test accounts, make test purchases, and verify all features work as expected 2. **Customize Branding**: Review our [General Settings](/website-basics/essentials) and [Branding](/website-basics/branding) guides 3. **Advanced Configuration**: Explore [Advanced Topics](/advanced/localization) like localization and email templates 4. **Launch**: Open your platform to real users and start growing your business! Congratulations! Your Aikeedo platform is now fully configured and ready to serve users. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Initial Setup Source: https://docs.aikeedo.com/setup/initial-setup Configure cron jobs, set your site domain, and enable SSL for your Aikeedo installation to ensure proper functionality and security. After successfully installing Aikeedo, complete these crucial technical setup steps to ensure your application runs smoothly and securely. ## Setting Up the Cron Job A cron job is essential for automating recurring tasks in Aikeedo, particularly for renewing subscription usages. It also keeps [connectors](/advanced/connectors) up to date, refreshing each connection's list of tools every few hours. ### Frequency and Interval * **Renewal Period:** Subscription usages are renewed every 30 days. * **Recommended Interval:** The cron task should run once per minute for optimal performance. Some servers may limit cron tasks to a minimum interval of 15 minutes. In such cases, subscriptions will still renew, but there might be a slight delay of up to 15 minutes. ### Configuring the Cron Task It is important that the cron job runs as the same user that your web server uses to serve your Aikeedo application. On many Linux systems, this user is typically `www-data` (for servers running Apache or Nginx), but it may differ depending on your server setup (for example, `apache`, `nginx`, or another user). Running the cron job as the correct user ensures that file permissions and environment variables are consistent with your web server, preventing potential permission issues. #### How to Set Up the Cron Job for the Web Server User 1. **Determine the Web Server User:** * On most systems, the user is `www-data`. * You can check the running user with: ```shell theme={null} ps aux | egrep '(apache|nginx|httpd)' ``` * Look for the user column in the output. 2. **Edit the Crontab for the Web Server User:**\ Use the following command, replacing `www-data` with your web server user if different: ```shell theme={null} sudo crontab -u www-data -e ``` This opens the crontab editor for the specified user. 3. **Add the Cron Entry:**\ Add the following line to the crontab: ```shell theme={null} * * * * * /usr/bin/php /path/to/app/root/cron.php ``` Replace `/path/to/app/root/` with the actual path to your Aikeedo application's root directory. If your server uses a different user for the web server (such as `apache` or `nginx`), substitute `www-data` with the appropriate username in the `sudo crontab -u USERNAME -e` command. #### Important: File Permissions and Cache Issues While it is technically possible to run the cron job as `root` or another user, this is **not recommended**. If the cron job runs as a different user than your web server (for example, as `root`), the application may create new files in the app cache with incorrect ownership. This can cause issues when you try to clear the cache from the Aikeedo admin panel (Status page). * **How to Detect the Issue:**\ When you clear the cache from the Status page, you should see a success message in the toast notification. If you do **not** see a success message, it likely means the app is unable to clear the cache due to file permission issues. * **How to Fix:**\ To resolve this, reset the ownership of your app files to the web server user (e.g., `www-data`) by running: ```shell theme={null} sudo chown -R www-data:www-data /path/to/app/root ``` Replace `/path/to/app/root` with the actual path to your Aikeedo application's root directory. After fixing the permissions, ensure the cron job is running as the correct user to prevent this issue from recurring. Always run the cron job as the same user that your web server uses (typically `www-data`, `apache`, or `nginx`). This ensures proper file permissions and smooth operation of your Aikeedo installation. ### Troubleshooting Cron Issues If you encounter problems with subscription renewals: 1. Verify the cron task configuration is correct 2. Check your server logs for error messages related to the cron job 3. Ensure the PHP path (`/usr/bin/php`) is correct for your server 4. Verify file permissions are correct for the web server user Consult with your server administrator for server-specific issues. For additional help, see the [Troubleshooting & FAQ](/setup/troubleshooting) page. ## Configuring Your Site Domain Properly setting your site domain is crucial for system functionality. ### Steps to Set Your Site Domain 1. **Access the Admin Panel:** Log in to your Aikeedo admin dashboard. 2. **Navigate to Settings:** Click on **Settings** in the sidebar, then select **General**. 3. **Locate the "Site Domain" Field:** You'll find this in the Website section. 4. **Enter Your Domain:** Input your domain name without the protocol (http\:// or https\://) and without any paths. Site Domain Configuration Include only the domain, subdomain (if any), and port number (if non-standard). Do not include protocols or paths. Omit the port number if it's 80 (HTTP) or 443 (HTTPS). ### SSL Configuration Enabling SSL is highly recommended for security and is required for certain features. 1. Find the "Is SSL Enabled?" toggle in the General Settings. 2. If you have an SSL certificate installed on your server, switch this to "Yes." Only enable SSL if you have properly installed an SSL certificate on your server. SSL is required for features like secure payment gateways. If you haven't set up SSL yet, consider using a service like Let's Encrypt for a free SSL certificate. Many hosting providers also offer one-click SSL setup. ## Completing the "Getting Started" Section After configuring your cron job and site domain, you'll want to complete the "Getting Started" section in your admin dashboard. Completing the "Getting Started" section is crucial for ensuring all aspects of your Aikeedo installation are properly configured. Don't skip this step! ## Next Steps After completing these initial setup steps, proceed to configure your application: Complete guide to configuring all your Aikeedo settings Or jump directly to specific configuration areas: * [Email Settings](/email/mailer) - Configure email delivery * [Billing Setup](/billing/overview) - Set up subscriptions and pricing * [Integrations](/integrations/openai) - Connect AI providers and services * [Branding](/website-basics/branding) - Customize your platform's appearance ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Installation Guide Source: https://docs.aikeedo.com/setup/installation Step-by-step guide to install Aikeedo on your server, configure the public directory, and complete the installation wizard. This guide will walk you through the process of installing Aikeedo on your server. **cPanel Users:** If you're using cPanel hosting, you MUST follow our dedicated [cPanel Installation Guide](/setup/installation/cpanel) instead of this guide. The steps are significantly different and this guide will not work for cPanel installations. **Are you using cPanel?** Click here for the correct installation guide for cPanel hosting. ## Before You Start 1. Ensure your server meets our [requirements](/overview/server-requirements). 2. Prepare a database and note down its name, username, and password. ## Understanding the Public Directory It's crucial to understand how Aikeedo's file structure works with your domain: * Aikeedo has a `public` directory that contains web-accessible files. * Your domain should point to this `public` directory, not the root of all Aikeedo files. * The `public` directory cannot be moved; it must remain within the Aikeedo file structure. Example: If you extract Aikeedo files to `/var/www/yourdomain.com`, your domain must point to `/var/www/yourdomain.com/public`. Consult your hosting provider's documentation on how to set the correct document root for your domain. ## Installation Steps 1. Locate the `aikeedo-server-files.zip` in your Aikeedo package. 2. Upload this zip file to your server, outside of any existing web-accessible directories. If you can't find the zip file, refer to our [File Structure](/overview/file-structure) guide. Extract the contents of `aikeedo-server-files.zip` so that the `public` folder ends up in your domain's root directory. Example: ``` /var/www/yourdomain.com/ ├── bin/ ├── bootstrap/ ├── ci/ ├── config/ ├── ... ├── public/ └── ... (other Aikeedo directories and files) ``` Set your domain's document root to point to the `public` directory within the extracted Aikeedo files. Example: If Aikeedo is extracted to `/var/www/yourdomain.com`, set the document root to `/var/www/yourdomain.com/public`. This step often requires configuration in your web server (e.g., Apache, Nginx) or hosting control panel. 1. Open your web browser. 2. Navigate to `https://yourdomain.com`. 3. You should be automatically redirected to `https://yourdomain.com/install`. 4. If redirected successfully, you should see the Aikeedo installation wizard. If you're not automatically redirected to the install page, it's likely that your domain is not correctly pointing to the `public` directory. In this case, you might see a 403 error. Double-check your domain's document root configuration to ensure it's set to the `public` folder within your Aikeedo installation. The installation wizard will guide you through the setup process: 1. Provide Database Credentials: * Enter the database name, username, and password. 2. Enter your Aikeedo Purchase Code: * This is the unique code you received when you purchased Aikeedo. 3. Set up Admin Account Details: * Create your administrator account for managing Aikeedo. Carefully follow each step of the wizard, ensuring all information is entered accurately. This will ensure a smooth and successful installation of your Aikeedo instance. Once you have provided all the necessary information, the installation wizard will finalize the setup: 1. The wizard will process your inputs and configure Aikeedo accordingly. 2. Wait patiently as the system completes the installation process. 3. Upon completion, you'll see a success message confirming that Aikeedo has been successfully installed. 4. Verify that you can access the Aikeedo dashboard or main page without any errors. 5. Confirm that the installation was successful by checking key features or settings. Congratulations! You're now ready to explore Aikeedo and leverage its powerful capabilities for your projects. ## Troubleshooting If you encounter any issues during the installation process: 1. Double-check that you've followed each step correctly 2. Ensure all file permissions are set correctly 3. Verify that your server meets all the [requirements](/overview/server-requirements) 4. Check the [Troubleshooting & FAQ](/setup/troubleshooting) page for solutions to common issues ## Next Steps After successfully installing Aikeedo: 1. Follow our [Initial Setup Guide](/setup/initial-setup) to configure your new installation. 2. Explore [Website Basics](/website-basics/essentials) to learn about key Aikeedo features. 3. Consider setting up [email](/email/mailer) for your Aikeedo instance. Congratulations on installing Aikeedo! We're excited for you to start leveraging its powerful features. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Installing Aikeedo in cPanel Source: https://docs.aikeedo.com/setup/installation/cpanel Learn how to install Aikeedo on your cPanel hosting, whether you're using a main domain, add-on domain, or subdomain. Welcome to the Aikeedo installation guide for cPanel! This comprehensive tutorial will walk you through the process of setting up Aikeedo on your cPanel hosting environment. Whether you're using a main domain, an add-on domain, or a subdomain, we've got you covered. ## Before You Start 1. Ensure your server meets our [requirements](/overview/server-requirements). 2. Prepare a database and note down its name, username, and password. 3. Have your Aikeedo purchase code ready. ## Understanding the Public Directory It's crucial to understand how Aikeedo's file structure works with your domain: * Aikeedo has a `public` directory that contains web-accessible files. * Your domain should point to this `public` directory, not the root of all Aikeedo files. * The `public` directory cannot be moved; it must remain within the Aikeedo file structure. In cPanel, this typically meanss: * For main domains: copying the contents of the `public` folder to your `public_html` directory. * For add-on domains or subdomains: setting the document root to the `public` folder within your Aikeedo installation. ## Installation Process Follow these steps to install Aikeedo on your main domain in cPanel: * Locate the `aikeedo-server-files.zip` archive in your Aikeedo package. * Upload this archive to the directory one level above your `public_html` folder. For example, if your `public_html` path is `/home/username/public_html`, upload to `/home/username/`. If you can't find the zip file, refer to our [File Structure](/overview/file-structure) guide. Once uploaded, extract the contents of `aikeedo-server-files.zip` in the same directory. * Find the `public` folder within the extracted files (e.g., `/home/username/public`). * **Copy** (do not move) all contents from this `public` folder to your `public_html` directory. * Make sure to include hidden files and folders (such as .htaccess file or .vite directory). * Locate the `.env.example` file in your Aikeedo root directory (e.g., `/home/username/`). * Find the line that contains `# PUBLIC_DIR=public_html`. * Uncomment this line by removing the `#` symbol and the space after it. * The final version of this line should look like: ```env .env.example theme={null} PUBLIC_DIR=public_html ``` * Save the changes to the file. * Open your web browser and navigate to your domain. * You'll be automatically redirected to the installation page at `/install`. * Follow the on-screen instructions in the installation wizard. * You'll need to provide: * Database credentials * Your Aikeedo purchase code * Admin account details * Complete all steps as guided by the wizard. Follow these steps to install Aikeedo on an add-on domain or subdomain in cPanel: * Locate the `aikeedo-server-files.zip` archive in your Aikeedo package. * Upload this archive to your add-on domain or subdomain root directory. For example: `/home/username/yourdomain.com/` If you can't find the zip file, refer to our [File Structure](/overview/file-structure) guide. Once uploaded, extract the contents of `aikeedo-server-files.zip` in the same directory. * In cPanel, navigate to **Domains** > **Addon Domains** (or **Subdomains**). * Click **Manage** next to your domain. * Update the **Document Root** to point to the `public` folder within your extracted files. For example: `/home/username/yourdomain.com/public` * Save your changes. * Open your web browser and navigate to your add-on domain or subdomain URL. * You'll be automatically redirected to the installation page at `/install`. * Follow the on-screen instructions in the installation wizard. * You'll need to provide: * Database credentials * Your Aikeedo purchase code * Admin account details * Complete all steps as guided by the wizard. ## Important Notes * Throughout this guide, we use absolute paths (e.g., `/home/username/`). In cPanel's file manager, you might not see the `/home/username/` part. For example, `/home/username/public_html` might appear as just `/public_html`. * Always ensure you're working in the correct directory for your specific domain setup. * The `public` directory contains all files that should be publicly accessible. Don't confuse this with cPanel's default `public_html` directory. ## Troubleshooting If you encounter any issues during the installation process: 1. Double-check that you've followed each step correctly. 2. Ensure all file permissions are set correctly. 3. Verify that your server meets all the [requirements](/overview/server-requirements). 4. For more detailed troubleshooting steps, please refer to our dedicated [Troubleshooting Guide](/setup/troubleshooting). ## Next Steps After successfully installing Aikeedo: 1. Follow our [Initial Setup Guide](/setup/initial-setup) to configure your new installation. 2. Explore [Website Basics](/website-basics/essentials) to learn about key Aikeedo features. 3. Consider setting up [email](/email/mailer) for your Aikeedo instance. Congratulations! You've successfully installed Aikeedo on your cPanel hosting. You're now ready to harness the power of AI for your content creation needs. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Local Installation Guide Source: https://docs.aikeedo.com/setup/installation/local Learn how to install Aikeedo on your local machine for development, testing, or personal use. This guide covers various setup options, including using PHP's built-in server and popular local development environments. This guide will walk you through the process of installing Aikeedo on your local machine. This is ideal for development, testing, or personal use. ## Prerequisites Before you begin, ensure you have: 1. Downloaded the Aikeedo package 2. Familiarity with command-line operations 3. A local development environment (we'll cover different options) ## Option 1: Using PHP's Built-in Server This option is suitable if you already have PHP and MySQL installed and accessible via the command line. Ensure you have: * PHP 8.2 or higher installed and accessible via command line * MySQL 8.0 or higher installed and running 1. Locate the `aikeedo-server-files.zip` in your Aikeedo package. 2. Extract the contents to a directory of your choice, e.g., `C:\aikeedo` or `/home/user/aikeedo`. 1. Open your MySQL client or command-line tool: * For command-line users, open your terminal and type `mysql -u root -p` to access MySQL. * For GUI users, open tools like phpMyAdmin, MySQL Workbench, or HeidiSQL. 2. Create a new database for Aikeedo: * In the MySQL command line or GUI query window, execute the following SQL command: ```sql theme={null} CREATE DATABASE aikeedo; ``` * This creates a new, empty database named 'aikeedo' that will store all your Aikeedo data. 3. Create a new user (recommended for security): ```sql theme={null} CREATE USER 'aikeedo_user'@'localhost' IDENTIFIED BY 'your_secure_password'; GRANT ALL PRIVILEGES ON aikeedo.* TO 'aikeedo_user'@'localhost'; FLUSH PRIVILEGES; ``` Replace 'your\_secure\_password' with a strong, unique password. 4. Note down the following information for the installation wizard: * Database name: aikeedo * Username: aikeedo\_user (or 'root' if you skipped step 3) * Password: The password you set (or your root password if using root) * Host: localhost (in most cases) If you're not comfortable with database management, consider using a database administration tool like phpMyAdmin, which often comes pre-installed with local development environments like XAMPP or MAMP. To start the PHP development server: 1. Open your terminal or command prompt. 2. Navigate to the root directory of your Aikeedo installation. This is the directory where you extracted the Aikeedo files, e.g., `C:\aikeedo` or `/home/user/aikeedo`. 3. Once in the root directory, run the following command: ```bash theme={null} php -S localhost:8000 -t public ``` This command does the following: * `php -S` starts PHP's built-in development server * `localhost:8000` sets the server to listen on localhost at port 8000 * `-t public` sets the document root to the `public` directory within your Aikeedo installation After running this command, you should see output indicating that the server is running. Keep this terminal window open to keep the server active. Open your web browser and navigate to `http://localhost:8000`. You should see the Aikeedo installation wizard. 1. Provide the database credentials you noted earlier. 2. Enter your Aikeedo Purchase Code. 3. Set up your admin account details. 4. Follow any additional steps as prompted by the wizard. ## Option 2: Using Local Development Environments This option is suitable if you prefer using pre-configured local development environments like XAMPP, MAMP, or Laragon. Download and install XAMPP from the [official website](https://www.apachefriends.org/). 1. Open `C:\xampp\apache\conf\extra\httpd-vhosts.conf` (Windows) or `/Applications/XAMPP/etc/extra/httpd-vhosts.conf` (macOS). 2. Add a new virtual host: ```apache theme={null} DocumentRoot "C:/xampp/htdocs/aikeedo/public" ServerName aikeedo.test AllowOverride All Require all granted ``` 1. Open your hosts file (`C:\Windows\System32\drivers\etc\hosts` on Windows or `/etc/hosts` on macOS). 2. Add the following line: ``` 127.0.0.1 aikeedo.test ``` Extract the contents of `aikeedo-server-files.zip` to `C:\xampp\htdocs\aikeedo` (Windows) or `/Applications/XAMPP/htdocs/aikeedo` (macOS). 1. Open phpMyAdmin (usually at `http://localhost/phpmyadmin`). 2. Create a new database named `aikeedo`. Restart Apache in XAMPP, then navigate to `http://aikeedo.test` in your browser. You should see the installation wizard. Follow the on-screen installation wizard to complete the setup. Download and install MAMP from the [official website](https://www.mamp.info/). 1. Open MAMP's Apache configuration file. 2. Add a new virtual host: ```apache theme={null} DocumentRoot "/Applications/MAMP/htdocs/aikeedo/public" ServerName aikeedo.test AllowOverride All Require all granted ``` 1. Open `/etc/hosts`. 2. Add the following line: ``` 127.0.0.1 aikeedo.test ``` Extract the contents of `aikeedo-server-files.zip` to `/Applications/MAMP/htdocs/aikeedo`. 1. Open phpMyAdmin (usually at `http://localhost:8888/phpMyAdmin`). 2. Create a new database named `aikeedo`. Restart Apache in MAMP, then navigate to `http://aikeedo.test` in your browser. You should see the installation wizard. Follow the on-screen installation wizard to complete the setup. Download and install Laragon from the [official website](https://laragon.org/). Extract the contents of `aikeedo-server-files.zip` to `C:\laragon\www\aikeedo`. 1. Right-click the Laragon tray icon and select "Apache > sites-enabled > Add". 2. Enter the following configuration: ```apache theme={null} DocumentRoot "C:/laragon/www/aikeedo/public" ServerName aikeedo.test AllowOverride All Require all granted ``` 3. Save the file and restart Apache in Laragon. 1. Open HeidiSQL (included with Laragon). 2. Create a new database named `aikeedo`. Navigate to `http://aikeedo.test` in your browser. You should see the installation wizard. Follow the on-screen installation wizard to complete the setup. Remember, Aikeedo must be installed in the domain root. Subpaths like `http://localhost/subdirectory` are not supported. ## Troubleshooting If you encounter any issues during local installation: 1. Ensure your local environment meets all [server requirements](/overview/server-requirements). 2. Check that all file permissions are set correctly. 3. Verify that your virtual host and hosts file configurations are correct. 4. For more detailed troubleshooting steps, refer to our [Troubleshooting Guide](/setup/troubleshooting). ## Next Steps After successfully installing Aikeedo locally: 1. Explore the [Initial Setup Guide](/setup/initial-setup) to configure your local instance. 2. Check out our [Local Development Guide](/development/local-development) for tips on developing with Aikeedo. Congratulations on setting up Aikeedo locally! You're now ready to start developing or testing with your local instance. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Troubleshooting Source: https://docs.aikeedo.com/setup/troubleshooting Solutions to common Aikeedo installation, configuration, and runtime issues including database errors, asset loading problems, and model configuration. ## Overview This guide provides solutions to common issues users encounter when installing, configuring, and running Aikeedo. Issues are organized by category for easy navigation. ## Before You Begin Before troubleshooting, verify that: 1. Your server meets all [server requirements](/overview/server-requirements) 2. You have the latest version of Aikeedo files 3. You've followed the [installation guide](/setup/installation) carefully 4. You've completed [initial setup](/setup/initial-setup) steps ## Quick Navigation Find your issue and click to jump to the solution: ### Installation Issues * [Assets Not Loading (CSS, JS, Images)](#assets-not-loading) * [404 or 403 Errors During Installation](#404-or-403-errors-during-installation) * [Database Connection Issues](#database-connection-issues) * [500 Internal Server Error During Installation](#500-internal-server-error-during-installation) * [Installation Wizard Not Loading](#installation-wizard-not-loading) ### Configuration Issues * ["Does Not Allow the Value" Error](#"does-not-allow-the-value"-error) * [Cannot Select Models or Send Prompts](#cannot-select-models-or-send-prompts) * [500 Error on Image Generator or Video Generator](#500-error-on-image-generator-or-video-generator) * [Save Button Does Nothing](#save-button-does-nothing) ### Database Issues * [MySQL Server Has Gone Away](#mysql-server-has-gone-away) ### Feature-Specific Issues * [Auto-Generated Titles Don't Match Content Language](#auto-generated-titles-don't-match-content-language) * [Uploaded Files Return 404 Not Found Errors](#uploaded-files-return-404-not-found-errors) * [Generated Images/Videos Not Loading](#generated-images%2Fvideos-not-loading) *** ## Installation Issues ### Assets Not Loading **Symptoms:** * Installation page appears without styling * Images, CSS, and JavaScript files fail to load * Browser shows 404 errors for asset files **Cause:** The domain is not correctly pointing to the `public` directory. **Solution:** Ensure your domain points to the `public` directory within your Aikeedo installation: ``` /path/to/aikeedo/public ``` Not to the root Aikeedo directory. Visit your domain (e.g., `https://yourdomain.com`). You should be automatically redirected to `https://yourdomain.com/install`. If the redirect works, your domain is configured correctly. If you're using cPanel and cannot change the document root for your main domain, follow the dedicated [cPanel Installation Guide](/setup/installation/cpanel). The cPanel installation process differs from the standard installation due to control panel limitations. **Related Documentation:** * [Installation Guide](/setup/installation) * [cPanel Installation](/setup/installation/cpanel) *** ### 404 or 403 Errors During Installation **Symptoms:** * 404 error when accessing `/install` * 403 Forbidden error on home page * Installation wizard not accessible **Cause:** Domain document root not pointing to the `public` directory, missing files, incorrect permissions, or web server configuration issues preventing proper request routing. **Solution:** Ensure your domain's document root points to the `public` folder: **For cPanel:** * Main domain: Points to `public_html` by default (this is correct) * Ensure Aikeedo's `public` folder contents are copied to `public_html` * Add-on domains/subdomains: Update document root in cPanel to point to the `public` folder **For VPS/Dedicated:** * Set document root to `/path/to/aikeedo/public` Accessing your domain should automatically redirect you to `/install` if the document root is correctly configured. Configure your web server to serve PHP applications and rewrite all requests to `/public/index.php`: Ensure your server block is configured correctly: ```nginx /etc/nginx/sites-available/aikeedo theme={null} server { listen 80; listen [::]:80; server_name yourdomain.com www.yourdomain.com; root /path/to/aikeedo/public; # Add index.php to the list index index.php index.html index.htm index.nginx-debian.html; # Increase the maximum upload size client_max_body_size 256M; location / { # First attempt to serve request as file, then # as directory, then fall back to index.php try_files $uri $uri/ /index.php$is_args$query_string; } # Pass PHP scripts to FastCGI server location ~ \.php$ { include snippets/fastcgi-php.conf; # Fix for PHP files downloading instead of execute fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; # With php-fpm (or other unix sockets): fastcgi_pass unix:/run/php/php-fpm.sock; # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; fastcgi_connect_timeout 300s; fastcgi_send_timeout 300s; fastcgi_read_timeout 300s; } # Deny access to .htaccess files, if Apache's document root # concurs with nginx's one location ~ /\.ht { deny all; } } ``` After configuring, test your Nginx configuration: `sudo nginx -t` and reload: `sudo systemctl reload nginx` Adjust the `fastcgi_pass` socket path to match your PHP-FPM configuration. Common locations: * `/run/php/php-fpm.sock` (generic) * `/run/php/php8.2-fpm.sock` (version-specific) * `/var/run/php/php8.2-fpm.sock` (alternative path) Ensure your virtual host is configured correctly with proper rewrite rules: ```apache /etc/apache2/sites-available/aikeedo.conf theme={null} ServerName yourdomain.com ServerAlias www.yourdomain.com DocumentRoot /path/to/aikeedo/public Options -Indexes +FollowSymLinks AllowOverride All Require all granted ``` Ensure `mod_rewrite` is enabled: `sudo a2enmod rewrite` and reload Apache: `sudo systemctl reload apache2` The server configurations provided above are minimal samples. Consult with your server administrator for the correct configuration for your specific server environment, especially if you're using load balancers, reverse proxies, or have specific security requirements. If you're using Apache, ensure the `.htaccess` file is present in the `public` directory. Aikeedo includes this file by default with the correct rewrite rules. Hidden files may not be visible by default. Enable "Show hidden files" in your FTP client or file manager if you need to verify the file exists. Verify all Aikeedo files are extracted correctly and the `public` directory exists with all necessary files. Ensure the web server has appropriate permissions: ```bash theme={null} # Set directory permissions find /path/to/aikeedo -type d -exec chmod 755 {} \; # Set file permissions find /path/to/aikeedo -type f -exec chmod 644 {} \; ``` Double-check that all virtual host settings are correctly configured: * **Document Root**: Must point to `/path/to/aikeedo/public` (not the root directory) * **Server Name/Alias**: Must match your domain exactly * **PHP Handler**: Configured correctly (PHP-FPM for Nginx, mod\_php or PHP-FPM for Apache) * **Rewrite Rules**: Enabled and properly configured to route all requests to `index.php` After making changes: 1. Test web server configuration: * Nginx: `sudo nginx -t` * Apache: `sudo apache2ctl configtest` 2. Reload your web server: ```bash theme={null} # Nginx sudo systemctl reload nginx # Apache sudo systemctl reload apache2 ``` 3. Visit your domain - you should be automatically redirected to `/install` If you're redirected to `/install`, your server configuration is correct. All requests must be rewritten to `/public/index.php` for the application to function correctly. Without proper rewrite rules, you'll encounter 404 errors on all routes except the home page. *** ### Database Connection Issues **Symptoms:** * Cannot connect to database during installation * Database error messages in installation wizard * Installation fails at database configuration step **Cause:** Incorrect database credentials, missing database, or insufficient permissions. **Solution:** 1. **Verify Database Credentials** * **Database name**: Must be exact (case-sensitive) * **Username**: Database user with proper permissions * **Password**: Correct password for the database user * **Host**: Usually `localhost`, but may be different on some hosts 2. **Check Database Server** * Ensure the database server (MySQL/MariaDB) is running * Verify the database is accessible from your web server * Confirm the database exists and is empty 3. **Verify User Permissions** The database user must have these permissions: * SELECT, INSERT, UPDATE, DELETE * CREATE, DROP, INDEX, ALTER If unsure, grant ALL PRIVILEGES to the database user for the specific database. 4. **Check PHP Extensions** Verify that required PHP database extensions are installed: * `mysqli` for MySQL * `pdo_mysql` for PDO support Check with: ```bash theme={null} php -m | grep -i mysql ``` If problems persist, try creating a new database and user with full permissions. *** ### 500 Internal Server Error During Installation **Symptoms:** * HTTP 500 error before or during installation * Blank page with 500 status code * Generic server error message **Cause:** PHP configuration issues, incorrect file permissions, or insufficient server resources. **Solution:** Review server error logs for specific error messages: **Apache:** ```bash theme={null} tail -f /var/log/apache2/error.log # or tail -f /var/log/httpd/error_log ``` **Nginx:** ```bash theme={null} tail -f /var/log/nginx/error.log ``` Error logs will reveal the exact issue. Ensure you're running PHP 8.2 or later: ```bash theme={null} php -v ``` Verify all required extensions are installed: ```bash theme={null} php -m ``` ```bash theme={null} # Set ownership (replace www-data with your web server user) chown -R www-data:www-data /path/to/aikeedo # Set directory permissions find /path/to/aikeedo -type d -exec chmod 755 {} \; # Set file permissions find /path/to/aikeedo -type f -exec chmod 644 {} \; ``` Common web server users: `www-data` (Ubuntu/Debian), `apache` (CentOS/RHEL), `nginx` (Nginx) If using PHP-FPM: ```bash theme={null} sudo systemctl restart php8.2-fpm ``` Replace `8.2` with your PHP version. Edit your `php.ini` file: ```ini theme={null} memory_limit = 256M ``` Restart your web server after making changes. *** ### Installation Wizard Not Loading **Symptoms:** * Blank white page when accessing installation * Installation wizard doesn't appear * JavaScript errors in browser console **Cause:** PHP errors, insufficient server resources, or missing files. **Solution:** 1. **Check PHP Error Logs**: Review PHP error logs for fatal errors or warnings 2. **Clear Browser Cache**: Hard refresh (Ctrl+Shift+R or Cmd+Shift+R) or try a different browser 3. **Verify SSL Certificate**: If using HTTPS, ensure your SSL certificate is valid 4. **Check File Permissions**: Verify web server can read all files in the `public` directory 5. **Confirm PHP Extensions**: Ensure all required extensions are installed (see [Server Requirements](/overview/server-requirements)) 6. **Check Server Resources**: Verify sufficient CPU and RAM are available Try accessing the site from an incognito/private browsing window to rule out browser cache issues. *** ## Configuration Issues ### "Does Not Allow the Value" Error **Symptoms:** * Error message: "Does not allow the value" * Occurs after installation when trying to use features **Cause:** The Site Domain value is missing in General Settings. **Solution:** 1. Log in to the admin panel 2. Navigate to **Settings > General** 3. Locate the "Site Domain" field 4. Enter your domain without protocol or paths (e.g., `yourdomain.com`) 5. Enable SSL if you have an SSL certificate 6. Click "Save changes" **Related Documentation:** * [Initial Setup - Configuring Site Domain](/setup/initial-setup#configuring-your-site-domain) *** ### Cannot Select Models or Send Prompts **Symptoms:** * Browser console shows JavaScript errors * Unable to select AI models in dropdown * Cannot send prompts or generate content * Tools missing from sidebar **Cause:** Features and models are not enabled globally, or plan configuration is incomplete. **Solution:** 1. Navigate to **Settings > Features** in the admin panel 2. Enable the features you want to offer (Chat, Writer, Imagine, etc.) 3. Click "Save changes" Enabling features globally makes them available but they still need to be configured in plans. 1. Go to **Settings > Models** 2. Enable the AI models you want to make available 3. Click "Save changes" 1. Navigate to the **Plans** page in the admin panel 2. Find the plan your users are subscribed to 3. Edit the plan configuration: * Enable desired features * Enable desired models * Set credit allocations 4. **Important:** Check the "Update snapshots" box before saving 5. Click "Save changes" If you don't check "Update snapshots," changes will only apply to new subscriptions, not existing ones. 1. Log in as a test user 2. Verify tools appear in the sidebar 3. Test selecting a model and generating content Users should now be able to access features and generate content. **Related Documentation:** * [Plans, Snapshots & Subscriptions](/billing/plans-snapshots-subscriptions) * [Application Configuration](/setup/configuration) *** ### 500 Error on Image Generator or Video Generator **Symptoms:** * Imagine (image generator) page returns HTTP 500 error * Video generator page returns HTTP 500 error * Server error logs show credit ratio issues **Cause:** Credit ratios are not configured for all enabled models. **Solution:** 1. Navigate to **Settings > Credit Ratios** in the admin panel 2. Review all enabled AI models 3. Ensure **every enabled model** has a credit ratio configured 4. Set appropriate credit values for each model 5. Click "Save changes" If you're unsure about credit ratios, start with the default suggestions and adjust based on your pricing strategy. **Related Documentation:** * [Unified Credit System](/billing/unified-credit-system) * [Application Configuration](/setup/configuration) *** ### Save Button Does Nothing **Symptoms:** * Clicking "Save changes" or other save buttons in the admin panel has no effect * No error message appears * Page appears to be unresponsive after clicking save * Changes are not saved **Cause:** Most commonly a backend PHP error that's preventing the request from completing. Can also be a frontend JavaScript issue. **Solution:** Before clicking the save button, check for frontend errors: 1. Open your browser's developer console: * **Chrome/Edge**: Press `F12` or `Ctrl+Shift+I` (Windows/Linux) / `Cmd+Option+I` (Mac) * **Firefox**: Press `F12` or `Ctrl+Shift+K` (Windows/Linux) / `Cmd+Option+K` (Mac) * **Safari**: Enable Developer menu first, then press `Cmd+Option+I` 2. Look for any red error messages in the console 3. Review error details - they often indicate the specific issue If you see errors in the console before clicking save, the issue is likely frontend-related. Note the error messages for troubleshooting. If no frontend errors are visible, first check server-level error logs, as the issue might occur before the request reaches PHP: 1. **Locate your web server error log**: ```bash theme={null} # Apache /var/log/apache2/error.log # or /var/log/httpd/error_log # Nginx /var/log/nginx/error.log ``` 2. **View recent errors**: ```bash theme={null} tail -f /path/to/error.log ``` 3. **Click the save button** while monitoring the log 4. **Review any error messages** that appear Server-level errors can include issues like request timeouts, connection problems, or web server configuration errors that prevent requests from reaching PHP. If no server-level errors are found, check PHP error logs: 1. **Locate your PHP error log** (common locations): ```bash theme={null} # PHP-FPM /var/log/php8.2-fpm.log # or check php.ini for error_log location # You can find it with: php -i | grep error_log ``` 2. **View recent errors**: ```bash theme={null} tail -f /path/to/php-error.log ``` 3. **Click the save button** while monitoring the log 4. **Review the error message** that appears in the log The error log will show the exact PHP error preventing the save operation from completing. Common issues include database errors, permission problems, or missing dependencies. Alternatively, enable DEBUG mode to get more detailed error information: 1. **Enable DEBUG mode** from the admin panel: * Navigate to **Status** page in the admin panel * Enable DEBUG mode using the toggle or button provided 2. **Open your browser's developer console** (see step 1 above) 3. **Navigate to the Network tab** in the developer console 4. **Click the save button** again 5. **Look for the API request** that was made when you clicked save (usually shows as a POST request) 6. **Click on the request** to view details: * Check the **Status Code** (should be between 200 and 299 for success, 4xx/5xx for errors) * Check the **Response** tab to see the response body * Review any error messages in the response Remember to disable DEBUG mode from the Status page after troubleshooting, as it can expose sensitive information in production environments. Based on the error information you've gathered: * **Database errors**: Check database connection and permissions * **Permission errors**: Verify file/directory permissions (see [500 Internal Server Error](#500-internal-server-error-during-installation)) * **Missing dependencies**: Ensure all required PHP extensions are installed * **Frontend JavaScript errors**: Check for conflicting scripts or browser compatibility issues The specific error message will guide you to the exact solution. Common fixes include updating file permissions, fixing database credentials, or installing missing PHP extensions. **Related Documentation:** * [500 Internal Server Error During Installation](#500-internal-server-error-during-installation) - Permission and PHP configuration issues * [Database Connection Issues](#database-connection-issues) - Database-related errors *** ## Database Issues ### MySQL Server Has Gone Away **Symptoms:** * Error message: "MySQL server has gone away" * Database connection drops during requests * Long-running operations fail **Cause:** MySQL server timeout or packet size limitations. **Solution:** **Problem:** MySQL server times out and closes the connection. **Solution:** Update your `my.cnf` configuration file: ```ini theme={null} [mysqld] wait_timeout = 28800 ``` This sets the timeout to 8 hours. Adjust as needed for your use case. **Problem:** MySQL receives packets that are too large or incorrect. **Solution:** Increase the max packet size in `my.cnf`: ```ini theme={null} [mysqld] max_allowed_packet = 128M ``` This allows larger data packets to be processed. **Problem:** InnoDB log file size is insufficient. **Solution:** Increase the log file size in `my.cnf`: ```ini theme={null} [mysqld] innodb_log_file_size = 128M ``` Or larger, depending on your data volume. After modifying `my.cnf`, you must restart your MySQL server for changes to take effect: ```bash theme={null} sudo systemctl restart mysql ``` or ```bash theme={null} sudo service mysql restart ``` **Finding my.cnf:** Common locations for the MySQL configuration file: * Linux: `/etc/my.cnf` or `/etc/mysql/my.cnf` * macOS: `/etc/my.cnf` * Windows: `C:\ProgramData\MySQL\MySQL Server X.X\my.ini` If you're on shared hosting and don't have access to `my.cnf`, contact your hosting provider to request these changes. *** ## Feature-Specific Issues ### Auto-Generated Titles Don't Match Content Language **Symptoms:** * AI generates titles in Spanish when content is in another language * Title language doesn't match the generated content language **Cause:** Before v5.0, the title generator trimmed the content it read too aggressively and nudged some models toward English, so short or non-English content often got a title in the wrong language. v5.0 fixes both: titles are written in the language of the content, and fall back to the user's language only when the content is too short to tell. **Solution:** See [How to Update](/versioning/how-to-update). Some models follow language instructions better than others, which matters most for non-English content. 1. Navigate to **Settings > Features > Utilities** in the admin panel 2. Under **Title generator**, choose a different **Model** 3. Click "Save changes" and test title generation again Since v5.0 the title generator model is one setting for the whole installation. Plans no longer override it. *** ### Uploaded Files Return 404 Not Found Errors **Symptoms:** * Uploaded files show "not found" or 404 errors * Generated files (images, videos, audio, documents etc.) are inaccessible * Files exist in storage but cannot be accessed via URL * Browser shows 404 when clicking file links **Cause:** File grouping enabled on local storage, secure URLs enabled, incorrect document root configuration, or file permission issues. **Solution:** If you're experiencing file access issues with local storage, try disabling file grouping: 1. Log in to the admin panel 2. Navigate to **Settings > Storage** 3. Locate the "File Grouping" option 4. Change the value to **"None"** 5. Click "Save changes" File grouping and secure URLs are optimized for cloud storage (S3, DigitalOcean Spaces, etc.) and may cause compatibility issues on some local storage configurations, particularly on cPanel-based hosting. If files are inaccessible, disabling these options often resolves the issue. If you're using local storage without special security requirements: 1. In **Settings > Storage** 2. Locate the "Secure URLs" option 3. **Turn off** the "Secure URLs" option 4. Click "Save changes" If files were uploaded with Secure URLs enabled, you may need to re-upload them after disabling this option. If your domain's document root is set to `public_html` instead of `public`: 1. Open your `.env` file in the root directory 2. Find the line with `PUBLIC_DIR` (it may be commented out with `#`) 3. Ensure it's set correctly: ```bash theme={null} PUBLIC_DIR=public_html ``` 4. Remove the `#` symbol if present at the beginning 5. Save the file This is particularly important for cPanel users where the default document root is `public_html`. Ensure the web server has read access to uploaded files: ```bash theme={null} # Navigate to your Aikeedo directory cd /path/to/aikeedo # Set correct permissions for storage directory chmod -R 755 storage/ # Set correct ownership (replace www-data with your web server user) chown -R www-data:www-data storage/ ``` Common web server users: * Ubuntu/Debian: `www-data` * CentOS/RHEL: `apache` * Nginx: `nginx` If you're using cloud storage (AWS S3, DigitalOcean Spaces, etc.), CORS issues may prevent file access: 1. **Check your cloud storage CORS configuration:** * Ensure your bucket allows requests from your domain * Verify that the GET method is allowed (generally sufficient for file access) * Check that the correct headers are permitted 2. **Example CORS configuration for AWS S3:** ```json theme={null} [ { "AllowedHeaders": ["*"], "AllowedMethods": ["GET"], "AllowedOrigins": ["https://yourdomain.com", "https://www.yourdomain.com"] } ] ``` 3. **Verify your storage configuration:** * Check **Settings > Storage** in your admin panel * Ensure cloud storage credentials are correct * Verify the bucket/container name and region are accurate CORS misconfiguration can cause files to appear uploaded but return 404 errors when accessed. Always test file access after making CORS changes. Check that your storage path is correctly configured: 1. Go to **Settings > Storage** in the admin panel 2. Verify the storage driver is set correctly (Local, S3, etc.) 3. If using local storage, ensure the path is correct 4. Test by uploading a new file If the new file is accessible, the configuration is correct. You may need to re-upload older files. After making configuration changes: 1. Navigate to **Status** page in the admin panel 2. Click "Clear cache" to clear the application cache 3. Test file access again For production environments requiring secure file access or workspace-based file organization, cloud storage (S3, DigitalOcean Spaces) is recommended. File grouping and secure URL features are optimized for cloud storage and work most reliably in that environment, though they may also work on some local storage configurations. **Related Documentation:** * [Secure URLs](/advanced/secure-urls) - Configure secure file access * [cPanel Installation](/setup/installation/cpanel) - Document root configuration for cPanel *** ### Generated Images/Videos Not Loading **Symptoms:** * Generated images or videos fail to display after creation * Broken image/video placeholders appear instead of content * 404 or 403 errors when accessing generated media files * Files appear to generate successfully but cannot be viewed **Cause:** Incomplete initial setup, cloud storage CORS misconfiguration, incorrect `.env` file configuration (especially for cPanel installations), or Secure URLs/Group files settings enabled when using local storage. **Solution:** Ensure you've completed all steps in the [Initial Setup Guide](/setup/initial-setup): 1. Verify your site domain is configured correctly in **Settings > General** 2. Check that storage settings are properly configured in **Settings > File storage** 3. Ensure all required integrations are set up if using cloud storage Skipping or incorrectly completing initial setup steps can prevent generated files from being accessible. If you're using cloud storage (AWS S3, DigitalOcean Spaces, Cloudflare R2, etc.), CORS misconfiguration is a common cause: 1. **Access your cloud storage provider's console** (AWS S3, DigitalOcean, etc.) 2. **Navigate to your bucket/container settings** 3. **Review CORS configuration** - it must allow requests from your domain 4. **Update CORS rules** if needed: 5. **Save the CORS configuration** 6. **Test by generating a new image or video** CORS rules must include your exact domain (with protocol: `https://` or `http://`). Wildcards may not work for all storage providers. See the [Cloud Storage Overview](/integrations/cloud-storage/overview) and provider-specific guides for detailed CORS configuration instructions. The **Secure URLs** and **Group files** options should only be enabled when using cloud storage (AWS S3, DigitalOcean Spaces, etc.): 1. Navigate to **Settings > File storage** in the admin panel 2. Review the **Secure URLs** and **Group files** settings 3. **If using local storage**, ensure both options are disabled: * **Secure URLs**: Should be turned **Off** * **Group files**: Should be set to **None** 4. **If using cloud storage**, these options can be enabled as needed 5. Click "Save changes" **Secure URLs** and **Group files** are designed for cloud storage only. Enabling these options with local storage can cause generated files to be inaccessible. Changing these settings only affects newly generated files. Files that were already generated with the previous settings will remain unchanged. If the issue stems from Secure URLs, previously generated files can be made accessible by fixing file permissions (see the "Verify Storage Path and Permissions" step below). Otherwise, you may need to regenerate images or videos after adjusting these settings. If you're using cPanel, the `.env` file configuration is critical: 1. **Locate your `.env` file** in the Aikeedo root directory (not in `public_html`) 2. **Find the `PUBLIC_DIR` setting** - it may be commented out with `#` 3. **For main domain installations**, ensure it's set correctly: ```env theme={null} PUBLIC_DIR=public_html ``` 4. **Remove the `#` symbol** if the line is commented out 5. **Save the file** If you're using cPanel and the `PUBLIC_DIR` setting is missing or incorrect, generated files will not be accessible. This is a critical step that must be completed during installation. For add-on domains or subdomains in cPanel where the document root points directly to the `public` folder, you may not need to set `PUBLIC_DIR` or it should be set to `public`. Refer to the [cPanel Installation Guide](/setup/installation/cpanel) for your specific setup. Check that your storage configuration is correct: 1. Navigate to **Settings > File storage** in the admin panel 2. Verify the storage driver is set correctly (Local, S3, etc.) 3. If using local storage, ensure the storage path is writable: ```bash theme={null} # Check storage directory permissions ls -la /path/to/aikeedo/public/uploads/ # Set correct permissions if needed chmod -R 755 /path/to/aikeedo/public/uploads/ chown -R www-data:www-data /path/to/aikeedo/public/uploads/ ``` 4. If using cloud storage, verify: * Bucket/container name is correct * Region is correctly configured * Access keys are valid and have proper permissions * Bucket/container exists and is accessible Test by generating a new image or video. If it loads correctly, the configuration is working. **For cPanel users:** If you skipped or incorrectly completed the `.env` file configuration step during installation (specifically the `PUBLIC_DIR=public_html` setting), generated files will not load correctly. This is one of the most common causes of this issue on cPanel hosting. Refer to the [cPanel Installation Guide](/setup/installation/cpanel) and ensure you've completed the "Update the Environment File" step correctly. **Related Documentation:** * [Initial Setup Guide](/setup/initial-setup) - Complete setup configuration * [cPanel Installation](/setup/installation/cpanel) - Critical `.env` file configuration * [Cloud Storage Overview](/integrations/cloud-storage/overview) - Cloud storage setup and CORS configuration * [Secure URLs](/advanced/secure-urls) - Secure file access configuration *** ## Additional Troubleshooting Steps If you're still experiencing issues after trying the solutions above: 1. **Fresh Installation**: Consider a clean reinstall with fresh Aikeedo files 2. **Server Configuration**: Review web server configuration (Apache/Nginx) for PHP applications 3. **PHP Configuration**: Check `php.ini` for settings like: * `max_execution_time` * `upload_max_filesize` * `post_max_size` * `memory_limit` 4. **Hosting Environment**: Contact your hosting provider to ensure no server-side restrictions ## Getting Additional Help If you've tried the solutions above and still need assistance: ### Before Contacting Support 1. **Check Error Logs:** * Browser console (F12 in most browsers) * Server error logs (`/var/log/apache2/error.log` or `/var/log/nginx/error.log`) * Application logs * PHP error logs 2. **Verify Configuration:** * Review [Initial Setup](/setup/initial-setup) * Check [Application Configuration](/setup/configuration) * Verify [Server Requirements](/overview/server-requirements) 3. **Clear Caches:** * Clear browser cache (Ctrl+Shift+R or Cmd+Shift+R) * Clear application cache from admin panel Status page ### Need Additional Help? Get expert help from our team with a paid support subscription For support plan options and pricing, visit [https://aikeedo.com/support/](https://aikeedo.com/support/?utm_source=docs\&utm_medium=content). **Before contacting support:** * Ensure you have an active [support plan subscription](https://aikeedo.com/support/?utm_source=docs\&utm_medium=content) * Have your Aikeedo license key ready for validation **When contacting support, include:** * Your Aikeedo license key (for purchase validation) * Detailed description of the issue * Complete error messages (screenshots if possible) * Steps to reproduce the problem * PHP version and server environment details * Aikeedo version number * Relevant error log entries * What troubleshooting steps you've already tried Support is only available to users with active support plan subscriptions. Requests without valid license keys or active support plans will not be processed. The more detailed information you provide, the faster our support team can help resolve your issue. *** ## Related Guides * [Installation Guide](/setup/installation) * [Initial Setup](/setup/initial-setup) * [Application Configuration](/setup/configuration) * [Server Requirements](/overview/server-requirements) * [Plans, Snapshots & Subscriptions](/billing/plans-snapshots-subscriptions) # How to Update Aikeedo Source: https://docs.aikeedo.com/versioning/how-to-update Stay up-to-date with the latest features and improvements by following our straightforward update instructions for each new version of Aikeedo. Keeping your Aikeedo installation current ensures you benefit from the latest features, security patches, and performance enhancements. This guide provides a comprehensive, step-by-step process for updating Aikeedo, suitable for users of all technical levels. **Upgrading to v5.1?** The update adds an `APP_ENCRYPTION_KEY` to your `.env` file for [Connectors](/advanced/connectors#encryption-key) if there is none. If the file is not writable, run `php bin/console app:generate-key` and back the key up with your database. Private mode replaces private chats, so re-enable it afterwards. See the [v5.1 notes](/versioning/release-notes#upgrading-to-v5-1). **Upgrading to v5.0?** The standard update process on this page works, but v5.0 removes tools and requires every plugin to be updated. Read the [v5.0 breaking changes and upgrade steps](/versioning/release-notes#upgrading-to-v5-0) before you start. **Upgrading from v2.x to v3.0?** This guide is **not** suitable for that upgrade. You must follow the dedicated [Migration Guide](/versioning/release-notes#migration-guide-upgrading-from-v2-x-to-v3-0) instead. Attempting to use the standard update process for a v2.x → v3.0 upgrade may result in data loss or a broken installation. ## Before You Begin Before initiating the update process, it's crucial to take a few preparatory steps: 1. **Check for Updates**: Visit our [official website](https://aikeedo.com) to confirm the latest available version of Aikeedo. 2. **Review the Changelog**: Familiarize yourself with the new features, improvements, and any potential breaking changes by reviewing our [changelog](https://aikeedo.com/changelog/?utm_source=docs\&utm_medium=content). 3. **Backup Your Data**: As a precautionary measure, create a complete backup of your Aikeedo data. This step is crucial to prevent any potential data loss during the update process. Always perform updates in a staging environment first, if possible, to ensure compatibility with your specific setup. ## Update Process Follow these steps to update your Aikeedo installation: 1. **Download the Latest Version**: * Obtain the latest Aikeedo package from the official source. * Extract the downloaded zip file on your local machine. 2. **Locate the Update File**: * Find the `aikeedo-server-files.zip` file within the extracted contents. 3. **Access the Admin Panel**: * Log in to your Aikeedo admin panel. * Navigate to the "Update" page in the admin dashboard. 4. **Upload the Update File**: * Click on the "Choose File" button. * Select the `aikeedo-server-files.zip` file you located earlier. 5. **Initiate the Update**: * Click the "Install" button to begin the update process. * Follow any on-screen instructions carefully. The update process may take several minutes to complete. Do not close your browser or interrupt the process until it's finished. ## Post-Update Steps After the update process completes: 1. **Verify the Update**: Confirm that the update was successful by checking the version number in your admin panel. 2. **Clear Cache**: In most cases, this step is not necessary. Aikeedo automatically manages its cache during updates. However, if you notice any display issues, you may want to clear your browser cache as a troubleshooting step. 3. **Test Functionality**: Thoroughly test all aspects of your Aikeedo installation, including: * User authentication * AI-powered features * Payment integrations (if applicable) * Custom configurations or integrations 4. **Review Settings**: Some updates may introduce new settings or change existing ones. Review your configuration to ensure everything is set up as desired. ## Troubleshooting If you encounter any issues during or after the update: 1. Review the update logs (if available) for any error messages. 2. Ensure all [server requirements](/overview/server-requirements) are still met after the update. ## Staying Informed To stay updated on the latest Aikeedo releases and announcements: * Follow us on [social media](https://x.com/heyaikeedo) * Regularly check our [changelog](https://aikeedo.com/changelog/?utm_source=docs\&utm_medium=content) By following these update procedures and staying informed, you'll ensure your Aikeedo installation remains secure, efficient, and equipped with the latest features to serve your users best. # Release Notes Source: https://docs.aikeedo.com/versioning/release-notes Learn about the latest changes, breaking updates, and migration instructions for Aikeedo. The full changelog is available at [https://aikeedo.com/changelog/](https://aikeedo.com/changelog/?utm_source=docs\&utm_medium=content). This page documents only breaking changes and critical migration instructions for major releases. ## v5.1 v5.1 adds MCP connectors, an optional Connector Catalogue plugin, an app-wide private mode and keyboard shortcuts, and refreshes the model catalog. **Back up your files and database before updating.** The standard update process works and database migrations run automatically. After the update, re-enable [Private mode](/advanced/private-mode) and update every installed plugin. ### What's new in v5.1 * **Connectors (MCP)** — chat can use tools from remote MCP servers. Each user signs in with their own account, every tool has an always, ask or never permission (the default is to ask), and an approval card in the conversation shows exactly what a tool will send. Admins turn Connectors on under **Settings → Features → Chat** and choose per plan which connectors are included and how many custom ones a workspace may add. Tool calls are not charged credits. See [Connectors](/advanced/connectors). * **Connector Catalogue plugin** — 487 vetted, ready-made MCP servers you import under **Settings → Starter content → Connectors**. Requires Aikeedo 5.1 or later and is available in the [marketplace](https://aikeedo.com/marketplace/connectors/?utm_source=docs\&utm_medium=content). * **Private mode** — replaces private chats. One switch makes everything a user creates temporary across the whole app, and it stays on across pages and tabs in the same browser until turned off. See [Private Mode](/advanced/private-mode). * **Keyboard shortcuts** — shortcuts for common actions, shown where they apply and listed in a cheat sheet. Users can switch each one off. See [Keyboard Shortcuts](/advanced/keyboard-shortcuts). * **Model catalog refresh** — adds Claude Opus 5.5, Claude Sonnet 5.5, GPT 6.1 Sol, GPT 6 Luna, Grok 4.7 and Grok Imagine Video 1.5 Lite. ### Changes to be aware of in v5.1 #### Encryption key Connectors store credentials encrypted, with the key in `APP_ENCRYPTION_KEY` in your `.env` file. The update writes a key if there is none. If `.env` is not writable, the admin **Connectors** page shows a warning: run `php bin/console app:generate-key`. **Back the key up with your database.** See [Connectors](/advanced/connectors#encryption-key). #### Private mode replaces private chats The chat-only temporary chat setting is removed. Turn on private mode under **Settings → Features → Privacy & safety**, set the retention period, and check your plans. #### User-supplied URLs cannot reach private networks Connector addresses, web pages read during chat and dataset URLs must be public. Addresses that point to `localhost`, private networks or cloud metadata endpoints are refused, including through redirects. An MCP server on the same machine or network as Aikeedo cannot be used as a connector. #### Retired models removed Claude Sonnet 4.5, GPT 5.1, GPT 5.4 nano, Command R and Command R+ are removed. Reassign any plans, assistants or defaults that used them. ### Upgrading to v5.1 Back up your files and database. Follow the standard [How to Update](/versioning/how-to-update) process. Database migrations run automatically. Update all installed plugins from the marketplace. * Re-enable private mode under **Settings → Features → Privacy & safety** and check your plans. - Turn on **Connectors** under **Settings → Features → Chat**, then choose what each plan includes. - Optionally install the [Connector Catalogue](https://aikeedo.com/marketplace/connectors/?utm_source=docs\&utm_medium=content) plugin. Confirm `APP_ENCRYPTION_KEY` is set in `.env` and backed up with your database. *** ## v5.0 v5.0 is a major release. Chat gains Canvas, clarifying questions and media generation. The Writer becomes a guided wizard that continues in chat. Imagine and Video get templates, a community feed and a new composer. The interface is rebuilt around a Recents sidebar and a new Settings area. Every official plugin is now translated, and languages can be managed from the admin panel and completed with new translation tooling. v5.0 removes tools and changes plugin interfaces. **Back up your files and database before updating**, read the breaking changes below, and **update every installed plugin** after the core update. The standard update process works, and database migrations run automatically, with no manual SQL. ### What's new in v5.0 #### Chat * **Canvas** — the assistant writes documents, code, HTML and SVG to a side panel instead of reprinting them in the thread. Revisions are patches, every version is kept and can be restored, and users can comment on a selected passage. All documents are collected in the Library under **Artifacts**. * **Inline documents** — short standalone writing (emails, messages, posts, letters) renders as a card in the conversation. Emails can be opened in Gmail, Outlook or the default mail app. * **Clarifying questions** — the model can pause to ask multiple-choice questions before answering an ambiguous request. The question turn and the answer turn are billed separately. * **Media generation in chat** — the chat capability now generates images, video, voice-overs and transcripts, can edit an earlier image by reference, and shows results inline, including async generations. For voice-overs, users pick a voice right in the conversation and can listen to it first. * **Personalization** — users can add their own chat instructions and tell the AI what to call them. #### Writer * **Preset wizard** — opening a Writer template asks its questions one screen at a time, then continues as a normal chat conversation with tools, Canvas and follow-ups. The filled prompt is never shown to the user. * **Recommended model** — admins can set a recommended model on a template. See [Prompt Templates](/advanced/prompt-templates). #### Imagine & Video * **Templates** — admin-authored image and video templates with preview artwork, pinned settings, required input images and optional locking that hides the prompt and model. See [Prompt Templates](/advanced/prompt-templates#image-and-video-templates). * **Community** — users can share generations to a feed visible to everyone on the installation (**Settings → Features → Community**). * **New composer** — quick settings chips, `@image` reference tags, **Enhance** to rewrite a prompt and **Surprise me** to write one (**Settings → Features → Utilities**). * **Inputs are kept** — reference images and frames are saved with each generation and shown in the details panel, and **Remix** restores them. #### Interface * **Recents** — each tool's history moves into the left sidebar, with rename, share, delete and read/unread status. * **Head bar and Details panel** — every tool shows the open item's title, actions and a details panel with credits spent, the model used and other insights. * **Settings area** — account, security, capabilities, API keys (now revocable), affiliates and workspace pages live under one Settings section with its own navigation. * **Contextual "New" button**, a merged workspace and account menu, and redesigned dialogs that work properly on phones. #### Localization and administration * **Languages page** — enable languages, choose the default and see how complete each translation is from **Settings → Languages**. See [Localization](/advanced/localization). * **Translation tooling** — `app:locale:extract`, `app:locale:translate` (AI translator) and `app:locale:build`. Updates now keep your own translation edits. * **Starter content** — import Writer, image and video templates at any time from **Settings → Starter content** or during installation. See [Starter Content](/advanced/seed-data). * **Model catalog refresh** — adds GPT 6 Astra, GPT 5.6 Sol/Terra/Luna, Opus 5, Fable 5.1, Command A+, Grok 4.6 and 4.5, GPT Image 2.5, Grok Image 2.0 and Video 1.5, Seedance 2.5, Nano Banana 2, Seedream 5.0 Pro, Kling 3.0 Turbo, Wan 3.0, Hailuo H3, Veo 3.1 Lite, Gemini Omni Flash and FLUX 3. ### Plugins **All plugins are now translated.** Update each installed plugin to get its translations and v5.0 compatibility. ### Breaking changes in v5.0 #### Coder removed The Coder tool is removed. Existing code documents are converted into chat conversations during the update, together with Writer documents. #### Composer removed The Composer (music) tool and its AI/ML API integration are removed. **Existing compositions and their files are deleted** during the update. Download anything you want to keep before updating. #### Writer documents become conversations The standalone Writer editor is replaced by the preset wizard. Existing Writer documents are converted into chat conversations during the update. The `writer.model` plan setting is no longer used; users pick the model in the wizard. #### `POST /api/ai/completions` removed The legacy completions endpoint is removed from the User API. Use the conversations API instead. #### `TitleServiceInterface` removed `Ai\Domain\Title\TitleServiceInterface` and the provider `TitleGeneratorService` classes are removed. Plugins that resolved them must use `TextCompletionServiceInterface` or the `Titler` service instead. This is why every plugin needs updating. #### Image generation capability renamed The `generate_image` plan tool is replaced by `generate_media`, which covers images, video, voice-over and transcription. Review the chat capabilities on each plan after updating. #### Title generator model is global The title generator model is no longer set per plan. Set it once in **Settings → Features → Utilities**. #### Reference image uploads narrowed Reference images for Imagine and Video accept JPEG, PNG, WebP and GIF only. #### Retired models removed o1, o3, o3-mini, o3-pro, o4-mini, GPT-4, GPT-4 Turbo, GPT-4.1 nano, GPT-3.5 Turbo, Sora 2, Sora 2 Pro, GPT Image 1, 1 mini and 1.5, Claude Sonnet 4.0, Imagen 3 and 4, Veo 2 and 3, FLUX.1 Pro and Lucy are removed. Reassign any plans, assistants or defaults that used them. #### Starter content re-import Writer templates now ship with fixed IDs. If you imported the built-in templates before v5.0 and import them again from **Settings → Starter content**, you get one set of duplicates to delete. New installations are unaffected. ### Upgrading to v5.0 Back up your files and database. If you use Composer, download the compositions you want to keep. Follow the standard [How to Update](/versioning/how-to-update) process. Database migrations run automatically. Update all installed plugins from the marketplace so they are compatible with v5.0 and ship their translations. * Enable your languages in **Settings → Languages**. - Set the title generator and prompt tools model in **Settings → Features → Utilities**. - Turn on Canvas, Clarifying questions and Media generation in **Settings → Features → Chat**, and enable them on your plans. - Optionally enable **Community** and import templates from **Settings → Starter content**. Make sure `/{webroot}/locale` (for example `public/locale`) is writable, so the browser translation dictionaries can be rebuilt. *** ## v4.1 v4.1 adds operator-facing billing and chat controls, plus self-service account management. v4.1 has no breaking changes and requires no migration. You can update using the standard process — see the [How to Update](/versioning/how-to-update) guide. ### What's new in v4.1 * **Session-based usage mode** — optional alternative to credit metering that paces usage through configurable session windows while hiding credit balances from users. See [Billing Overview](/billing/overview#usage-mode). * **Configurable detailed pricing page URL** — set where the Plans page "Detailed pricing table" button links, including external marketing sites. * **Self-service account deletion** — allow users to permanently delete their own accounts (admin toggle). See [Account Settings](/authentication/accounts-settings#account-deletion). * **Temporary chat** — let users start chats that are not saved to history, with a configurable retention period. * **Chat thinking / reasoning controls** — configure per-model reasoning profiles and expose thinking on/off and effort controls in chat. *** ## v4.0 v4.0 is the largest Aikeedo release to date. It introduces the Chatbots plugin, a full Tax Layer, new payment gateways, the Sources module, and a range of platform improvements. v4.0 has no breaking changes and requires no migration. You can update using the standard process — see the [How to Update](/versioning/how-to-update) guide. *** ## v3.0 Please review these notes carefully if you are upgrading from v2.x. Version 3.0 introduced several breaking changes. If you are upgrading from v2.x, follow the migration guide below. ### Breaking Changes in v3.0 #### Plugins Architecture Changed * Plugins are now installed in `/extra/extensions` instead of `/public`. * Old plugins remain compatible, but you must reinstall them manually. #### "Cohere Web Search" Chat Capability Removed * The Cohere integration now uses Cohere API v2.0. * The built-in web search feature from Cohere has been removed and replaced with Google Search. * Please update your plan configuration accordingly. #### Removed Models The following legacy/deprecated models have been removed. Please use other available models: * openai/gpt-3.5-turbo-instruct * openai/o1-preview * openai/o1-mini * openai/gpt-4.5-preview * openai/text-moderation-latest * openai/dall-e-2 * fal-ai/flux-realism (not available anymore) * grok-beta * grok-vision-beta #### Search Box Removed * The search box on the user app dashboard has been replaced with a new quick access bar. * To search for library items, visit the Library pages. #### Ai/Infrastruture Namespace Renamed * The namespace is now correctly spelled as `Ai/Infrastructure`. * If you use services from this layer in custom code, update the namespace accordingly. #### Change in ImageServiceInterface::generateImage() Method Signature * The signature of `Ai\Domain\Image\ImageServiceInterface::generateImage()` has changed. * It now returns `ImageEntity` directly. * Update any custom image generator services to match the new signature. #### Keys for the Following Models Have Been Updated If you use any of the following models, set the credit rates and enable them both globally and at the plan level again: * fal-ai/flux/dev * fal-ai/flux/schnell * fal-ai/flux-pro *** ### Migration Guide: Upgrading from v2.x to v3.0 Version 3.0 is a major release with breaking changes. A standard update is NOT sufficient for upgrading from v2.x to v3.0. Please follow this migration guide to avoid data loss. Before starting the migration, create a full backup of your database and all files in your current Aikeedo installation. This is essential to prevent data loss. Make sure your backup includes user uploads and your database. Delete all files and folders from your installation directory. This will remove all application files. Do not proceed unless you have a backup. Before installing the new version, ensure you have your previous database name and user credentials ready. You will need to enter these during installation to preserve your data. When prompted by the installer, choose the Migrate option to keep your current data. If you provide the same database details as your previous installation, the installer will ask whether you want to migrate your current data or perform a fresh install. Choose the Migrate option to preserve your data. Only choose a fresh install if you want to start with a clean database. Install the new version in the same directory by extracting to the same location as your previous installation. Then follow the installation guide to complete the setup. The new version package includes all required files and directories. Overwrite any existing files if prompted. After installation is complete, restore your /public/uploads directory from your backup. If you are using public\_html instead of public, restore your uploaded files from your backup to /public\_html/uploads. Navigate to the Update page in the Admin panel. This step is crucial as it finalizes the update process in the background. Do not skip this step. The update will not be fully applied until you visit the update page in Admin. Install your plugins again from the admin UI. Plugin architecture has changed in v3.0. All plugins must be reinstalled manually. If you have custom plugins or integrations, review the breaking changes above and update your code as needed. # Branding Source: https://docs.aikeedo.com/website-basics/branding Customize your Aikeedo platform with custom logos, favicons, color schemes, and settings to create a unique brand identity. Aikeedo provides comprehensive branding options to customize the visual identity of your platform. This guide covers logo configuration, color schemes, and appearance settings. ## Accessing Branding Settings To access the branding settings: 1. Log in to your Aikeedo admin panel 2. Navigate to the "Settings" section in the left sidebar 3. Under the "Branding" category, you'll find options for "Logo" and "Appearance" The branding settings affect both the admin panel and the user-facing parts of your Aikeedo instance. ## Logo Settings Your logo is often the first thing users notice about your brand. Aikeedo allows you to customize various logo elements: ### Favicon The favicon is the small icon that appears in browser tabs and bookmarks. * Click on "Browse files" to upload your favicon * Supported formats: PNG, JPG, JPEG, GIF, ICO, or SVG * Recommended size: 16x16 pixels or 32x32 pixels for better quality on high-resolution displays ### Primary Logo The primary logo is used in the header of your website and emails. * Upload separate logos for light and dark modes * Supported formats: PNG, JPG, JPEG, GIF, ICO, or SVG * Recommended size: Varies depending on your design, but ensure it's clear and legible ### Alternative Logo The alternative logo is typically used in the footer of your website and emails. * Upload separate logos for light and dark modes * Supported formats: PNG, JPG, JPEG, GIF, ICO, or SVG * Recommended size: Usually smaller than the primary logo For the best results, use SVG format for your logos. SVGs are scalable and will look crisp on all devices and screen sizes. ## Appearance Settings Customize the color scheme and overall look of your Aikeedo instance: ### Color Schemes * **Light mode**: Enable or disable light mode for your users * **Dark mode**: Enable or disable dark mode for your users * **Default color scheme**: Choose between "System" (follows user's device settings) or set a specific default ### Accent Colors * **Accent color**: The primary brand color used for buttons, links, and highlights * **Accent text color**: The color of text that appears on elements using the accent color These settings apply to both the admin panel and user interface. However, they may not affect the landing page, depending on your chosen theme. ## Best Practices Follow these guidelines to create a professional brand identity: 1. **Consistency**: Maintain consistent branding across all touchpoints including website, emails, and notifications 2. **Readability**: Choose colors with sufficient contrast to ensure text remains easily readable 3. **File Optimization**: Compress image files to ensure fast loading without sacrificing quality 4. **SVG Format**: Use SVG format for logos when possible for scalability across all devices 5. **Testing**: Preview your branding in both light and dark modes before finalizing Test your color choices with accessibility tools to ensure they meet WCAG contrast requirements for all users. ## Related Guides * [General Settings](/website-basics/essentials) - Configure site name and SEO * [Landing Page Customization](/website-basics/landing-page) - Customize landing page theme * [PWA Settings](/website-basics/pwa) - Set up progressive web app features * [Application Configuration](/setup/configuration) - Complete setup checklist # General Settings Source: https://docs.aikeedo.com/website-basics/essentials Configure website name, SEO metadata, keywords, and landing page settings in Aikeedo to optimize your platform for search engines and user experience. Navigate to **Settings > General** in your Aikeedo admin panel to configure your platform's core website information and SEO settings. ## Website Information ### Website Name The website name appears throughout your platform and represents your brand. * Locate the "Name" field under the "Website" section * Enter your brand name or platform title * Example: "AI Wizard" or "AI Wizard Platform" Choose a memorable name that clearly communicates your platform's purpose to users. ### Site Domain Configure your website's domain for proper functionality. * Enter your domain name in the "Site Domain" field * **Important:** Include only domain, subdomain (if any) and port number (if any) * **Do not include** protocol (http/https) or path * Omit port number if it's 80 or 443 * Example: `demo.aikeedo.com` or `mysite.com:8080` Incorrect domain configuration can cause authentication and payment gateway issues. Make sure to enter only the domain without http\:// or https\://. ### SSL Configuration Enable SSL for secure connections and required features. * Toggle "Is SSL Enabled?" to "Yes" if you have an SSL certificate installed * SSL is required for various features like SSO and Payment Gateways * It's highly recommended to enable SSL for production environments Only enable SSL if you have a valid SSL certificate installed on your server. Enabling without a certificate will cause connection errors. ### Landing Page Control the first page visitors see when they arrive at your site. * Enable this toggle to display the default landing page * When disabled, visitors are redirected to the login page If you plan to publicly market your platform, keep the landing page enabled to showcase your services to potential users. ### Default App Page Set the default page users see after logging in. * Enter the path for your default app page (e.g., `/app`) * This setting will be used as the default page for users when they login * Admins will always be redirected to the admin dashboard regardless of this setting Common values include `/app`, `/app/chat`, or `/app/video` depending on your platform's structure. ## SEO Optimization Search Engine Optimization (SEO) is vital for improving your site's visibility in search results. ### Keywords 1. In the "SEO" section, locate the "Keywords" field. 2. Enter relevant keywords for your AI service, separated by commas. 3. Example: "AI assistant, machine learning, natural language processing, chatbot" Choose keywords that accurately describe your service and that potential users might search for. Don't overstuff with keywords; focus on the most relevant ones. ### Description 1. Find the "Description" field in the SEO section. 2. Write a concise, compelling description of your AI service (typically 150-160 characters). 3. This description may appear in search engine results, so make it informative and engaging. ## Saving Changes After configuring your general settings: 1. Review all changes for accuracy 2. Click the "Save changes" button at the bottom of the page 3. Wait for the confirmation message Your general settings have been updated successfully. ## Related Guides * [Landing Page Customization](/website-basics/landing-page) - Customize landing page theme * [Branding](/website-basics/branding) - Customize logos and colors * [Application Configuration](/setup/configuration) - Complete configuration checklist * [Email Configuration](/email/mailer) - Set up email delivery # Landing Page Customization Source: https://docs.aikeedo.com/website-basics/landing-page Customize your Aikeedo landing page including hero images, text content, and theme files while preserving changes through updates. ## Overview The landing page is the first impression visitors get of your Aikeedo platform. This guide covers how to customize images, text, and theme files safely. Changes made directly to the default theme will be overwritten during app updates. Always duplicate the theme before making customizations. **Directory Note**: If you've replaced the default `public` directory with `public_html` (common in cPanel environments), replace `public` with `public_html` in all file paths throughout this guide. ## Landing Page Options Aikeedo offers flexibility in how you manage your landing page: Use Aikeedo's built-in landing page and customize it to match your brand. This option gives you full control while staying within the Aikeedo ecosystem. **Best for:** Users who want to customize the existing design without external tools. Install Aikeedo on a subdomain (`app.yourdomain.com`) and disable the default landing page. Create your main landing page using external services like Framer, WordPress, Webflow, or Squarespace, then point your main domain (`yourdomain.com`) to your third-party landing page. **How it works:** Main domain shows your custom landing page, while the subdomain handles Aikeedo functionality (authorized users go to dashboard, unauthorized visitors see login page). **Best for:** Users who want complete design freedom with specialized landing page builders. Set the **Detailed pricing page URL** in [Billing settings](/billing/overview#detailed-pricing-page-url) so the in-app Plans page button links to your external pricing page instead of the default `/#pricing` anchor. Browse and install pre-built themes from our [Marketplace](https://aikeedo.com/marketplace/?utm_source=docs\&utm_medium=content). These professionally designed themes are ready to use and can be customized to match your brand. **Best for:** Users who want professional designs without starting from scratch. Create custom themes tailored to your specific needs. You can build themes yourself or have our team create them for you. **For developers:** * Start with our minimal [Theme Starter Kit](https://github.com/heyaikeedo/themes-starter) - the same foundation we use internally * Follow our comprehensive [Theme Development Guide](/development/themes/overview) for detailed instructions **For custom development:** * Contact [sales@aikeedo.com](mailto:sales@aikeedo.com) to have our team create custom themes for you **Best for:** Users who need unique designs or have specific branding requirements. ## Customize the Default Landing Page To customize Aikeedo's default landing page, you'll need to duplicate the theme first to protect your changes from being overwritten during updates. Copy the default theme to a new location: ```bash theme={null} # From /extra/extensions/heyaikeedo/default # To /extra/extensions/yourorganization/themename ``` Replace `yourorganization` and `themename` with your preferred names. In your duplicated theme directory, update the `composer.json` file to reflect the new theme name: ```json theme={null} { "name": "yourorganization/themename" } ``` The name must match the new directory structure. Copy the theme assets to match your new theme: ```bash theme={null} # From /public/e/heyaikeedo/default # To /public/e/yourorganization/themename ``` If using `public_html`, replace `public` with `public_html` in the paths above. 1. Navigate to the admin panel 2. Go to **Themes** page 3. Find your new theme in the list 4. Click **Activate** to enable it For development, you need to enable debug mode and disable app cache: 1. Navigate to the **Status** page in your admin panel 2. **Enable Debug Mode**: This allows you to see changes in real-time during development 3. **Disable App Cache**: Disable all caching options on the same page Debug mode and disabled cache should never be enabled in production as they significantly impact performance. Edit files in your custom theme directory: * **Modify TWIG templates**: Aikeedo uses TWIG for HTML views (`.twig` files) * Update CSS styles * Add custom JavaScript * Replace images TWIG templates are located in the `views` directory of your theme. Look for `.twig` files to modify the HTML structure. Once you've completed and tested your changes: 1. Navigate to the **Status** page in your admin panel 2. **Disable Debug Mode** for optimal performance 3. **Re-enable App Cache** for production If you have any caching enabled, clear the application cache from the admin panel's Status page after making changes. Your customizations are now protected from being overwritten during updates. ## Theme File Locations Understanding where theme files are located helps you customize effectively: ### Asset Files (CSS, JS, Images) ``` /public/e/heyaikeedo/default/ ``` Contains all frontend assets including: * Stylesheets (CSS) * JavaScript files * Images and icons ### HTML View Files ``` /extra/extensions/heyaikeedo/default/ ``` Contains template files that generate the HTML structure. ## Quick Customizations ### Updating the Hero Image The hero image is located at: ``` /public/e/heyaikeedo/default/assets/preview.webp ``` To update the hero image: 1. Replace the existing `preview.webp` file with your new image 2. Keep the same filename (`preview.webp`) 3. Clear your browser cache to see the changes For best results, use WebP format for optimal performance and loading speed. ### Updating Text Content Text content should be updated through localization files for proper multilingual support. Localization files are located at: ``` /extra/extensions/heyaikeedo/default/locale ``` See the [Localization guide](/advanced/localization) for detailed instructions on managing text translations. ## Advanced Theme Development For comprehensive theme customization and development: ### Default Theme Source Code Access the default theme source code and documentation: View the complete source code, structure, and implementation of the default landing page theme ### Theme Development Resources For in-depth information on building custom themes: Learn about theme architecture, available objects, and best practices for theme development Minimal foundation for building custom themes from scratch - the same base we use internally ## Best Practices Follow these guidelines for successful landing page customization: 1. **Always Duplicate**: Never edit the default theme directly 2. **Version Control**: Keep your custom theme under version control (Git) 3. **Test Thoroughly**: Test changes across different browsers and devices 4. **Optimize Assets**: Compress images and minify CSS/JS for better performance 5. **Document Changes**: Keep notes on customizations for future reference 6. **Regular Backups**: Backup your custom theme before major changes If you only need to change colors and logos, consider using the [Branding settings](/website-basics/branding) instead of creating a custom theme. ## Troubleshooting Common issues and solutions: * Clear your browser cache (hard refresh: Ctrl+Shift+R or Cmd+Shift+R) * Clear the application cache from the admin panel * Verify you're editing the active theme, not the default theme * Verify the `composer.json` file has the correct name format * Ensure the directory structure matches the name in `composer.json` * Check file permissions on the theme directories * Verify asset files are in the correct `/public/e/` directory * Clear browser cache and application cache * Check browser console for 404 errors on asset files ## Related Guides * [Branding](/website-basics/branding) - Configure logos and colors * [General Settings](/website-basics/essentials) - Set site name and SEO * [Localization](/advanced/localization) - Manage translations * [Theme Development Guide](/development/themes/overview) - Advanced theme development Remember to disable debug mode on production sites to ensure optimal performance and security. # Progressive Web App (PWA) Source: https://docs.aikeedo.com/website-basics/pwa Configure Aikeedo as a Progressive Web App (PWA) with custom icons, theme colors, and offline capabilities for an app-like user experience. Progressive Web Apps (PWAs) combine the best of web and mobile applications, offering fast, reliable, and engaging experiences. This guide covers PWA configuration for your Aikeedo platform. ## What is a PWA? A Progressive Web App is a type of application software delivered through the web, built using common web technologies including HTML, CSS, and JavaScript. PWAs are designed to work on any platform that uses a standards-compliant browser, including both desktop and mobile devices. PWAs can offer features like offline functionality, push notifications, and home screen installation, providing a native app-like experience to your users. ## Configuring Your PWA To set up your Aikeedo application as a PWA, follow these steps: ### 1. Enable PWA Functionality First, ensure that the PWA feature is enabled for your application: 1. Navigate to the PWA settings page in your Aikeedo admin panel. 2. Locate the "Status" toggle switch. 3. Ensure it is set to "Enabled" (the switch should be green). ### 2. Basic Configuration Fill in the following fields to customize your PWA: * **Name**: Enter the full name of your application (e.g., "Aikeedo"). * **Short Name**: Provide a shorter version of your app name, which will be used when space is limited (e.g., on device home screens). * **Display**: Choose how you want your app to appear when launched. The "Minimal" option provides a streamlined user interface. * **Description**: Write a brief description of your application (e.g., "All-in-one AI tool"). ### 3. Visual Customization Customize the look of your PWA with these settings: * **Theme Color**: Enter a hexadecimal color code (e.g., "#ffffff") to set the primary theme color of your PWA. This color may be used in the browser's address bar or other UI elements. * **Background Color**: Specify a hexadecimal color code (e.g., "#3F4246") for the background color of the splash screen that appears when your PWA is launched. ### 4. App Icon The app icon is crucial for brand recognition and will be displayed on the user's home screen or app launcher: 1. Click the "Browse files" button next to "App icon". 2. Upload an image that meets the following criteria: * Recommended size: 512x512 pixels * Supported formats: PNG, SVG, or WEBP * Ensure the icon is visually appealing and recognizable at smaller sizes ### 5. Maskable Icon Maskable icons adapt to different device requirements by allowing the icon to fill the entire shape provided by the device's operating system: 1. Toggle the "Maskable icon" switch to "Enabled" if you want your icon to be maskable. 2. Ensure your uploaded icon has some padding around the main content to accommodate different mask shapes. ### 6. Save Your Changes After configuring all the settings, click the "Save changes" button at the bottom of the page to apply your PWA configuration. ## Testing Your PWA After configuring PWA settings, test the installation: 1. Visit your site on a mobile device or Chrome on desktop 2. Look for the "Install" or "Add to Home Screen" prompt 3. Install the PWA and verify the icon, name, and colors appear correctly ## Related Guides * [Landing Page Customization](/website-basics/landing-page) - Customize landing page theme * [Branding](/website-basics/branding) - Customize logos and colors * [General Settings](/website-basics/essentials) - Configure site name and SEO * [Application Configuration](/setup/configuration) - Complete setup checklist PWA features enhance user engagement by providing an app-like experience directly from the browser, increasing accessibility across all devices.