# Notifications Source: https://docs.getarca.app/account/notifications Control how and when Arca notifies you: desktop alerts, email reminders, and news. Notification preferences let you control how Arca reaches you outside the app. To open these settings, go to **Settings > Notifications**. ## Desktop notifications Toggle desktop notifications on or off. When enabled, Arca can send system-level notifications to your desktop while the app is running. Desktop notifications are only available in the Arca desktop app. They are not available in the web version. ## Web notifications In the web version, you can enable browser push notifications instead. When enabled, Arca can send notifications to your browser even when the tab is not in focus. ## Unread notification reminders When enabled, Arca sends you an email reminder if you have unread in-app notifications that you have not checked after 30 minutes. ## News and updates Choose whether Arca can send you occasional product news and update emails. Options: **Never** or **Allow**. ## Notification types The **Notification types** section lets you control which events trigger notifications. Disabling a type blocks it across all channels, inbox, desktop, web, and mobile. | Event | Triggered when | | -------------------- | ----------------------------------------------------- | | Task assignments | Someone assigns you to a task | | New comments | Someone adds a comment to a task you're subscribed to | | Mentions | Someone @mentions you in a comment | | Reactions | Someone reacts to a task you reported | | Status changes | A task's status is updated | | Priority changes | A task's priority level changes | | Due date changes | A task's due date is set or modified | | Start date changes | A task's start date is set or modified | | Due date reminders | A reminder sent before a task's due date arrives | | Start date reminders | A reminder sent before a task's start date arrives | | Overdue tasks | A task passes its due date without being completed | Toggle any row to turn that notification type on or off. Changes take effect immediately. ## Viewing your notifications Your in-app notifications appear in your Inbox. Open it from the sidebar to see task assignments, comments, mentions, and start/due date reminders. # Points Source: https://docs.getarca.app/account/points Arca awards points when you complete tasks, encouraging momentum and recognizing consistent work. Points are a built-in way to recognize and track contribution across your workspace. Every time an assigned task moves to a completed status, the assignees earn points automatically. ## How points are earned | Action | Points | | --------------------------------------------- | -------------- | | Complete a task before its due date | **3 points** | | Complete a task on time or after its due date | **1 point** | | Complete a subtask | **0.2 points** | Points are only awarded to **assignees**. Unassigned tasks do not generate points when completed. If a task has multiple assignees, each one receives the full points. ## Early completion bonus If a task has a due date set, completing it more than one hour before the deadline earns a **3-point bonus** instead of the standard 1 point. This rewards working ahead of schedule and encourages realistic planning. ## Where to see points **Your own points** appear on your profile. Click any workspace member's avatar or name to open their profile and see their total points. **Team leaderboard**: the **Insights** page (accessible from the sidebar) shows a **Top Performers** chart ranking all workspace members by their total points. Use this during planning sessions or retrospectives to recognize high contributors. Points accumulate over the lifetime of the workspace. Encourage your team to assign tasks before marking them complete so everyone's contribution is captured. # Preferences Source: https://docs.getarca.app/account/preferences Customize how Arca looks and behaves for you: theme, task defaults, sidebar, and privacy. Preferences are saved per device and apply only to you. Changes take effect immediately, no save button needed. To open your preferences, go to **Settings > Preferences** in the sidebar. ## Appearance ### Theme Choose how Arca looks on your device. Options: **System** (follows your OS setting), **Light**, or **Dark**. ### First day of week Set which day your calendar week starts on. Options: **Sunday**, **Monday**, or **Saturday**. ### Sidebar customization Click **Customize** to choose which sections and items appear in your sidebar. See [Sidebar customization](/general-features/sidebar-customization) for details. You can also access sidebar customization by right-clicking any whitespace in the sidebar and choosing **Customize sidebar** from the context menu. ### Show task counts in lists When enabled, each list in the sidebar shows the number of open tasks next to its name. *** ## Tasks ### Default view Choose how tasks are displayed when you open a list. Options: **List** or **Board**. ### Group tasks by Group tasks in list view by a common field. Options: **No grouping**, **By assignee**, **By status**, or **By priority**. ### Sort tasks by Control the default order of tasks in list view. Options: **Name**, **Create date**, **Due date**, or **Priority**. ### Show completed tasks When enabled, completed tasks are shown inline alongside active ones. Disable this to hide completed tasks and keep the list focused. *** ## Privacy ### Usage analytics When enabled, Arca sends anonymous usage data to help improve the app. No personal data or task content is ever shared. # Profile Source: https://docs.getarca.app/account/profile Update your display name and avatar in Arca. Your profile shows your name and avatar throughout the app: in task assignments, comments, and the sidebar. ## Update your profile 1. At the bottom of the sidebar, click your name or avatar. 2. A modal will open where you can update your **display name** and **profile picture**. 3. Save your changes. ## Why your profile matters * Your name appears in task assignments and comments. * Your avatar is shown in the sidebar and activity streams. * Keeping your profile up to date helps teammates recognize you quickly. # Arca Apps Source: https://docs.getarca.app/administration/arca-apps Enable and manage optional workspace features through the Arca Apps catalog. Arca Apps is a catalog of optional features that can be turned on or off per workspace. Each app adds a specific capability to your workspace; enabling one makes it immediately available to all members. Disabling it removes it from the interface without deleting any data. ## Open Arca Apps Go to **Settings > Arca Apps**. The catalog is organized by category so you can quickly find what you are looking for. ## Permissions Only workspace **Owners** and **Admins** can enable or disable apps. Members and other roles can see the catalog but cannot make changes. ## Enable or disable an app Each app card has a toggle. Click it to enable or disable the app for your workspace. Some apps are always on and cannot be disabled. These are core features that all workspaces rely on. Their toggle is locked with an "Always on" label. When you enable an app, it becomes active immediately. Any sidebar entries or interface elements for that app appear for all workspace members right away. ## App details Click the image or name on any app card to open a detail view with a full description of what the app does. This is useful before enabling something unfamiliar. ## Paid apps Some apps in the catalog have a price. When you enable a paid app, you are prompted to complete a purchase through Stripe. After payment, the app is activated for your workspace. Paid apps show their pricing and billing interval on the card. ## Plan limits Some apps are free to enable but have usage limits that vary by plan. Your current plan's limits are shown inside the app when you reach them; you can upgrade from **Settings > Billing** to increase them. # Automations Source: https://docs.getarca.app/administration/automations Create rules that automatically act on tasks when specific events occur, so your team spends less time on repetitive updates. Automations let you define when Arca should take action automatically. Each automation watches for a specific trigger event, optionally filters it by conditions, then runs one or more actions. Automations run instantly in the background the moment the trigger fires. ## Getting started Go to **Settings > Automations** to see all automations in your workspace. From here you can create, enable or disable, edit, and delete automations. Only workspace **Owners** and **Admins** can create, edit, or delete automations. Members and Viewrs can view the automations list but cannot make changes. ## Creating an automation Go to **Settings > Automations** and click **New automation**. Give your automation a descriptive name so it's easy to identify in the list later, for example *Close resolved bugs* or *Assign new tasks to team lead*. Select the event that should start the automation. Each trigger can have optional filters to narrow down exactly when it fires. For example, you can trigger only when a status changes to a specific value, or only when a task is moved to a specific list. Conditions let you restrict which tasks the automation applies to. All conditions must be satisfied for the automation to continue. For example, you can limit the automation to tasks in a specific folder, or only tasks with a certain priority. Add one or more actions for Arca to perform when the trigger fires and all conditions are met. Actions are executed in order. Click **Save**. The automation is enabled immediately and will start running the next time its trigger fires. ## Triggers A trigger is the event that starts the automation. ### Task triggers | Trigger | Description | Optional filters | | -------------------- | ------------------------------------------------- | ---------------------------------------------------------------------------- | | **Task created** | Fires when a new task is created in the workspace | — | | **Status changed** | Fires when a task's status changes | Filter by the status it changed *from* and/or the status it changed *to* | | **Priority changed** | Fires when a task's priority changes | Filter by the priority it changed *from* and/or the priority it changed *to* | | **Assignee added** | Fires when a user is assigned to a task | Filter to a specific assignee | | **Label added** | Fires when a label is added to a task | Filter to a specific label | | **Due date set** | Fires when a due date is added to a task | — | | **Moved to list** | Fires when a task is moved to a different list | Filter to a specific destination list | ### GitHub triggers | Trigger | Description | Optional filters | | ----------------------- | ----------------------------------------------------------------- | ---------------- | | **GitHub issue opened** | Fires when a new issue is opened in a connected GitHub repository | — | | **GitHub issue closed** | Fires when an issue is closed in a connected GitHub repository | — | ### GitLab triggers | Trigger | Description | Optional filters | | ----------------------- | -------------------------------------------------------------- | ---------------- | | **GitLab issue opened** | Fires when a new issue is opened in a connected GitLab project | — | | **GitLab issue closed** | Fires when an issue is closed in a connected GitLab project | — | ## Conditions Conditions narrow down which tasks the automation applies to. You can add any combination of the following: * **Folder**: the task must be in one of the selected folders * **List**: the task must be in one of the selected lists * **Assignee**: the task must be assigned to one of the selected members * **Priority**: the task must have the selected priority * **Status**: the task must have one of the selected statuses * **Status category**: the task's status must belong to one of the selected categories (*Pending*, *In Progress*, *Completed*, or *Cancelled*) * **Label**: the task must have one of the selected labels * **Custom field**: the task must match the selected custom field value Conditions use **AND between categories** and **OR within a category**: * If you select multiple values in the same category (e.g. two statuses), the task matches if it has **any one** of them. * If you add conditions from different categories (e.g. a status and a priority), the task must satisfy **all of them**. For example: Status is *In Progress* or *Done* **AND** Priority is *High* the task must be high priority and have either of those statuses. ## Actions Actions are the changes Arca makes to a task when the automation runs. You can add multiple actions to a single automation (subject to your plan's action limit). ### Task actions | Action | Description | | ------------------- | ------------------------------------------------------------------------------------------------- | | **Set status** | Changes the task's status to the selected value | | **Set priority** | Changes the task's priority to the selected value | | **Add assignee** | Assigns a specific workspace member to the task | | **Remove assignee** | Removes a specific workspace member from the task, or choose **All assignees** to remove everyone | | **Add label** | Adds the selected label to the task | | **Remove label** | Removes the selected label from the task | | **Move to list** | Moves the task to the selected list | ### GitHub actions | Action | Description | | ----------------------- | ------------------------------------------ | | **Post GitHub comment** | Posts a comment on the linked GitHub issue | | **Close GitHub issue** | Closes the linked GitHub issue | | **Reopen GitHub issue** | Reopens the linked GitHub issue | ### GitLab actions | Action | Description | | ----------------------- | ------------------------------------------ | | **Post GitLab comment** | Posts a comment on the linked GitLab issue | | **Close GitLab issue** | Closes the linked GitLab issue | | **Reopen GitLab issue** | Reopens the linked GitLab issue | ### Notification actions | Action | Description | | -------------------------- | ------------------------------------------------------------------- | | **Send Slack message** | Posts a message to a connected Slack channel | | **Send Discord message** | Posts a message to a connected Discord channel | | **Send Arca notification** | Sends an in-app Arca notification to the specified workspace member | ## Managing automations Each automation card on the **Settings > Automations** page shows the automation name, its trigger, and how many times it has run. * **Enable or disable**: Use the toggle on any automation card to turn it on or off without deleting it. A disabled automation will not run until re-enabled. * **Edit**: Click the edit icon on any automation card to open it and make changes. * **Delete**: Click the delete icon to permanently remove an automation. This cannot be undone. ## Automation history The run count on each automation card shows how many times the automation has executed successfully. When an automation runs, the action is also recorded as an activity entry in the affected task's activity feed, so you can trace exactly what changed and when. # Billing Source: https://docs.getarca.app/administration/billing Manage your workspace subscription, view invoices, and upgrade your plan. Billing is managed per workspace. Only the workspace **owner** can access the Billing page. Admins and other roles see an "Access Restricted" message. ## View your current plan Go to **Settings > Billing** to see your current plan card, which shows: * Your plan name (Free, Starter, or Business) * Number of seats in your workspace * Total cost based on seat count and billing interval (monthly or yearly) ## Upgrade or change plans Click **See other plans** (Free plan) or **Compare all plans** (paid plan) to open the plan comparison. When you choose a new plan, a secure Stripe checkout opens in your browser to complete the purchase. ## Manage an active subscription If you are on a paid plan, a **Manage subscription** button appears on the plan card. Clicking it opens the Stripe billing portal in your browser, where you can change your plan, update payment details, or cancel your subscription. If a cancellation is already scheduled, the button changes to **Resume subscription** so you can reverse it before the period ends. ## Invoices Your recent invoices appear at the bottom of the Billing page, showing the invoice number, date, amount, and payment status. Click **Download PDF** on any invoice to save it for accounting or expense reports. For questions about billing, contact the Arca team at [info@getarca.app](mailto:info@getarca.app). # Custom fields Source: https://docs.getarca.app/administration/custom-fields Add your own fields to tasks to track any data your workflow needs. Custom fields let you attach structured data to every task in a workspace beyond the built-in properties. Use them to track anything your workflow requires, effort scores, budget figures, customer tiers, review stages, or any other property your team cares about. ## Create a custom field Go to **Settings > Custom fields**. Click **Add field**. Give the field a clear name and select the field type that matches the data you want to capture. Depending on the type, set additional options such as icon, color, currency, decimal places, or dropdown options. Click **Create** to add the field to every task in the workspace. ## Field types | Type | What it stores | Example use | | ------------ | ---------------------------------- | -------------------------------------------- | | **Text** | A short free-text string | Customer name, branch name, ticket reference | | **Number** | A numeric value | Story points, word count, page count | | **Rating** | A 1–5 star (or custom icon) rating | Effort estimate, customer satisfaction score | | **Checkbox** | A true/false toggle | Approved, reviewed, needs follow-up | | **Date** | A calendar date | Review date, publish date | | **Dropdown** | One choice from a fixed list | Tier (Free / Starter / Pro), Region | | **Money** | A monetary value with currency | Budget, cost, revenue impact | | **People** | One or more workspace members | Reviewer, stakeholder, account owner | ### Rating field options When you choose **Rating**, you can pick the icon shape (star, heart, flag, and others) and the color used to render filled icons. The field stores a value from 1 to 5. ### Dropdown field options When you choose **Dropdown**, define the list of options in the field settings. Options can be reordered and each choice is stored as a plain text label. ### Money field options When you choose **Money**, select the ISO 4217 currency code (for example `USD`, `EUR`, `GBP`) and the number of decimal places (0 or 2). ## Set a field value on a task Open any task and scroll to the **Custom Fields** section in the right-hand sidebar. Click the field to enter or change its value. Changes save immediately. ## Restrict field access By default, a custom field is visible to all workspace members. You can restrict a field to specific members by setting an **Allowed users** list in the field settings. Members not on the list cannot see the field on tasks — it is completely hidden from their task sidebar and cards. Only members explicitly included in the list can see and edit the field on tasks, including workspace owners unless they are listed. Workspace owners and admins always see every field in **Settings → Custom Fields** so they can manage the workspace configuration. ## Reorder fields Drag the handle next to a field name in **Settings > Custom fields** to change the order in which fields appear on task cards and in the sidebar. ## Edit or delete a field Click the pencil icon next to a field to edit its name, configuration, or access settings. Click the trash icon to delete it. Deleting a custom field permanently removes the field and all values stored against it across every task in the workspace. This cannot be undone. ## Show or hide custom fields on task cards Custom fields appear as property badges on task cards in list and board view. You can control which fields are visible using the **Properties** panel in the list settings menu. See [List settings](/lists/list-settings) for details. # Export Source: https://docs.getarca.app/administration/export Export your tasks to a CSV file for backups, reporting, or migration. Exporting generates a CSV file containing all tasks from the workspaces you select. You can open it in a spreadsheet, share it with stakeholders, or import it into another tool. ## Export your workspace Go to **Settings > Import / export** in the sidebar and scroll to the Export section. Check the workspaces you want to include in the export. Only workspaces where you are the owner or admin appear in this list. Click **Export** to generate and download the CSV file to your computer. ## What the export includes The CSV contains all tasks from the selected workspaces, with these columns: task ID, title, description, workspace, folder, list, status, priority, assignees, labels, due date, start date, created date, updated date, and task dependency relationships (related to, blocking, blocked by, and subtask of). ## When to export * **Regular backups:** keep a periodic snapshot of your tasks * **Reporting:** pull task data into a spreadsheet for custom analysis or stakeholder reports * **Migration:** move your tasks to another tool or archive a completed project * **Before deleting:** always export before deleting a workspace You can only export once every 7 days. Plan ahead if you need a fresh export before making large changes. Export before making large structural changes to your workspace, so you have a fallback if anything goes wrong. # Folders & Lists Source: https://docs.getarca.app/administration/folders Organize your workspace with folders and standalone lists. Folders help you group related lists together, for example by project, team, or phase. Lists can also exist on their own, without a folder, for lightweight organization. ## Create a folder Click the **+** button next to **Folders & Lists** in the sidebar, then choose **Add Folder**. Enter a name, pick an icon and color, then save. ## Create a standalone list Click the **+** button next to **Folders & Lists** in the sidebar, then choose **Add List**. Give the list a name and optionally assign it to a folder. Leave the folder field empty to create a standalone list that appears directly in the sidebar. ## Add lists inside a folder When creating or editing a list, choose a folder to place it in. You can also right-click (or long-press on mobile) on a folder and select **Add List** to create a new list directly inside that folder. Additionally, a **+** icon appears when hovering over any folder row in the sidebar. ## Reorder folders 1. Go to **Settings > Folders**. 2. Drag folders up or down to change the order they appear in the sidebar. Use folders to separate major initiatives, and standalone lists for quick or cross-cutting collections of tasks. # Import Source: https://docs.getarca.app/administration/import Bring tasks into Arca from CSV files to quickly get started. If your tasks live in a spreadsheet or another tool, you can import them into Arca using a CSV file. This is the fastest way to migrate existing work without re-entering everything manually. ## Import steps Go to **Settings > Import / export** in the sidebar. Click the import option and select your CSV file. It must have a header row. Match your CSV columns to Arca fields: title, list, folder, description, status, priority, due date, start date, assignees, and labels. Arca auto-detects common column names from other tools. Review a preview of how the data will look, then confirm to start the import. ## CSV tips * **Title** is the only required column, all other fields are optional. * Use `YYYY-MM-DD` or `MM/DD/YYYY` format for dates (applies to both due date and start date). * Separate multiple assignees or labels with commas. * If a list, folder, status, or label in the CSV doesn't exist yet, Arca creates it automatically during import. * Priority accepts text values: `urgent`, `high`, `medium`, `low`. * Arca automatically recognizes common column names from tools like Notion, Linear, ClickUp, Trello, and others. Clean your CSV before importing: remove duplicates, fix date formats, and make sure every row has a title. This prevents errors mid-import. Completed tasks are not imported. If you want to keep completed tasks, change their status to an active one before exporting your CSV. # Invite members Source: https://docs.getarca.app/administration/invite-members Invite teammates to your workspace so you can collaborate on tasks together. Collaboration starts with your team being in the same workspace. Inviting someone gives them access to your lists and tasks, scoped by the role you assign them. Owners and admins can further limit what each member sees by granting access to specific folders and lists only. ## How to invite someone Go to **Settings > Members** in the sidebar. Click the **Invite member** button. Type the person's email address and select an appropriate role. Click **Send**. The person will receive an email with a link to join the workspace. Once they accept the invitation, they appear in the member list and can be assigned to tasks, mentioned in comments, and collaborate with the rest of the team. ## Invite links (alternative) You can also let people join via a shared invite link instead of individual email invitations. Enable invite links under **Settings > Workspace security**, then share the generated link. See [Workspace security](/administration/workspace-security) for domain whitelisting, join requests, and link reset. ## Choosing a role | Role | What they can do | | ---------- | --------------------------------------------------------- | | **Owner** | Full access, including billing and deleting the workspace | | **Admin** | Manage settings, members, and all workspace content | | **Member** | Create and edit tasks and content | | **Viewer** | View tasks and boards only (cannot make changes) | Use the Viewer role for clients or stakeholders who need visibility but shouldn't make changes to tasks. [Read more about roles](/administration/members-and-roles) # Labels Source: https://docs.getarca.app/administration/labels Create and manage labels to categorize tasks across lists and projects. Labels let you tag tasks with categories that cut across your list and folder structure. Unlike status (which tracks workflow progress), labels describe what kind of work a task is or what it relates to, and you can filter views by them. ## Create a label Go to **Settings > Labels**. Click **Add label**. Choose a descriptive name and a color that makes it easy to spot in task lists. ## Add labels to tasks Open a task and use the **Labels** field in the right-hand sidebar to add one or more labels. ## Filter views by label In any view, use the filter menu to show only tasks with a specific label. This lets you see all related work across all lists at once, regardless of which folder or list each task lives in. ## Label ideas that work well * **Type of work**: `bug`, `feature`, `research`, `documentation`, `design` * **Category or scope**: `Q2`, `v1.0`, `customer-request`, `technical-debt` * **Urgency or effort**: `quick-win`, `stretch-goal`, `urgent` Keep your label set small and consistent. A handful of labels used regularly is far more powerful than dozens that are applied inconsistently. # Members and roles Source: https://docs.getarca.app/administration/members-and-roles Invite teammates, manage their access, and assign roles in a workspace. Workspaces have members with different roles that control access and permissions. ## Roles | Role | What they can do | | ---------- | ----------------------------------------------------------------------------- | | **Owner** | Full access, including billing, member management, and deleting the workspace | | **Admin** | Invite members, manage settings, labels, statuses, and all workspace content | | **Member** | Create and edit tasks and other workspace content | | **Viewer** | View tasks only, cannot create or edit anything | ## Add members 1. Open **Settings > Members**. 2. Click **Invite Member**. 3. Enter their email and choose a role. 4. The invitee receives an email with a link to join the workspace. ## Approve join requests When invite links are enabled and someone outside your allowed email domains requests access, their request appears at the top of **Settings > Members** for owners and admins. Approve to add them as a member, or decline to reject the request. Both outcomes notify the requester by email. [Learn more about invite links and security settings](/administration/workspace-security) ## Remove members Only workspace owners can remove members. Open **Settings > Members** and click the remove icon next to the member you want to remove. The owner cannot be removed. ## Access-restricted members Workspace owners and admins can restrict a member to a specific subset of folders and lists, regardless of their workspace role. When access restriction is enabled for a member: * They can only see folders and lists explicitly granted to them. * Tasks in non-granted lists are hidden from their view. * Attempting to access a task, create a task in, or comment on a task inside an inaccessible list returns a `403` error via the API. Access restrictions apply on top of the member's role, a restricted **Member** can still create and edit tasks, but only within the lists they can access. Use the Viewer role for clients or stakeholders who need visibility but shouldn't make changes to tasks. # Statuses Source: https://docs.getarca.app/administration/statuses Define the workflow stages tasks move through in your workspace. Statuses represent the stages of your team's workflow. When tasks move through statuses, everyone can see the state of work at a glance, without needing to ask "is this done yet?" ## Manage statuses Go to **Settings > Statuses**. Click **Add status**. Choose a name, icon, and color. Colors make statuses scannable at a glance; for example, green for completed, red for blocked. Drag statuses up or down to set the order they appear in status selectors. ## Status categories Every status belongs to a category that controls how Arca groups and displays tasks: | Category | Meaning | | --------------- | ------------------------ | | **Pending** | Work not started yet | | **In progress** | Work actively being done | | **Completed** | Work that is finished | | **Cancelled** | Work that was dropped | ## Design a workflow that fits your team Start simple. A common setup that works for most teams: * **To do** (Pending) * **In progress** (In progress) * **In review** (In progress) * **Done** (Completed) Add more statuses only if your team will actually use them. Too many workflow stages create friction instead of clarity. Use consistent colors so status is readable in lists and boards without having to read the label each time. # Task templates Source: https://docs.getarca.app/administration/task-templates Create reusable task description templates to speed up task creation and keep your team consistent. Task templates let you save a pre-written task description and reuse it whenever a new task is created. Instead of typing the same structure from scratch each time, you pick a template and the description is filled in for you automatically. You can also mark one template as the default so it pre-fills every new task without any extra steps. ## Create a template Only workspace **Owners** and **Admins** can create, edit, and delete templates. Go to **Settings > Task templates**. Click **Add Template**. Give the template a short, descriptive name so it is easy to identify in the list. Use the rich text editor to write the template content. You can use headings, bullet lists, checkboxes, code blocks, and any other formatting supported by the Arca editor. Click **Create** to save the template. It is now available when creating tasks. ## Use a template when creating a task When the **New task** dialog is open, click inside the description editor and type `/` to open the slash command menu. Select **Apply template** to see all available templates as a submenu; selecting one replaces the current description with that template's content. You can edit the description freely after applying it. You can also navigate the slash command menu with the keyboard: use the arrow keys to move between items, press **Enter** or **→** to open the **Apply template** submenu, select a template with **Enter**, and press **←** or **Escape** to go back to the main menu. ## Set a default template You can mark one template as the default. When a default is set, the description editor is pre-filled with that template's content every time the **New task** dialog opens, no manual selection needed. To set a default, click the checkmark icon next to a template in the list. A **Default** badge appears next to the template name to confirm it is active. To remove the default, click the `X` icon next to the template. ## Edit a template Click the pencil icon next to any template to open the editor. Change the name, content, or both, then save. Editing a template does not update descriptions of tasks that were already created with that template. It only changes the template for future use. ## Delete a template Click the trash icon next to a template and confirm the deletion. This cannot be undone. If the deleted template was set as the default, no default will be active until you set a new one. Deleting a template does not change descriptions of tasks that were already created with that template. It only removes the template for future use. # Webhooks Source: https://docs.getarca.app/administration/webhooks Receive real-time HTTPS notifications when events happen in your workspaces. Webhooks let you connect Arca to external systems by sending an HTTPS POST request to a URL you control whenever something changes, a task is created, a status changes, a list is updated, and more. ## Create a webhook 1. Go to **Settings → Webhooks**. 2. Click **Create your first webhook** or **Add new webhook**. 3. Fill in the form: * **Label**: a name to help you identify this webhook. * **Endpoint URL**: the URL Arca will POST to. Must use `https`. * **Events**: select one or more events to subscribe to (see [Events](#events) below). * **Workspaces**: if you own more than one workspace, choose which ones this webhook applies to. All your workspaces are selected by default. * **Auth token**: optionally generate a secret token so your server can verify requests come from Arca. 4. Click **Create webhook**. Before the webhook is saved, Arca sends a `POST` request to your endpoint with the header `X-Arca-Event: ping` and this JSON body: ```json theme={null} { "event": "ping", "timestamp": "2026-04-05T12:00:00.000Z", "workspaceId": null, "before": null, "after": null, "data": {} } ``` Your server must respond with a `2xx` status code within 10 seconds, otherwise the webhook is not created. Make sure your endpoint is publicly accessible and ready to accept POST requests before submitting. If you enabled the auth token option, the token is shown **once** immediately after creation. Copy it and store it securely, Arca never shows it again. If you lose it, delete the webhook and create a new one. ## Events Every webhook subscribes to one or more event types. Arca sends a delivery only when a subscribed event occurs in one of the webhook's selected workspaces. ### Task events | Event | Triggered when | | ------------------------- | ------------------------------ | | `task.created` | A new task is created | | `task.deleted` | A task is deleted | | `task.status.changed` | A task's status is changed | | `task.priority.changed` | A task's priority is changed | | `task.assignees.changed` | Assignees are added or removed | | `task.start_date.changed` | The start date is changed | | `task.due_date.changed` | The due date is changed | | `task.labels.changed` | Labels are added or removed | ### Folder events | Event | Triggered when | | ---------------- | ----------------------------- | | `folder.created` | A new folder is created | | `folder.updated` | A folder is renamed or edited | | `folder.deleted` | A folder is deleted | | `folder.moved` | A folder is reordered | ### List events | Event | Triggered when | | -------------- | --------------------------- | | `list.created` | A new list is created | | `list.updated` | A list is renamed or edited | | `list.deleted` | A list is deleted | ## Payload Arca sends a JSON payload as the POST body: ```json theme={null} { "event": "task.status.changed", "timestamp": "2026-04-05T12:34:56.789Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": "https://cdn.getarca.app/workspaces/42/avatar.png" }, "user": { "id": 7, "name": "Alice", "avatarUrl": null }, "before": { "id": 101, "title": "Fix login bug", "status": { "id": 1, "name": "Todo", "color": "gray", "category": "pending" }, "priority": "high", "assignees": [{ "id": 7, "name": "Alice", "avatarUrl": null }] }, "after": { "id": 101, "title": "Fix login bug", "status": { "id": 3, "name": "Done", "color": "green", "category": "completed" }, "priority": "high", "assignees": [{ "id": 7, "name": "Alice", "avatarUrl": null }] } } ``` | Field | Description | | --------------------- | --------------------------------------------------------------------------------- | | `event` | The event type string (e.g. `task.status.changed`) | | `timestamp` | UTC ISO-8601 timestamp of when the event was dispatched | | `workspace.id` | Numeric ID of the workspace where the event occurred | | `workspace.name` | Display name of the workspace | | `workspace.slug` | URL slug of the workspace | | `workspace.avatarUrl` | Workspace avatar URL, or `null` if none is set | | `user` | The user who triggered the event, or `null` when triggered by an automated system | | `user.id` | Numeric ID of the actor | | `user.name` | Display name of the actor | | `user.avatarUrl` | Actor avatar URL, or `null` if none is set | | `before` | State before the change. `null` for `*.created` events | | `after` | Current state of the entity. `null` for `*.deleted` events | | `after.assignees` | Array of `{ id, name, avatarUrl }` objects. Present on all `task.*` events | ## Request headers Arca includes the following headers with every delivery: | Header | Value | | --------------- | --------------------------------------------------------- | | `Content-Type` | `application/json` | | `User-Agent` | `Arca-Webhooks/1.0` | | `X-Arca-Event` | The event type (e.g. `task.created`) | | `Authorization` | `Bearer whs_…`, only present if you enabled an auth token | ## Webhook Payloads The tabs below show the complete JSON body delivered to your endpoint for each event type. ### Task events ```json theme={null} { "event": "task.created", "timestamp": "2026-04-05T12:00:00.000Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "user": { "id": 1, "name": "Alice", "avatarUrl": null }, "before": null, "after": { "id": 42, "identifier": 5, "title": "Fix the login bug", "priority": "high", "status": { "id": 3, "name": "In Progress", "color": "blue", "category": "started" }, "list": { "id": 7, "name": "Sprint 1", "icon": "rocket", "color": "green" }, "dueDate": "2026-04-10T00:00:00.000Z", "startDate": null, "assignees": [ { "id": 1, "name": "Alice", "avatarUrl": null } ], "labels": [ { "id": 2, "name": "Bug", "color": "red" } ], "createdAt": "2026-04-05T12:00:00.000Z" } } ``` ```json theme={null} { "event": "task.deleted", "timestamp": "2026-04-05T12:00:00.000Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "user": { "id": 1, "name": "Alice", "avatarUrl": null }, "before": { "id": 42, "identifier": 5, "title": "Fix the login bug", "priority": "high", "status": { "id": 3, "name": "In Progress", "icon": "clock", "color": "blue", "category": "started", "position": 2 }, "list": { "id": 7, "name": "Sprint 1", "icon": "rocket", "color": "green" }, "dueDate": "2026-04-10T00:00:00.000Z", "startDate": null, "assignees": [ { "id": 1, "name": "Alice", "avatarUrl": null } ], "labels": [ { "id": 2, "name": "Bug", "color": "red" } ], "createdAt": "2026-04-05T12:00:00.000Z" }, "after": null } ``` ```json theme={null} { "event": "task.status.changed", "timestamp": "2026-04-05T12:00:00.000Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "user": { "id": 1, "name": "Alice", "avatarUrl": null }, "before": { "id": 42, "identifier": 5, "title": "Fix the login bug", "status": { "id": 1, "name": "Todo", "icon": "circle", "color": "gray", "category": "pending", "position": 1 }, "priority": "high", "dueDate": "2026-04-10T00:00:00.000Z", "startDate": null, "assignees": [ { "id": 1, "name": "Alice", "avatarUrl": null } ], "labels": [ { "id": 2, "name": "Bug", "color": "red" } ] }, "after": { "id": 42, "identifier": 5, "title": "Fix the login bug", "status": { "id": 3, "name": "In Progress", "icon": "clock", "color": "blue", "category": "started", "position": 2 }, "priority": "high", "dueDate": "2026-04-10T00:00:00.000Z", "startDate": null, "assignees": [ { "id": 1, "name": "Alice", "avatarUrl": null } ], "labels": [ { "id": 2, "name": "Bug", "color": "red" } ] } } ``` ```json theme={null} { "event": "task.priority.changed", "timestamp": "2026-04-05T12:00:00.000Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "user": { "id": 1, "name": "Alice", "avatarUrl": null }, "before": { "id": 42, "identifier": 5, "title": "Fix the login bug", "status": { "id": 3, "name": "In Progress", "icon": "clock", "color": "blue", "category": "started", "position": 2 }, "priority": "low", "dueDate": "2026-04-10T00:00:00.000Z", "startDate": null, "assignees": [ { "id": 1, "name": "Alice", "avatarUrl": null } ], "labels": [] }, "after": { "id": 42, "identifier": 5, "title": "Fix the login bug", "status": { "id": 3, "name": "In Progress", "icon": "clock", "color": "blue", "category": "started", "position": 2 }, "priority": "high", "dueDate": "2026-04-10T00:00:00.000Z", "startDate": null, "assignees": [ { "id": 1, "name": "Alice", "avatarUrl": null } ], "labels": [] } } ``` ```json theme={null} { "event": "task.assignees.changed", "timestamp": "2026-04-05T12:00:00.000Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "user": { "id": 1, "name": "Alice", "avatarUrl": null }, "before": { "id": 42, "identifier": 5, "title": "Fix the login bug", "status": { "id": 3, "name": "In Progress", "icon": "clock", "color": "blue", "category": "started", "position": 2 }, "priority": "high", "dueDate": null, "startDate": null, "assignees": [], "labels": [] }, "after": { "id": 42, "identifier": 5, "title": "Fix the login bug", "status": { "id": 3, "name": "In Progress", "icon": "clock", "color": "blue", "category": "started", "position": 2 }, "priority": "high", "dueDate": null, "startDate": null, "assignees": [ { "id": 1, "name": "Alice", "avatarUrl": null } ], "labels": [] } } ``` ```json theme={null} { "event": "task.due_date.changed", "timestamp": "2026-04-05T12:00:00.000Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "user": { "id": 1, "name": "Alice", "avatarUrl": null }, "before": { "id": 42, "identifier": 5, "title": "Fix the login bug", "status": { "id": 3, "name": "In Progress", "icon": "clock", "color": "blue", "category": "started", "position": 2 }, "priority": "high", "dueDate": null, "startDate": null, "assignees": [ { "id": 1, "name": "Alice", "avatarUrl": null } ], "labels": [] }, "after": { "id": 42, "identifier": 5, "title": "Fix the login bug", "status": { "id": 3, "name": "In Progress", "icon": "clock", "color": "blue", "category": "started", "position": 2 }, "priority": "high", "dueDate": "2026-04-10T00:00:00.000Z", "startDate": null, "assignees": [ { "id": 1, "name": "Alice", "avatarUrl": null } ], "labels": [] } } ``` ```json theme={null} { "event": "task.start_date.changed", "timestamp": "2026-04-05T12:00:00.000Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "user": { "id": 1, "name": "Alice", "avatarUrl": null }, "before": { "id": 42, "identifier": 5, "title": "Fix the login bug", "status": { "id": 3, "name": "In Progress", "icon": "clock", "color": "blue", "category": "started", "position": 2 }, "priority": "high", "dueDate": "2026-04-10T00:00:00.000Z", "startDate": null, "assignees": [ { "id": 1, "name": "Alice", "avatarUrl": null } ], "labels": [] }, "after": { "id": 42, "identifier": 5, "title": "Fix the login bug", "status": { "id": 3, "name": "In Progress", "icon": "clock", "color": "blue", "category": "started", "position": 2 }, "priority": "high", "dueDate": "2026-04-10T00:00:00.000Z", "startDate": "2026-04-01T00:00:00.000Z", "assignees": [ { "id": 1, "name": "Alice", "avatarUrl": null } ], "labels": [] } } ``` ```json theme={null} { "event": "task.labels.changed", "timestamp": "2026-04-05T12:00:00.000Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "user": { "id": 1, "name": "Alice", "avatarUrl": null }, "before": { "id": 42, "identifier": 5, "title": "Fix the login bug", "status": { "id": 3, "name": "In Progress", "icon": "clock", "color": "blue", "category": "started", "position": 2 }, "priority": "high", "dueDate": null, "startDate": null, "assignees": [ { "id": 1, "name": "Alice", "avatarUrl": null } ], "labels": [] }, "after": { "id": 42, "identifier": 5, "title": "Fix the login bug", "status": { "id": 3, "name": "In Progress", "icon": "clock", "color": "blue", "category": "started", "position": 2 }, "priority": "high", "dueDate": null, "startDate": null, "assignees": [ { "id": 1, "name": "Alice", "avatarUrl": null } ], "labels": [ { "id": 2, "name": "Bug", "color": "red" } ] } } ``` ### Folder events ```json theme={null} { "event": "folder.created", "timestamp": "2026-04-05T12:00:00.000Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "user": { "id": 1, "name": "Alice", "avatarUrl": null }, "before": null, "after": { "id": 12, "name": "Design", "icon": "folder", "color": "blue", "position": 0, "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "createdAt": "2026-04-05T12:00:00.000Z" } } ``` ```json theme={null} { "event": "folder.updated", "timestamp": "2026-04-05T12:00:00.000Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "user": { "id": 1, "name": "Alice", "avatarUrl": null }, "before": { "id": 12, "name": "Design", "icon": "folder", "color": "blue", "position": 0, "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "createdAt": "2026-04-05T12:00:00.000Z" }, "after": { "id": 12, "name": "UX & Design", "icon": "folder", "color": "purple", "position": 0, "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "createdAt": "2026-04-05T12:00:00.000Z" } } ``` ```json theme={null} { "event": "folder.deleted", "timestamp": "2026-04-05T12:00:00.000Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "user": { "id": 1, "name": "Alice", "avatarUrl": null }, "before": { "id": 12, "name": "Design", "icon": "folder", "color": "blue", "position": 0, "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "createdAt": "2026-04-05T12:00:00.000Z" }, "after": null } ``` The top-level `workspace` and `before.workspace` reflect the **source** workspace. `after.workspace` reflects the **destination** workspace. ```json theme={null} { "event": "folder.moved", "timestamp": "2026-04-05T12:00:00.000Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "user": { "id": 1, "name": "Alice", "avatarUrl": null }, "before": { "id": 12, "name": "Design", "icon": "folder", "color": "blue", "position": 0, "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "createdAt": "2026-04-05T12:00:00.000Z" }, "after": { "id": 12, "name": "Design", "icon": "folder", "color": "blue", "position": 3, "workspace": { "id": 99, "name": "Side Project", "slug": "side-project", "avatarUrl": null }, "createdAt": "2026-04-05T12:00:00.000Z" } } ``` ### List events ```json theme={null} { "event": "list.created", "timestamp": "2026-04-05T12:00:00.000Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "user": { "id": 1, "name": "Alice", "avatarUrl": null }, "before": null, "after": { "id": 8, "name": "Backlog", "icon": "list", "color": "gray", "position": 0, "folder": { "id": 12, "name": "Design", "icon": "folder", "color": "blue" }, "createdAt": "2026-04-05T12:00:00.000Z" } } ``` ```json theme={null} { "event": "list.updated", "timestamp": "2026-04-05T12:00:00.000Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "user": { "id": 1, "name": "Alice", "avatarUrl": null }, "before": { "id": 8, "name": "Backlog", "icon": "list", "color": "gray", "position": 0, "folder": { "id": 12, "name": "Design", "icon": "folder", "color": "blue" }, "createdAt": "2026-04-05T12:00:00.000Z" }, "after": { "id": 8, "name": "Sprint 1", "icon": "rocket", "color": "green", "position": 0, "folder": { "id": 12, "name": "Design", "icon": "folder", "color": "blue" }, "createdAt": "2026-04-05T12:00:00.000Z" } } ``` ```json theme={null} { "event": "list.deleted", "timestamp": "2026-04-05T12:00:00.000Z", "workspace": { "id": 42, "name": "Acme Corp", "slug": "acme-corp", "avatarUrl": null }, "user": { "id": 1, "name": "Alice", "avatarUrl": null }, "before": { "id": 8, "name": "Backlog", "icon": "list", "color": "gray", "position": 0, "folder": null, "createdAt": "2026-04-05T12:00:00.000Z" }, "after": null } ``` ## Verifying deliveries If you configured an auth token, every request from Arca includes: ```http theme={null} Authorization: Bearer whs_4f3a1b9e... ``` Compare this value against the token you saved at creation time. Reject requests where it doesn't match. The auth token is shown only once, at the moment you create the webhook. Store it immediately in a secure location such as an environment variable or a secrets manager. ## Delivery behaviour * Arca expects your endpoint to respond with a `2xx` status code within **10 seconds**. * Deliveries are **fire-and-forget**, Arca does not retry failed deliveries. * Each failed delivery increments a failure counter. After **6 consecutive failures**, Arca automatically disables the webhook and sends you an email notification. ## Re-enabling a disabled webhook When a webhook is disabled (manually or automatically), a **Disabled** badge appears on its card in **Settings → Webhooks**. Toggle the switch to re-enable it. Re-enabling resets the failure counter to zero. ## Delete a webhook Click the delete button on a webhook card in **Settings → Webhooks** and confirm the prompt. Deletion is immediate and cannot be undone. Any in-flight delivery at the time of deletion will still be attempted. # Workspace security Source: https://docs.getarca.app/administration/workspace-security Control invite links, authentication, file uploads, and AI access for your workspace. Workspace security settings let the workspace **owner** control how people join, authenticate, upload files, and use AI. Open **Settings > Workspace security** in the sidebar to manage these options. Only the workspace owner can view or change workspace security settings. ## Invite links Share a workspace invite link so people can join after signing in, without sending individual email invitations. Turn on **Enable invite links** on the Workspace security page. Arca generates a unique link for your workspace. Copy the link and share it with teammates. Invite links point to the Arca web app (`web.getarca.app`). Use the reset button next to the link if it was shared too broadly. The old link stops working immediately. ### Allowed email domains When someone opens your invite link, Arca checks their signed-in email domain: * **Whitelisted domain:** they join the workspace immediately as a member. * **Other domains:** they submit a join request. Workspace owners and admins approve or decline requests from **Settings > Members**. The requester receives an email when their request is reviewed. Add domains (for example `yourcompany.com`) under **Allowed email domains**. Leave the list empty to require approval for everyone who uses the link. Email invitations from **Settings > Members** work independently of invite links. See [Invite members](/administration/invite-members) for that flow. ## Enforce 2FA Require every member (except the owner) to enable two-factor authentication before using the workspace. When **Enforce 2FA for all members** is on, members without 2FA see a prompt to set it up the next time they open the workspace. They cannot dismiss the prompt until 2FA is enabled. ## Restrict file uploads Limit which members can upload files in task descriptions, attachments, and comments. 1. Under **Restrict file uploads**, add members who are allowed to upload. 2. Leave the list empty to allow all members. This applies to file attachments, inline images in the task editor, and comment attachments. ## Restrict file extensions Allow only specific file types for task uploads (for example `pdf`, `png`, `docx`). 1. Under **Restrict file extensions**, add the extensions you want to allow. 2. Leave the list empty to allow all file types. Members who try to upload a blocked type see an error message. ## Restrict AI usage Control which members can use AI writing actions in task, document, and project editors. 1. Under **Restrict AI usage**, add members who may use AI. 2. Leave the list empty to allow all members (except viewers, who cannot use editors). Restricted members do not see the AI sparkles button in the editor toolbar. See [AI editor actions](/ai-features/editor-actions) for what AI features do when enabled. ## Join requests When invite-link join requests are pending, owners and admins see them at the top of the member list on **Settings > Members**. Each request shows the requester's name, email, and avatar. * **Approve:** adds the person as a workspace member and sends a confirmation email. * **Decline:** rejects the request and notifies the requester by email. Owners and admins also receive an email when someone submits a new join request. # Workspaces Source: https://docs.getarca.app/administration/workspaces Manage workspaces to organize teams, projects, and permissions. A workspace is the top-level container for all your work. Each workspace has its own tasks, lists, members, and settings, completely separate from other workspaces. ## Create a workspace Go to **Settings > Workspaces** in the sidebar. Click **Add workspace**. Give it a name, choose an icon, and set a color to distinguish it in the workspace switcher. ## Switch between workspaces Use the workspace switcher at the top of the sidebar to change which workspace you're working in. ## When to use multiple workspaces Most teams start with one workspace and never need more. Create a second workspace when you need a clean, separate environment, such as for a different client, a separate business unit, or a personal workspace alongside your team's. ## Delete a workspace Only workspace owners can delete a workspace. Deleting removes all folders, lists, tasks, and data inside it permanently. Deletion is permanent. Export your workspace data from **Settings > Import / export** before deleting if you need a record of the work. # AI editor actions Source: https://docs.getarca.app/ai-features/editor-actions Use AI to rewrite, refine, and summarize text directly inside the task editor. Arca includes AI-powered writing actions that appear right inside the task editor. Select any text and instantly rewrite it in a different tone, make it more concise, or generate a quick summary without leaving the task. ## How to use AI actions Open any task that has a description. You can do this by clicking on a task from a list or board view. Highlight a sentence, or a full paragraph in the task description. A floating toolbar will appear above your selection. In the floating toolbar, click the **✦ sparkles** button on the right side. This opens the AI actions menu. Pick one of the available AI actions. Arca will replace the selected text with the AI-generated result. AI actions are only available when text is selected in an editable editor. They do not apply to code blocks or images. *** ## Available AI actions | Action | What it does | | ---------------- | ------------------------------------------------------------------------------------------------- | | **Rewrite** | Rewrites the selected text while preserving its original meaning, fixing grammar and style issues | | **Friendly** | Adjusts the tone to be warmer and more conversational | | **Professional** | Sharpens the tone for formal, business-ready communication | | **Concise** | Trims the text down to its essential points | | **Summary** | Condenses the selected text into a brief summary as a single or multiple paragraphs | *** ## Workspace AI restrictions Workspace owners can limit which members may use AI from **Settings > Workspace security**. When restrictions are enabled, only listed members see the sparkles button in editors. Everyone else can still edit tasks normally without AI actions. [Read more about workspace security settings](/administration/workspace-security) ## Monthly request limits Each workspace member has a monthly quota of AI requests. The quota resets at the start of each billing period. You can check your remaining requests in the usage section of Arca sidebar. When you reach your monthly limit, AI actions will be disabled until your quota resets. You will see a message prompting you to upgrade your plan if you need more requests. *** ## Tips For best results, select a complete sentence or paragraph before applying an AI action. Very short selections may produce less accurate rewrites. * You can undo an AI action immediately with **Cmd+Z** (Mac) or **Ctrl+Z** (Windows/Linux) if you prefer the original text. * AI actions are available in the task description editor, both when creating a new task and when editing an existing one. * The **Summary** action is especially useful for condensing long requirement descriptions before sharing a task with someone new. Make sure you use it for paragraphs only, as it may not work well on lists or other non-paragraph content. # MCP Server for AI Assistants Source: https://docs.getarca.app/ai-features/mcp-server Connect your AI assistant to Arca using the Model Context Protocol (MCP) server The Arca MCP server enables AI assistants like Claude Desktop, Cline, and other MCP-compatible tools to access your Arca workspaces, tasks, lists, and folders directly. This allows you to manage your projects using natural language commands through your preferred AI assistant. ## What is MCP? [Model Context Protocol (MCP)](https://modelcontextprotocol.io) is an open standard developed by Anthropic that allows AI assistants to securely connect to external data sources and tools. The Arca MCP server implements this protocol to bridge your AI assistant with your Arca account. ## What can you do with the MCP server? Once connected, your AI assistant can: * **List and search** workspaces, tasks, lists, and folders * **Create new tasks** with titles, descriptions, due dates, and priorities * **Update existing tasks** - change status, priority, assignees, dates * **Organize work** - create and manage lists and folders * **Add context** - post comments on tasks * **Delete items** - remove tasks, lists, or folders when needed All actions are performed using your Arca API key, ensuring everything is tracked and attributed to your account. *** ## Installation The MCP server is distributed via npm and can be installed instantly using `npx`: ```bash theme={null} npx arca-mcp ``` No manual installation is needed! The `npx` command automatically downloads and runs the latest version. Or, you can use the HTTP server version if your AI assistant requires a URL endpoint: ``` https://mcp.getarca.app/mcp ``` *** ## Get your API key Before configuring the MCP server, you need an Arca API key. Click your avatar in the bottom-left sidebar, then select **Settings**. In the settings sidebar, click **API Keys** under the Developer section. Click **Create API Key**, give it a descriptive name (e.g., "Claude Desktop"), choose all permissions needed, and click **Create**. Copy the generated API key. It starts with `arca_` and you won't be able to see it again once you close the dialog. Keep your API key secure! Anyone with this key can access your Arca workspaces. Never share it publicly or commit it to version control. *** ## Configuration ### Claude Desktop Claude Desktop has native MCP support. To connect it to Arca: Open your Claude Desktop configuration file: **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` **Linux**: `~/.config/Claude/claude_desktop_config.json` Add the following configuration to the `mcpServers` section: ```json Stdio theme={null} { "mcpServers": { "arca": { "command": "npx", "args": ["-y", "arca-mcp"], "env": { "ARCA_API_KEY": "arca_your_api_key_here" } } } } ``` ```json HTTP theme={null} { "mcpServers": { "arca": { "url": "https://mcp.getarca.app/mcp", "headers": { "X-Arca-Api-Key": "arca_your_api_key_here" } } } } ``` Replace `arca_your_api_key_here` with your actual API key from the previous step. Quit Claude Desktop completely and reopen it. The MCP server will be loaded automatically. In Claude Desktop, click the 🔌 plug icon in the bottom-right corner. You should see "arca" listed with a green indicator showing it's connected. ### Cline (VS Code Extension) [Cline](https://github.com/cline/cline) is an AI coding assistant that runs in VS Code and supports MCP. In VS Code, open the Cline extension settings (usually via the gear icon in the Cline panel). Navigate to the MCP Servers section and add a new server with: - **Name**: `arca` - **Command**: `npx` - **Args**: `["-y", "arca-mcp"]` - **Environment Variables**: `ARCA_API_KEY=arca_your_api_key_here` Restart the Cline extension or reload VS Code. The Arca MCP server will be available in your next chat. ### Builder.io Fusion [Builder.io Fusion](https://builder.io/fusion) spawns local MCP servers as child processes by reading an `mcp.json` file from your project root. Follow the [Get your API key](#get-your-api-key) steps above to create a key in Arca Settings → API Keys. Add the following file to the root of your repository: ```json Stdio theme={null} { "mcpServers": { "arca": { "type": "stdio", "command": "npx", "args": ["-y", "arca-mcp@latest"], "env": { "ARCA_API_KEY": "arca_your_api_key_here" } } } } ``` ```json HTTP theme={null} { "mcpServers": { "arca": { "type": "http", "url": "https://mcp.getarca.app/mcp", "headers": { "X-Arca-Api-Key": "arca_your_api_key_here" } } } } ``` Replace `arca_your_api_key_here` with your actual API key. Fusion detects `mcp.json` automatically when a project session starts. Tools are registered as `mcp__arca__tool_name` and used by the AI agent when relevant. Do not commit `mcp.json` with your real API key to version control. Add it to `.gitignore`, or use the approach below to keep the key out of the file: ```json Stdio theme={null} { "mcpServers": { "arca": { "type": "stdio", "command": "npx", "args": ["-y", "arca-mcp@latest"], "envFile": ".env" } } } ``` ```json HTTP theme={null} { "mcpServers": { "arca": { "type": "http", "url": "https://mcp.getarca.app/mcp", "headers": { "X-Arca-Api-Key": "arca_your_api_key_here" } } } } ``` For **Stdio**, add `ARCA_API_KEY=arca_your_api_key_here` to your `.env` file and add `.env` to `.gitignore`. For **HTTP**, add `mcp.json` to `.gitignore` to keep the key out of version control. ### Other MCP-compatible clients Any tool that supports the Model Context Protocol can connect to Arca. Use whichever transport your client supports: **1. Stdio:** spawn a local process: 1. **Command**: `npx` 2. **Arguments**: `["-y", "arca-mcp"]` 3. **Environment variable**: `ARCA_API_KEY` with your API key **2. HTTP:** point directly to the hosted endpoint: 1. **URL**: `https://mcp.getarca.app/mcp` 2. **Header**: `X-Arca-Api-Key: arca_your_api_key_here` Refer to your AI assistant's documentation for specific MCP configuration instructions. *** ## Example commands Once connected, you can use natural language to interact with Arca: **You**: "Show me all my Arca workspaces" **Assistant**: Lists all workspaces with their IDs, names, slugs, and member counts **You**: "Create a task in my workspace called 'Fix login bug' with high priority and due date next Friday" **Assistant**: Creates the task with the specified details and returns the task ID **You**: "Mark task #125 as completed" **Assistant**: Updates the task status and confirms the change **You**: "Show me all high-priority tasks in workspace 1 that are assigned to me" **Assistant**: Filters and displays matching tasks **You**: "Add a comment to task #89 saying 'Reviewed and approved'" **Assistant**: Posts the comment and confirms **You**: "Create a new list called 'Q2 Goals' in my Marketing workspace" **Assistant**: Creates the list and returns its ID *** ## Available tools The MCP server provides 20 tools for interacting with Arca: | Tool | Description | | ----------------- | ------------------------------------------------- | | `list_workspaces` | List all workspaces you have access to | | `get_workspace` | Get details of a specific workspace | | `list_tasks` | List tasks in a workspace (with optional filters) | | `get_task` | Get full details of a specific task | | `create_task` | Create a new task | | `update_task` | Update an existing task | | `delete_task` | Delete a task | | `list_lists` | List all lists in a workspace | | `create_list` | Create a new list | | `update_list` | Update an existing list | | `delete_list` | Delete a list | | `list_folders` | List all folders in a workspace | | `create_folder` | Create a new folder | | `update_folder` | Update an existing folder | | `delete_folder` | Delete a folder | | `list_comments` | List all comments on a task | | `create_comment` | Add a comment to a task | *** ## Troubleshooting **Possible causes:** - Invalid API key - verify it starts with `arca_` and is copied correctly - Network connectivity issues - check your internet connection - Outdated npm cache - run `npx clear-npx-cache` and try again **Solution**: Double-check your API key in the config file and restart your AI assistant. **Possible causes:** - API key belongs to a user without workspace access - API key was revoked or expired **Solution**: Verify your API key is still valid in Arca Settings → API Keys. Generate a new key if needed. **Possible causes:** - Trying to modify a workspace where you don't have edit permissions - Attempting to delete items without proper role **Solution**: Check your workspace role. Viewers can only read data, while Members and Admins can create and modify tasks. **Claude Desktop:** - Make sure you're editing the correct config file path for your OS - Create the file if it doesn't exist - Ensure it's valid JSON (use a JSON validator) **Solution**: Create the directory if missing: ```bash theme={null} # macOS/Linux mkdir -p ~/Library/Application\ Support/Claude # Windows PowerShell New-Item -ItemType Directory -Force -Path "$env:APPDATA\Claude" ``` **Cause:** Node.js is not installed or not in your PATH. **Solution:** Install Node.js from [nodejs.org](https://nodejs.org). Version 16 or higher is required. *** ## Security & privacy * All API requests are made directly from your machine to Arca's servers * Your API key is stored locally in your AI assistant's config file * The MCP server never stores or transmits your data to third parties * API keys can be revoked anytime from Arca Settings → API Keys *** ## Updates The MCP server is automatically updated when you use `npx arca-mcp`. To ensure you have the latest features and bug fixes, restart your AI assistant periodically. You can check the current version: ```bash theme={null} npm view arca-mcp version ``` *** ## Need help? * **GitHub Issues**: [github.com/gredevelopment/arca-mcp](https://github.com/gredevelopment/arca-mcp) * **API Documentation**: [docs.getarca.app/api-reference](/api-reference) * **MCP Specification**: [modelcontextprotocol.io](https://modelcontextprotocol.io) # Dashboards Source: https://docs.getarca.app/analytics/dashboards Create dashboards to track key metrics and understand your team's progress at a glance. Dashboards give you a bird's-eye view of your workspace. Instead of digging through individual lists to understand how work is going, a dashboard surfaces the answers immediately, as charts you can read in seconds. ## Create a dashboard Click **Dashboards** in the sidebar. Click **New dashboard** and give it a name. Click **Add chart** and choose what you want to track. ## What charts can show * Tasks completed vs. remaining * Tasks grouped by status or priority * Workload by assignee (who has the most tasks open?) * Tasks created over time (is work growing faster than it's being completed?) ## Useful dashboard setups * **Sprint health:** completed vs. remaining tasks for the current sprint * **Team workload:** task counts by assignee to spot imbalances before they cause problems * **Project status:** tasks by status for a specific list, updated in real time Dashboards are workspace-specific. Share the same dashboard with your whole team so everyone has the same view of progress when planning or reviewing. # Insights Source: https://docs.getarca.app/analytics/insights Workspace-level analytics showing velocity, workload, performance, and label distribution. Insights is a dedicated page of workspace analytics. Click **Insights** in the sidebar to open it. All charts are built automatically from your workspace tasks, no configuration required. The page header shows your workspace name, total task count, and overall completion rate at a glance. ## Available charts ### Completion breakdown A set of progress bars showing how tasks are distributed across the four status categories: **Pending**, **In Progress**, **Completed**, and **Cancelled**. Each bar shows both the count and the percentage of total tasks. ### Task velocity An area chart covering the last 8 weeks with two lines: tasks **created** and tasks **completed** each week. Use it to spot whether your team is keeping up with incoming work or falling behind. ### Tasks by list A bar list ranking every list in your workspace by how many tasks it contains. Useful for seeing where work is concentrated. ### Tasks by assignee A bar list of active (not yet completed) tasks grouped by member. Use it to identify workload imbalances, members with a much longer bar may be over-assigned. ### Top performers A leaderboard bar list ranking members by their accumulated points. Points are awarded when tasks are completed on time or early. See the [Points](/account/points) page for how the scoring works. ### Top task types A bar list of labels sorted by how many tasks carry each label. This shows which categories of work are most common in your workspace. # Authentication Source: https://docs.getarca.app/api-reference/authentication How to authenticate requests to the Arca API. All requests to the Arca API must be authenticated with an API key. There is no session-based or OAuth authentication for the API. ## Creating an API key Open the Arca app and go to **Settings → API Keys**. Click **New API key**, give it a label, choose the scopes it needs, and optionally set an expiration date. The key is shown **once**, copy it immediately. ## API key format Every key starts with the `arca_` prefix followed by 64 random hex characters: ``` arca_4f3a1b9e2c8d76f05e3a1b9e2c8d76f05e3a1b9e2c8d76f05e3a1b9e2c8d76f0 ``` ## Passing the key Include the key in every request using one of these two headers, not both. ### Authorization header (recommended) ```http theme={null} Authorization: Bearer arca_your_key_here ``` ### X-API-Key header ```http theme={null} X-API-Key: arca_your_key_here ``` The `Authorization` header must use the `Bearer` prefix and the key must start with `arca_`, otherwise the server will not recognise it and will return `401`. ## Expiration API keys can be created with or without an expiration date. If an expiration date is set and the current time is past it, every request with that key returns: ```json theme={null} { "error": "API key has expired" } ``` You can set a new expiration or create a replacement key in **Settings → API Keys**. ## Scopes Each API key is granted a set of scopes at creation time. Scopes cannot be changed after the key is created, create a new key if you need different scopes. A request made with a key that lacks the required scope returns `403 Forbidden`: ```json theme={null} { "error": "Scope 'tasks:write' is required for this endpoint" } ``` ## Security best practices API keys carry full access within their granted scopes. Treat them like passwords. * **Never commit keys to source control.** Use environment variables or a secrets manager. * **Grant only the scopes you need.** A key used for read-only reporting does not need any `*:write` scopes. * **Set an expiration date** for keys used in short-lived scripts or CI pipelines. * **Rotate keys regularly.** You can revoke a key in **Settings → API Keys** at any time. * The server only stores an encrypted version of the key, the raw value is never stored. If you lose it, you must create a new key. # Create comment Source: https://docs.getarca.app/api-reference/comments/create POST /api/v1/tasks/{id}/comments Posts a new top-level comment on a task. Requires the `comments:write` scope. Viewers cannot post comments. Access-restricted members receive `403` if the task belongs to a list outside their permitted scope. ## Path parameters The numeric task ID. ## Request body Comment text. Accepts an HTML string. Whitespace-only content is rejected with `400`. ## Response Returns the created comment. `resolved` is always `false` for a new comment. New comment identifier. ID of the task this comment belongs to. ID of the API key owner (the commenter). Display name of the commenter. Profile picture URL of the commenter. Comment content. Always `null`. Threading is not supported via the API. Always `false` for newly created comments. UTC ISO-8601 creation timestamp. ```json 201 theme={null} { "id": 172, "task_id": 101, "user_id": 1, "name": "Alice", "avatar_url": null, "content": "Deploying to staging tonight.", "parent_comment_id": null, "resolved": false, "created_at": "2026-03-18T20:00:00.000Z" } ``` ```json 400 theme={null} { "error": "content is required" } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'comments:write' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Task not found" } ``` # List comments Source: https://docs.getarca.app/api-reference/comments/list GET /api/v1/tasks/{id}/comments Returns all comments on a task, ordered by creation date (oldest first). Requires the `comments:read` scope. You must be a member of the task's workspace. Access-restricted members receive `403` if the task belongs to a list outside their permitted scope. ## Path parameters The numeric task ID. ## Response Returns an array of comment objects. Comment identifier. ID of the task this comment belongs to. ID of the user who wrote the comment. Display name of the comment author. Profile picture URL of the comment author. `null` if none is set. Comment content as an HTML string. ID of the parent comment if this is a reply. `null` for top-level comments. Whether the comment has been marked as resolved. UTC ISO-8601 creation timestamp. ```json 200 theme={null} [ { "id": 170, "task_id": 101, "user_id": 1, "name": "Alice", "avatar_url": null, "content": "

This is blocked by the auth service ticket.

", "parent_comment_id": null, "resolved": false, "created_at": "2026-03-18T18:34:49.000Z" }, { "id": 171, "task_id": 101, "user_id": 7, "name": "Bob", "avatar_url": "https://cdn.example.com/avatars/bob.png", "content": "

Fixed in #42, marking as resolved.

", "parent_comment_id": null, "resolved": true, "created_at": "2026-03-18T19:10:00.000Z" } ] ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'comments:read' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Task not found" } ```
# Errors Source: https://docs.getarca.app/api-reference/errors Error responses returned by the Arca API. All error responses from the Arca API return JSON with a single `error` field describing the problem: ```json theme={null} { "error": "A description of the problem" } ``` ## HTTP status codes | Status | Name | When it occurs | | ------ | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `400` | Bad request | A required field is missing, a field is the wrong type, a value is out of the allowed range, or a date is in an invalid format. | | `401` | Unauthorized | The API key is missing, does not start with `arca_`, is not recognised, or has expired. | | `403` | Forbidden | Your API key lacks the required scope for this endpoint, or your workspace role does not permit the action (e.g. a viewer attempting to create a task). | | `404` | Not found | The requested resource does not exist, or it exists in a workspace you are not a member of. | | `500` | Internal server error | An unexpected error occurred on the server. | ## 400: Bad request Common causes and the exact error messages returned: | Error message | Cause | | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | | `"workspace_id is required"` | `workspace_id` is missing or not a valid numeric string. | | `"name is required"` | `name` is missing or blank after trimming whitespace. | | `"title is required"` | `title` is missing or blank. | | `"title cannot be empty"` | A PATCH request set `title` to an empty string. | | `"folder_id is required"` | `folder_id` is missing when creating a list via the API. | | `"list_id is required"` | `list_id` is missing when creating a task via the API. | | `"status_id must be a valid numeric ID"` | `status_id` is not a valid integer. | | `"list_id must be a valid numeric ID"` | `list_id` is not a valid integer. | | `"Invalid priority. Must be one of: urgent, high, medium, low, none"` | `priority` is not one of the allowed values. | | `"Invalid due_date format. Use ISO 8601 UTC, e.g. 2026-03-18T17:00:00"` | `due_date` could not be parsed as a valid date. | | `"Invalid start_date format. Use ISO 8601 UTC, e.g. 2026-03-18T17:00:00"` | `start_date` could not be parsed as a valid date. | | `"content is required"` | Comment `content` is missing or blank. | | `"Invalid workspace ID"` | The `:id` path parameter in a workspace endpoint is not a valid integer. | | `"Invalid folder ID"` | The `:id` path parameter in a folder endpoint is not a valid integer. | | `"Invalid list ID"` | The `:id` path parameter in a list endpoint is not a valid integer. | | `"Invalid task ID"` | The `:id` path parameter in a task or comment endpoint is not a valid integer. | ## 401: Unauthorized | Error message | Cause | | ----------------------- | --------------------------------------------------------------------------------------------------- | | `"API key required"` | No `Authorization: Bearer arca_...` header or `X-API-Key` header was sent, or the format was wrong. | | `"Invalid API key"` | The key was provided but does not match any active key in the database. | | `"API key has expired"` | The key has passed its expiration date. Create a new key in **Settings → API Keys**. | ## 403: Forbidden | Error message | Cause | | --------------------------------------------- | --------------------------------------------------------------- | | `"Scope 'X' is required for this endpoint"` | Your API key was not granted the scope needed for this request. | | `"Viewers cannot create folders"` | Your workspace role is `viewer`. | | `"Viewers cannot edit folders"` | Your workspace role is `viewer`. | | `"Only owners and admins can delete folders"` | Your workspace role is `member` or `viewer`. | | `"Viewers cannot create lists"` | Your workspace role is `viewer`. | | `"Viewers cannot edit lists"` | Your workspace role is `viewer`. | | `"Only owners and admins can delete lists"` | Your workspace role is `member` or `viewer`. | | `"Viewers cannot create tasks"` | Your workspace role is `viewer`. | | `"Viewers cannot edit tasks"` | Your workspace role is `viewer`. | | `"Viewers cannot delete tasks"` | Your workspace role is `viewer`. | | `"Viewers cannot comment"` | Your workspace role is `viewer`. | | `"Access denied"` | You are not a member of the workspace the resource belongs to. | ## 404: Not found | Error message | Cause | | -------------------------------------- | --------------------------------------------------------------------------------------------- | | `"User not found"` | Returned by `GET /api/v1/me` if the user record no longer exists. | | `"Workspace not found"` | The workspace does not exist or you are not a member. | | `"Folder not found"` | The folder does not exist, or it belongs to a workspace you are not a member of. | | `"List not found"` | The list does not exist, or the given `folder_id` does not belong to the specified workspace. | | `"Task not found"` | The task does not exist. | | `"Status not found in this workspace"` | The `status_id` provided exists but belongs to a different workspace. | | `"List not found in this workspace"` | The `list_id` provided exists but belongs to a different workspace. | # Create folder Source: https://docs.getarca.app/api-reference/folders/create POST /api/v1/folders Creates a new folder in a workspace. Requires the `folders:write` scope. Viewers cannot create folders. ## Request body Numeric ID of the workspace to create the folder in. Folder name. Optional icon identifier slug (e.g., `"folder-1"`, `"folder-2"`, `"chart"`). Optional color label. Defaults to `"blue"` if not provided. ## Response Returns the created folder. The `position` is automatically assigned as one greater than the current maximum position in the workspace. New folder identifier. Workspace this folder belongs to. Folder name. Icon. `null` if not provided. Color. Defaults to `"blue"`. Auto-assigned sort position. UTC ISO-8601 creation timestamp. ```json 201 theme={null} { "id": 15, "workspace_id": 3, "name": "Design", "icon": "folder-2", "color": "purple", "position": 3, "created_at": "2026-03-18T10:00:00.000Z" } ``` ```json 400 theme={null} { "error": "name is required" } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'folders:write' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Workspace not found" } ``` # Delete folder Source: https://docs.getarca.app/api-reference/folders/delete DELETE /api/v1/folders/{id} Permanently deletes a folder and all lists and tasks inside it. This action is irreversible. Deleting a folder cascades to all lists and tasks inside it. Requires the `folders:write` scope. ## Path parameters The numeric folder ID. ## Response Returns `204 No Content` with an empty body on success. ```204 No Content theme={null} ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'folders:write' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Folder not found" } ``` # List folders Source: https://docs.getarca.app/api-reference/folders/list GET /api/v1/workspaces/{id}/folders Returns all folders in a workspace, ordered by position then name. Requires the `folders:read` scope. You must be a member of the workspace. Access-restricted members only receive folders they have been explicitly granted access to. ## Path parameters The numeric workspace ID. ## Response Returns an array of folder objects. Folder identifier. ID of the workspace this folder belongs to. Folder name. Icon identifier slug (e.g., `"folder-1"`, `"folder-2"`, `"library"`). `null` if not set. Folder color. Numeric sort position. Folders are ordered by this value ascending. UTC ISO-8601 creation timestamp. ```json 200 theme={null} [ { "id": 10, "workspace_id": 3, "name": "Engineering", "icon": "folder-1", "color": "blue", "position": 1, "created_at": "2026-01-10T12:00:00.000Z" }, { "id": 11, "workspace_id": 3, "name": "Design", "icon": "folder-2", "color": "purple", "position": 2, "created_at": "2026-01-12T09:30:00.000Z" } ] ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'folders:read' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Workspace not found" } ``` # Update folder Source: https://docs.getarca.app/api-reference/folders/update PATCH /api/v1/folders/{id} Updates one or more properties of a folder. Only the fields you include are changed. Requires the `folders:write` scope. Viewers cannot edit folders. ## Path parameters The numeric folder ID. ## Request body All fields are optional. Send only the fields you want to update. New folder name. Icon identifier slug. Folder color. ## Response Returns the full updated folder object. Folder identifier. Workspace this folder belongs to. Folder name. Icon. Color. Sort position (unchanged by this endpoint). UTC ISO-8601 creation timestamp. ```json 200 theme={null} { "id": 15, "workspace_id": 3, "name": "Design & UX", "icon": "folder-2", "color": "pink", "position": 3, "created_at": "2026-03-18T10:00:00.000Z" } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'folders:write' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Folder not found" } ``` # Introduction Source: https://docs.getarca.app/api-reference/introduction Build integrations with Arca using the REST API. The Arca REST API lets you read and write workspace data (tasks, lists, folders, statuses, labels, members, and comments) from any external application or script. ## Base URL All endpoints are available under: ``` https://api.getarca.app/api/v1 ``` ## Authentication Every request must include a valid API key. You can pass it one of two ways: **`Authorization` header (recommended)** ```http theme={null} Authorization: Bearer arca_your_key_here ``` **`X-API-Key` header** ```http theme={null} X-API-Key: arca_your_key_here ``` All API keys start with the `arca_` prefix. Create and manage keys in the Arca app under **Settings → API Keys**. API keys are secrets. Never embed them in client-side code or public repositories. If the key is missing, invalid, or expired, the API returns `401 Unauthorized`. ## Scopes Each API key is granted a specific set of scopes. A request is rejected with `403 Forbidden` if the key lacks the required scope for the endpoint. | Scope | Grants access to | | ------------------ | ---------------------------------------------- | | `users:read` | Read your own profile (`/me`) | | `workspaces:read` | Read workspaces, members, statuses, and labels | | `workspaces:write` | Create, update, and delete statuses and labels | | `folders:read` | Read folders | | `folders:write` | Create, update, and delete folders | | `lists:read` | Read lists | | `lists:write` | Create, update, and delete lists | | `tasks:read` | Read tasks and subtasks | | `tasks:write` | Create, update, and delete tasks | | `comments:read` | Read task comments | | `comments:write` | Create task comments | ## Role restrictions API operations are additionally constrained by your workspace role: * **Viewers** can use read scopes (`tasks:read`, `folders:read`, etc.) but cannot create, edit, or delete any resources. * **Members** can create and edit resources but cannot delete folders or lists. * **Admins and owners** have full access, including deleting folders and lists. Additionally, workspace admins and owners can apply **access restrictions** to individual members, limiting them to specific folders and lists. Restricted members receive filtered results on list endpoints, and `403 Forbidden` when accessing, creating, updating, or deleting resources in folders or lists outside their permitted scope. ## Timestamps All timestamps in responses are **UTC ISO-8601** strings, for example: ``` 2026-03-18T18:34:49.000Z ``` When sending date values in request bodies (`due_date`, `start_date`), use ISO 8601 UTC format. A string without a timezone suffix (e.g., `2026-03-18T17:00:00`) is treated as UTC. To **remove** a date, pass `null` or an empty string (`""`). ## Errors All error responses return JSON with a single `error` field: ```json theme={null} { "error": "A description of the problem" } ``` | Status | Meaning | | ------ | ------------------------------------------------------------------------------------------ | | `400` | Bad request, missing or invalid parameter | | `401` | Unauthorized, API key is missing, invalid, or expired | | `403` | Forbidden, your workspace role prohibits this action, or your key lacks the required scope | | `404` | Not found, the resource does not exist or is not accessible to you | | `500` | Internal server error | # Create label Source: https://docs.getarca.app/api-reference/labels/create POST /api/v1/labels Creates a new label in a workspace. Requires the `workspaces:write` scope. Any workspace member can create labels. ## Request body Numeric ID of the workspace to create the label in. Label name. Optional color value. Defaults to `"gray"` if not provided. ## Response Returns the created label. New label identifier. Workspace this label belongs to. Label name. Color value. Defaults to `"gray"`. UTC ISO-8601 creation timestamp. ```json 201 theme={null} { "id": 5, "workspace_id": 3, "name": "Technical Debt", "color": "yellow", "created_at": "2026-04-11T10:45:00.000Z" } ``` ```json 400 theme={null} { "error": "name is required" } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'workspaces:write' is required for this endpoint" } ``` ```json 409 theme={null} { "error": "A label with this name already exists" } ``` # Delete label Source: https://docs.getarca.app/api-reference/labels/delete DELETE /api/v1/labels/{id} Permanently deletes a label from a workspace. This action is irreversible. Requires the `workspaces:write` scope. Only workspace owners and admins can delete labels. ## Path parameters The numeric label ID. ## Response Returns `204 No Content` with an empty body on success. ```204 No Content theme={null} ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Only owners and admins can delete labels" } ``` ```json 404 theme={null} { "error": "Label not found" } ``` # List labels Source: https://docs.getarca.app/api-reference/labels/list GET /api/v1/workspaces/{id}/labels Returns all labels defined in a workspace, ordered alphabetically by name. Requires the `workspaces:read` scope. You must be a member of the workspace. ## Path parameters The numeric workspace ID. ## Response Returns an array of label objects ordered by `name` ascending. Label identifier. Workspace this label belongs to. Label name. Color associated with the label. UTC ISO-8601 creation timestamp. ```json 200 theme={null} [ { "id": 1, "workspace_id": 3, "name": "Bug", "color": "red", "created_at": "2026-01-15T08:00:00.000Z" }, { "id": 2, "workspace_id": 3, "name": "Feature", "color": "blue", "created_at": "2026-01-15T08:00:00.000Z" } ] ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'workspaces:read' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Workspace not found" } ``` # Update label Source: https://docs.getarca.app/api-reference/labels/update PATCH /api/v1/labels/{id} Updates one or more properties of a label. Only the fields you include are changed. Requires the `workspaces:write` scope. Only workspace owners and admins can update labels. ## Path parameters The numeric label ID. ## Request body All fields are optional. Send only the fields you want to update. New label name. New color value. ## Response Returns the full updated label object. Label identifier. Workspace this label belongs to. Label name. Color value. UTC ISO-8601 creation timestamp. ```json 200 theme={null} { "id": 5, "workspace_id": 3, "name": "Tech Debt", "color": "orange", "created_at": "2026-04-11T10:45:00.000Z" } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Only owners and admins can edit labels" } ``` ```json 404 theme={null} { "error": "Label not found" } ``` ```json 409 theme={null} { "error": "A label with this name already exists" } ``` # Create list Source: https://docs.getarca.app/api-reference/lists/create POST /api/v1/lists Creates a new list inside a folder. Requires the `lists:write` scope. Viewers cannot create lists. ## Request body Numeric ID of the workspace to create the list in. Numeric ID of the folder this list belongs to. The folder must exist in the same workspace. Unlike the Arca app, this field is required when creating a list via the API. List name. Optional icon identifier slug (e.g., `"folder-1"`, `"chart"`, `"code"`). Optional color label. Defaults to `"gray"` if not provided. ## Response Returns the created list. The `position` is automatically assigned as one greater than the current maximum position in the workspace. New list identifier. Workspace this list belongs to. Parent folder ID. List name. Icon. `null` if not provided. Color. Defaults to `"gray"`. Auto-assigned sort position. UTC ISO-8601 creation timestamp. ```json 201 theme={null} { "id": 25, "workspace_id": 3, "folder_id": 10, "name": "API Tasks", "icon": "folder-1", "color": "blue", "position": 3, "created_at": "2026-03-18T11:00:00.000Z" } ``` ```json 400 theme={null} { "error": "workspace_id is required" } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'lists:write' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Folder not found" } ``` # Delete list Source: https://docs.getarca.app/api-reference/lists/delete DELETE /api/v1/lists/{id} Permanently deletes a list and all tasks inside it. This action is irreversible. Deleting a list cascades to all tasks inside it. Requires the `lists:write` scope. ## Path parameters The numeric list ID. ## Response Returns `204 No Content` with an empty body on success. ```204 No Content theme={null} ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'lists:write' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "List not found" } ``` # List lists Source: https://docs.getarca.app/api-reference/lists/list GET /api/v1/workspaces/{id}/lists Returns all lists in a workspace, ordered by position then name. Requires the `lists:read` scope. You must be a member of the workspace. Access-restricted members only receive lists within their permitted folders or explicitly granted lists. ## Path parameters The numeric workspace ID. ## Response Returns an array of list objects. List identifier. ID of the workspace this list belongs to. ID of the parent folder. `null` if the list is not inside a folder. List name. Icon identifier slug (e.g., `"folder-1"`, `"chart"`, `"code"`). `null` if not set. List color. Numeric sort position. Lists are ordered by this value ascending. UTC ISO-8601 creation timestamp. ```json 200 theme={null} [ { "id": 20, "workspace_id": 3, "folder_id": 10, "name": "Backend", "icon": "code", "color": "blue", "position": 1, "created_at": "2026-01-15T08:00:00.000Z" }, { "id": 21, "workspace_id": 3, "folder_id": 10, "name": "Frontend", "icon": "chart", "color": "green", "position": 2, "created_at": "2026-01-15T08:05:00.000Z" } ] ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'lists:read' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Workspace not found" } ``` # Update list Source: https://docs.getarca.app/api-reference/lists/update PATCH /api/v1/lists/{id} Updates one or more properties of a list. Only the fields you include are changed. Requires the `lists:write` scope. Viewers cannot edit lists. ## Path parameters The numeric list ID. ## Request body All fields are optional. Send only the fields you want to update. New list name. Icon identifier slug. List color. Move the list to a different folder by passing a new folder ID. ## Response Returns the full updated list object. List identifier. Workspace this list belongs to. Parent folder ID. `null` if not inside a folder. List name. Icon. Color. Sort position (unchanged by this endpoint). UTC ISO-8601 creation timestamp. ```json 200 theme={null} { "id": 25, "workspace_id": 3, "folder_id": 10, "name": "API Integration Tasks", "icon": "folder-1", "color": "green", "position": 3, "created_at": "2026-03-18T11:00:00.000Z" } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'lists:write' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "List not found" } ``` # Rate limits Source: https://docs.getarca.app/api-reference/rate-limits Request rate limits enforced on the Arca API. The Arca API enforces rate limits to protect the service from abuse and ensure reliable performance for all integrations. ## Limits All endpoints share a single limit of **600 requests per minute**, tracked per API key. Each integration has its own independent quota. ## When a limit is exceeded When a rate limit is exceeded, the API returns `429 Too Many Requests` with a JSON body: ```json theme={null} { "statusCode": 429, "error": "Too Many Requests", "retryAfter": 47 } ``` `retryAfter` is the number of seconds to wait before retrying. The following headers are included on `429` responses: | Header | Description | | ----------------------- | ------------------------------------------ | | `x-ratelimit-limit` | Maximum requests allowed in the window | | `x-ratelimit-remaining` | Requests remaining before the limit resets | | `x-ratelimit-reset` | Seconds until the window resets | | `retry-after` | Same as `retryAfter` in the response body | ## Best practices * **Respect `retry-after`.** When you receive a 429, wait the indicated number of seconds before retrying. * **Avoid polling loops.** If you need near-real-time updates, prefer event-driven patterns over polling every few seconds. * **Use pagination.** The task list endpoint returns a maximum of 100 tasks per page. Fetch only the pages you need. * **Batch writes sequentially.** If importing data, send requests sequentially rather than in parallel bursts. # Create status Source: https://docs.getarca.app/api-reference/statuses/create POST /api/v1/statuses Creates a new status in a workspace. Requires the `workspaces:write` scope. Only workspace owners and admins can create statuses. ## Request body Numeric ID of the workspace to create the status in. Status label. Status category. Must be one of `pending`, `in_progress`, `completed`, or `cancelled`. Optional icon slug. Optional color value. Defaults to `"gray"` if not provided. ## Response Returns the created status. The `position` is automatically assigned as one greater than the current maximum position in the workspace. New status identifier. Workspace this status belongs to. Status label. Icon slug. `null` if not provided. Color value. Defaults to `"gray"`. Status category. Auto-assigned sort position. UTC ISO-8601 creation timestamp. ```json 201 theme={null} { "id": 4, "workspace_id": 3, "name": "In Review", "icon": null, "color": "orange", "category": "in_progress", "position": 4, "created_at": "2026-04-11T10:30:00.000Z" } ``` ```json 400 theme={null} { "error": "name is required" } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Only owners and admins can create statuses" } ``` ```json 409 theme={null} { "error": "A status with this name already exists" } ``` # Delete status Source: https://docs.getarca.app/api-reference/statuses/delete DELETE /api/v1/statuses/{id} Permanently deletes a status from a workspace. This action is irreversible. Requires the `workspaces:write` scope. Only workspace owners and admins can delete statuses. You cannot delete the last remaining `completed` status in a workspace. ## Path parameters The numeric status ID. ## Query parameters Numeric ID of a different status to reassign tasks to before deletion. **Required** if any tasks are currently assigned this status, the request will return `400` with a `task_count` field if you omit this when tasks exist. ## Response Returns `204 No Content` with an empty body on success. ```204 No Content theme={null} ``` ```json 400 theme={null} { "error": "Status has tasks", "message": "Provide a ?reassign_to= to reassign tasks before deleting", "task_count": 12 } ``` ```json 400 theme={null} { "error": "At least one completed status must remain in the workspace" } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Only owners and admins can delete statuses" } ``` ```json 404 theme={null} { "error": "Status not found" } ``` # List statuses Source: https://docs.getarca.app/api-reference/statuses/list GET /api/v1/workspaces/{id}/statuses Returns all statuses defined in a workspace, ordered by position. Requires the `workspaces:read` scope. You must be a member of the workspace. ## Path parameters The numeric workspace ID. ## Response Returns an array of status objects ordered by `position` ascending. Status identifier. Workspace this status belongs to. Status label (e.g., `"In Progress"`, `"Done"`). Icon slug associated with the status. Color value associated with the status. Status category. One of `pending`, `active`, `done`, `completed`, or `cancelled`. Sort position (ascending order). UTC ISO-8601 creation timestamp. ```json 200 theme={null} [ { "id": 1, "workspace_id": 3, "name": "Backlog", "icon": null, "color": "gray", "category": "pending", "position": 1, "created_at": "2026-01-01T00:00:00.000Z" }, { "id": 2, "workspace_id": 3, "name": "In Progress", "icon": "in-progress", "color": "blue", "category": "active", "position": 2, "created_at": "2026-01-01T00:00:00.000Z" }, { "id": 3, "workspace_id": 3, "name": "Done", "icon": "check", "color": "green", "category": "completed", "position": 3, "created_at": "2026-01-01T00:00:00.000Z" } ] ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'workspaces:read' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Workspace not found" } ``` # Update status Source: https://docs.getarca.app/api-reference/statuses/update PATCH /api/v1/statuses/{id} Updates one or more properties of a status. Only the fields you include are changed. Requires the `workspaces:write` scope. Only workspace owners and admins can update statuses. You cannot change the `category` of the **last remaining** `completed` status in a workspace. At least one completed status must always exist. ## Path parameters The numeric status ID. ## Request body All fields are optional. Send only the fields you want to update. New status label. New status category. Must be one of `pending`, `in_progress`, `completed`, or `cancelled`. Icon slug. Color value. Sort position integer. Use this to reorder statuses. ## Response Returns the full updated status object. Status identifier. Workspace this status belongs to. Status label. Icon slug. Color value. Status category. Sort position. UTC ISO-8601 creation timestamp. ```json 200 theme={null} { "id": 4, "workspace_id": 3, "name": "In Review", "icon": "review", "color": "orange", "category": "in_progress", "position": 3, "created_at": "2026-04-11T10:30:00.000Z" } ``` ```json 400 theme={null} { "error": "At least one completed status must remain in the workspace" } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Only owners and admins can edit statuses" } ``` ```json 404 theme={null} { "error": "Status not found" } ``` ```json 409 theme={null} { "error": "A status with this name already exists" } ``` # Create task Source: https://docs.getarca.app/api-reference/tasks/create POST /api/v1/tasks Creates a new task in a workspace. Requires the `tasks:write` scope. Viewers cannot create tasks. Access-restricted members receive `403` if the target `list_id` is outside their permitted scope. ## Request body Numeric ID of the list to place the task in. Task title. Optional task description. Accepts an HTML string. Task priority. Must be one of `urgent`, `high`, `medium`, `low`, or `none`. Defaults to `none` if omitted. Numeric ID of the workspace status to apply. Must belong to the same workspace. If omitted, the task is assigned the first status in the workspace with the `pending` category. Due date in ISO 8601 UTC format (e.g., `"2026-03-25T17:00:00Z"`). A string without a timezone suffix is treated as UTC. Start date in ISO 8601 UTC format. Optional array of numeric user IDs to assign to the task. All IDs must be members of the workspace derived from `list_id`. Invalid or non-member IDs are silently ignored. Use `GET /api/v1/workspaces/:id/members` to resolve user IDs before calling this endpoint. Optional array of custom field values to set on the new task. Each entry must contain a numeric `id` and a string `value` (or `null` to clear). Only fields that apply to the task's list and are visible to the API key user are applied; other fields are silently ignored. ```json theme={null} "custom_fields": [ { "id": 1, "value": "Pro" }, { "id": 2, "value": "8" } ] ``` ## Response Returns the created task. The `identifier` is a workspace-scoped sequential number auto-incremented from the last task in the workspace. New task identifier. Workspace this task belongs to. List this task belongs to. Task title. Task description. `null` if not provided. Task priority. Auto-assigned workspace-scoped sequential task number. UTC ISO-8601 due date. `null` if not set. UTC ISO-8601 start date. `null` if not set. User ID of the API key owner (the creator). UTC ISO-8601 creation timestamp. Assigned status object. `null` if no status exists in the workspace. Status identifier. Status label. Icon. Color. One of `pending`, `in_progress`, `completed`, or `cancelled`. Array of assigned users. Each entry contains `id`, `name`, and `avatar_url`. Empty array if no `assignee_ids` were provided. Custom fields that apply to the new task's list, each with its current value after creation. Fields the user does not have access to are not returned. Custom field identifier. Custom field name (e.g., `"Customer Tier"`). Field type. One of `text`, `number`, `date`, `checkbox`, `rating`, `dropdown`, `money`, or `people`. Type-specific configuration. For example: * `rating` fields include `icon` and `color`; * `dropdown` fields include an `options` array of strings; * `money` fields include `currency` and `decimals`. It's `null` for field types with no configuration (which are `text`, `number`, `date`, `checkbox` and `people`). Sort position of the field within the workspace. The task's value for this field. `null` when no value has been set. ```json 201 theme={null} { "id": 110, "workspace_id": 3, "list_id": 20, "title": "Write unit tests", "description": "

Cover all service layer methods.

", "priority": "high", "identifier": 14, "due_date": "2026-03-30T17:00:00.000Z", "start_date": null, "creator_id": 1, "created_at": "2026-03-18T18:00:00.000Z", "status": { "id": 1, "name": "To Do", "icon": "todo", "color": "gray", "category": "pending" }, "assignees": [ { "id": 7, "name": "Jane Smith", "avatar_url": null } ], "custom_fields": [ { "id": 1, "name": "Customer Tier", "type": "dropdown", "config": { "options": ["Free", "Starter", "Pro"] }, "position": 1, "value": "Pro" } ] } ``` ```json 400 theme={null} { "error": "list_id is required" } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'tasks:write' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "List not found in this workspace" } ```
# Delete task Source: https://docs.getarca.app/api-reference/tasks/delete DELETE /api/v1/tasks/{id} Permanently deletes a task. This action is irreversible. Requires the `tasks:write` scope. Viewers cannot delete tasks. Access-restricted members receive `403` if the task belongs to a list outside their permitted scope. ## Path parameters The numeric task ID. ## Response Returns `204 No Content` with an empty body on success. ```204 No Content theme={null} ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'tasks:write' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Task not found" } ``` # Get task Source: https://docs.getarca.app/api-reference/tasks/get GET /api/v1/tasks/{id} Returns a single task with full details including its status, assignees, labels, and attachments. Requires the `tasks:read` scope. You must be a member of the task's workspace. Access-restricted members receive `403` if the task belongs to a list outside their permitted scope. ## Path parameters The numeric task ID. ## Response Task identifier. Workspace this task belongs to. List this task belongs to. `null` if not in a list. Task title. Task description as an HTML string. `null` if not set. Task priority. One of `urgent`, `high`, `medium`, `low`, or `none`. Workspace-scoped sequential task number. UTC ISO-8601 due date. `null` if not set. UTC ISO-8601 start date. `null` if not set. User ID of the task creator. UTC ISO-8601 creation timestamp. Current task status. `null` if no status is assigned. Status identifier. Status label (e.g., `"In Progress"`). Icon associated with the status. Color associated with the status. Status category. One of `pending`, `in_progress`, `completed`, or `cancelled`. Array of users assigned to the task. Empty array if unassigned. User ID. Display name. Profile picture URL. Labels attached to the task. Empty array if no labels are assigned. Label identifier. Label name. Display color of the label. `null` if no color is set. Direct subtasks of this task. Empty array if the task has no subtasks. Subtask identifier. Subtask title. Subtask priority. One of `urgent`, `high`, `medium`, `low`, or `none`. Workspace-scoped sequential task number. Current status of the subtask. `null` if no status is assigned. Same shape as the parent task `status` field. Users assigned to the subtask. Same shape as the parent task `assignees` array. Confirmed file attachments on the task. Empty array if none. Attachment identifier. Original file name. File size in bytes. MIME type (e.g., `"image/png"`). UTC ISO-8601 upload timestamp. User who uploaded the file. User ID. Display name. Profile picture URL. Custom fields that apply to this task's list, each with its current value. Fields restricted to other lists or folders are not returned. Fields the user does not have access to are also omitted. Custom field identifier. Custom field name (e.g., `"Customer Tier"`). Field type. One of `text`, `number`, `date`, `checkbox`, `rating`, `dropdown`, `money`, or `people`. Type-specific configuration. For example: * `rating` fields include `icon` and `color`; * `dropdown` fields include an `options` array of strings; * `money` fields include `currency` and `decimals`. It's `null` for field types with no configuration (which are `text`, `number`, `date`, `checkbox` and `people`). Sort position of the field within the workspace. The task's value for this field. `null` when no value has been set. ```json 200 theme={null} { "id": 101, "workspace_id": 3, "list_id": 20, "title": "Set up CI pipeline", "description": "

Use GitHub Actions for the build pipeline.

", "priority": "high", "identifier": 5, "due_date": "2026-03-25T00:00:00.000Z", "start_date": null, "creator_id": 1, "created_at": "2026-03-10T14:22:00.000Z", "status": { "id": 2, "name": "In Progress", "icon": "in-progress", "color": "blue", "category": "in_progress" }, "assignees": [ { "id": 7, "name": "Bob", "avatar_url": "https://cdn.example.com/avatars/bob.png" } ], "labels": [ { "id": 2, "name": "Backend", "color": "purple" } ], "subtasks": [ { "id": 102, "title": "Write unit tests", "priority": "medium", "identifier": 6, "status": { "id": 1, "name": "Backlog", "icon": null, "color": "gray", "category": "pending" }, "assignees": [] } ], "attachments": [ { "id": 4, "file_name": "diagram.png", "file_size": 204800, "mime_type": "image/png", "created_at": "2026-03-11T09:00:00.000Z", "uploader": { "id": 1, "name": "Alice", "avatar_url": null } } ], "custom_fields": [ { "id": 1, "name": "Customer Tier", "type": "dropdown", "config": { "options": ["Free", "Starter", "Pro"] }, "position": 1, "value": "Pro" }, { "id": 2, "name": "Story Points", "type": "number", "config": null, "position": 2, "value": null } ] } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'tasks:read' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Task not found" } ```
# List tasks Source: https://docs.getarca.app/api-reference/tasks/list GET /api/v1/workspaces/{id}/tasks Returns a paginated list of top-level tasks in a workspace, ordered by creation date (newest first). Requires the `tasks:read` scope. You must be a member of the workspace. Access-restricted members only receive tasks in their permitted lists. Passing a `list_id` for an inaccessible list returns `403`. This endpoint returns **top-level tasks only**. Each task includes its direct subtasks inline in the `subtasks` array. ## Path parameters The numeric workspace ID. ## Query parameters Filter results to a specific list. If omitted, tasks from all lists are returned. Page number (1-based). Number of tasks per page. Minimum `1`, maximum `100`. ## Response Array of task objects. Task identifier. Workspace this task belongs to. List this task belongs to. `null` if the task is not in a list. Task title. Task priority. One of `urgent`, `high`, `medium`, `low`, or `none`. Workspace-scoped sequential task number (e.g., `1`, `2`, `3`). UTC ISO-8601 due date. `null` if not set. UTC ISO-8601 start date. `null` if not set. User ID of the person who created the task. UTC ISO-8601 creation timestamp. Current task status. `null` if no status is assigned. Status identifier. Status label (e.g., `"In Progress"`). Icon associated with the status. Color associated with the status. Status category. One of `pending`, `in_progress`, `completed`, or `cancelled`. Array of users assigned to the task. Empty array if unassigned. User ID. Display name. Profile picture URL. Direct subtasks of this task. Empty array if none. Subtask identifier. Subtask title. Subtask priority. Workspace-scoped sequential task number. Current status of the subtask. Same shape as the parent task status. Users assigned to the subtask. Same shape as the parent task assignees. Custom fields that apply to each task's list, each with its current value. Fields restricted to other lists or folders are not returned. Custom field identifier. Custom field name (e.g., `"Customer Tier"`). Field type. One of `text`, `number`, `date`, `checkbox`, `rating`, `dropdown`, `money`, or `people`. Type-specific configuration. For example: * `rating` fields include `icon` and `color`; * `dropdown` fields include an `options` array of strings; * `money` fields include `currency` and `decimals`. It's `null` for field types with no configuration (which are `text`, `number`, `date`, `checkbox` and `people`). Sort position of the field within the workspace. The task's value for this field. `null` when no value has been set. Current page number. Number of tasks per page used for this response. Total number of matching tasks across all pages. Total number of pages. ```json 200 theme={null} { "data": [ { "id": 101, "workspace_id": 3, "list_id": 20, "title": "Set up CI pipeline", "priority": "high", "identifier": 5, "due_date": "2026-03-25T00:00:00.000Z", "start_date": null, "creator_id": 1, "created_at": "2026-03-10T14:22:00.000Z", "status": { "id": 2, "name": "In Progress", "icon": "in-progress", "color": "blue", "category": "in_progress" }, "assignees": [ { "id": 7, "name": "Bob", "avatar_url": "https://cdn.example.com/avatars/bob.png" } ], "subtasks": [ { "id": 102, "title": "Write unit tests", "priority": "medium", "identifier": 6, "status": { "id": 1, "name": "Backlog", "icon": null, "color": "gray", "category": "pending" }, "assignees": [] } ], "custom_fields": [ { "id": 1, "name": "Customer Tier", "type": "dropdown", "config": { "options": ["Free", "Starter", "Pro"] }, "position": 1, "value": "Pro" } ] } ], "page": 1, "limit": 20, "total": 1, "total_pages": 1 } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'tasks:read' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Workspace not found" } ``` # Update task Source: https://docs.getarca.app/api-reference/tasks/update PATCH /api/v1/tasks/{id} Updates one or more fields of a task. Only the fields you include are changed. Requires the `tasks:write` scope. Viewers cannot edit tasks. Access-restricted members receive `403` if the task belongs to, or is being moved to, a list outside their permitted scope. ## Path parameters The numeric task ID. ## Request body All fields are optional. Send only the fields you want to update. New task title. Cannot be set to an empty string. Task description as an HTML string. Task priority. Must be one of `urgent`, `high`, `medium`, `low`, or `none`. Numeric ID of a workspace status to apply. The status must belong to the same workspace. Numeric ID of a list to move the task into. The list must belong to the same workspace. Due date in ISO 8601 UTC format (e.g., `"2026-03-30T17:00:00Z"`). Pass `null` or an empty string to remove the due date. Start date in ISO 8601 UTC format. Pass `null` or an empty string to remove the start date. Array of numeric user IDs to assign to the task. Replaces the current assignees entirely. Pass an empty array to remove all assignees. Omit this field to leave the current assignees unchanged. All IDs must be members of the same workspace; non-member IDs are silently ignored. Optional array of custom field values to update. Each entry must contain a numeric `id` and a string `value` (or `null` to clear that field's value). Omitting this field entirely leaves all custom field values unchanged. Only fields that apply to the task's list and are visible to the API key user are processed; other fields are silently ignored. ```json theme={null} "custom_fields": [ { "id": 1, "value": "Starter" }, { "id": 2, "value": null } ] ``` ## Response Returns the full updated task including its current assignees. Task identifier. Workspace this task belongs to. List this task belongs to. Task title. Task description. Task priority. Workspace-scoped sequential task number. UTC ISO-8601 due date. UTC ISO-8601 start date. User ID of the task creator. UTC ISO-8601 creation timestamp. Current task status. Status identifier. Status label. Icon. Color. One of `pending`, `in_progress`, `completed`, or `cancelled`. Current assignees. Empty array if unassigned. User ID. Display name. Profile picture URL. Custom fields that apply to the task's list, each with its current value after the update. Fields the user does not have access to are not returned. Custom field identifier. Custom field name (e.g., `"Customer Tier"`). Field type. One of `text`, `number`, `date`, `checkbox`, `rating`, `dropdown`, `money`, or `people`. Type-specific configuration. For example: * `rating` fields include `icon` and `color`; * `dropdown` fields include an `options` array of strings; * `money` fields include `currency` and `decimals`. It's `null` for field types with no configuration (which are `text`, `number`, `date`, `checkbox` and `people`). Sort position of the field within the workspace. The task's value for this field. `null` when no value has been set. ```json 200 theme={null} { "id": 110, "workspace_id": 3, "list_id": 20, "title": "Write unit tests", "description": "

Cover all service layer methods.

", "priority": "urgent", "identifier": 14, "due_date": "2026-03-22T09:00:00.000Z", "start_date": null, "creator_id": 1, "created_at": "2026-03-18T18:00:00.000Z", "status": { "id": 1, "name": "To Do", "icon": "todo", "color": "gray", "category": "pending" }, "assignees": [ { "id": 7, "name": "Alice", "avatar_url": null } ], "custom_fields": [ { "id": 1, "name": "Customer Tier", "type": "dropdown", "config": { "options": ["Free", "Starter", "Pro"] }, "position": 1, "value": "Starter" } ] } ``` ```json 400 theme={null} { "error": "Invalid priority. Must be one of: urgent, high, medium, low, none" } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'tasks:write' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Task not found" } ```
# Get current user Source: https://docs.getarca.app/api-reference/user/me GET /api/v1/me Returns the profile of the user associated with the API key. Requires the `users:read` scope. ## Response Unique user identifier. Email address. Display name. Profile picture URL. `null` if no avatar is set. UTC ISO-8601 timestamp of when the account was created. ```json 200 theme={null} { "id": 12, "email": "alice@example.com", "name": "Alice", "avatar_url": "https://cdn.example.com/avatars/alice.png", "created_at": "2026-01-10T09:00:00.000Z" } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'users:read' is required for this endpoint" } ``` # List custom fields Source: https://docs.getarca.app/api-reference/workspaces/custom-fields GET /api/v1/workspaces/{id}/custom-fields Returns all custom fields in a workspace that are visible to the API key user. Requires the `tasks:read` scope. You must be a member of the workspace. Fields with a restricted **allowed users** list are filtered to the API key user only when their user ID is included in that list. ## Path parameters The numeric workspace ID. ## Response Returns an array of custom field objects ordered by `position` ascending. Custom field identifier. Display name of the custom field (e.g., `"Customer Tier"`). Field type. One of `text`, `number`, `date`, `checkbox`, `rating`, `dropdown`, `money`, or `people`. Type-specific configuration object. `null` for types with no configuration. **`rating`** — `{ "iconName": "star-filled", "color": "yellow" }` **`dropdown`** — `{ "options": ["Option A", "Option B"] }` **`money`** — `{ "currency": "USD", "decimals": 2 }` All other types return `null`. Sort position within the workspace (ascending). When `false`, the field is available on all lists in the workspace. When `true`, the field is only available on lists covered by `granted_folder_ids` and `list_overrides`. Folder IDs where this field applies when `is_scope_restricted` is `true`. All lists inside a granted folder inherit the field unless overridden. Explicit list-level overrides when `is_scope_restricted` is `true`. Each entry has `list_id` (number) and `access` (`granted` or `denied`). A `denied` entry hides the field on that list even if its folder is granted. **`list_id`** — numeric list ID **`access`** — `granted` makes the field available on that list; `denied` hides it Task responses (`GET /tasks/:id`, list tasks, etc.) only include custom fields that apply to the task's list. Values for inapplicable fields are not returned, and writes to those fields are ignored. ```json 200 theme={null} [ { "id": 1, "name": "Customer Tier", "type": "dropdown", "config": { "options": ["Free", "Starter", "Pro"] }, "position": 1, "is_scope_restricted": false, "granted_folder_ids": [], "list_overrides": [] }, { "id": 2, "name": "Story Points", "type": "number", "config": null, "position": 2, "is_scope_restricted": true, "granted_folder_ids": [4], "list_overrides": [] }, { "id": 3, "name": "Satisfaction", "type": "rating", "config": { "iconName": "star-filled", "color": "yellow" }, "position": 3, "is_scope_restricted": true, "granted_folder_ids": [], "list_overrides": [{ "list_id": 12, "access": "granted" }] } ] ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'tasks:read' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Workspace not found" } ``` # Get workspace Source: https://docs.getarca.app/api-reference/workspaces/get GET /api/v1/workspaces/{id} Returns a single workspace by its ID. Requires the `workspaces:read` scope. You must be a member of the workspace. ## Path parameters The numeric workspace ID. ## Response Workspace identifier. Workspace name. URL-safe identifier. Optional workspace description. Icon identifier slug (e.g., `"folder-1"`, `"chart"`, `"briefcase"`). `null` if not set. Brand color. Cover image URL. User ID of the workspace owner. Your role: `owner`, `admin`, `member`, or `viewer`. UTC ISO-8601 creation timestamp. ```json 200 theme={null} { "id": 3, "name": "Acme Corp", "slug": "acme-corp", "description": "Main product workspace", "icon": "briefcase", "color": "blue", "image_url": null, "owner_id": 1, "role": "owner", "created_at": "2026-01-05T10:00:00.000Z" } ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'workspaces:read' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Workspace not found" } ``` # List workspaces Source: https://docs.getarca.app/api-reference/workspaces/list GET /api/v1/workspaces Returns all workspaces the API key owner belongs to, ordered alphabetically by name. Requires the `workspaces:read` scope. ## Response Returns an array of workspace objects. Workspace identifier. Workspace name. URL-safe identifier for the workspace. Optional workspace description. Icon identifier slug (e.g., `"folder-1"`, `"chart"`, `"briefcase"`). `null` if not set. Brand color. Workspace cover image URL. User ID of the workspace owner. Your role in this workspace. One of `owner`, `admin`, `member`, or `viewer`. UTC ISO-8601 creation timestamp. ```json 200 theme={null} [ { "id": 3, "name": "Acme Corp", "slug": "acme-corp", "description": "Main product workspace", "icon": "briefcase", "color": "blue", "image_url": null, "owner_id": 1, "role": "owner", "created_at": "2026-01-05T10:00:00.000Z" } ] ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'workspaces:read' is required for this endpoint" } ``` # List workspace members Source: https://docs.getarca.app/api-reference/workspaces/members GET /api/v1/workspaces/{id}/members Returns all members of a workspace, ordered by join date (oldest first). Requires the `workspaces:read` scope. You must be a member of the workspace. ## Path parameters The numeric workspace ID. ## Response Returns an array of member objects. User ID. Email address. **Only returned if you are the workspace owner.** `null` for all other roles. Display name. Profile picture URL. `null` if none is set. Workspace role: `owner`, `admin`, `member`, or `viewer`. UTC ISO-8601 timestamp of when the user joined the workspace. ```json 200 theme={null} [ { "id": 1, "email": "alice@example.com", "name": "Alice", "avatar_url": null, "role": "owner", "joined_at": "2026-01-05T10:00:00.000Z" }, { "id": 7, "email": null, "name": "Bob", "avatar_url": "https://cdn.example.com/avatars/bob.png", "role": "member", "joined_at": "2026-02-01T08:30:00.000Z" } ] ``` ```json 401 theme={null} { "error": "Invalid API key" } ``` ```json 403 theme={null} { "error": "Scope 'workspaces:read' is required for this endpoint" } ``` ```json 404 theme={null} { "error": "Workspace not found" } ``` # AI Writing Assistant Source: https://docs.getarca.app/arca-apps/ai-writing-assistant Rewrite and refine text inside the task editor using AI. Improve tone, simplify language, or generate a summary in one click. The AI Writing Assistant adds AI-powered text actions directly into the task description editor. Select any text, click the sparkle icon, and choose how you want to rewrite it like more professional, friendlier, more concise, or as a plain summary. The AI Writing Assistant is always on and cannot be disabled. Learn about every available action, how to use them, and monthly usage limits. # Advanced Automations Source: https://docs.getarca.app/arca-apps/automations Create rules that automatically act on tasks when specific events occur, no manual work required. Advanced Automations lets you define trigger-condition-action rules for your workspace. When a task event happens (like a status change or a due date passing), Arca evaluates your conditions and runs the configured actions like updating fields, sending notifications, assigning members, and more. Advanced Automations is always on and cannot be disabled. Learn how to build automation rules, set conditions, and choose actions for your workspace. # Chat Source: https://docs.getarca.app/arca-apps/chat A shared workspace chat room for your team, with access control and inbox notifications when you're away. Chat gives your workspace a single shared conversation. Post rich-text messages, mention teammates, and stay in sync without leaving Arca. When someone is not currently in Chat, they get an inbox notification (and push on mobile) so nothing is missed. Chat is a paid Arca App billed monthly through Stripe. There is one conversation per workspace — no channels or direct messages in this version. ## Subscribe to Chat Only the workspace **Owner** can purchase Chat. Go to **Settings → Arca Apps**, find **Chat**, and click **Buy Now**. After checkout completes and the subscription is active, Chat appears in the left sidebar for members who have access. Use **Manage Subscription** on the same card to open the Stripe billing portal if you need to update payment details or cancel. Chat stays hidden while the subscription is canceled or past due. Re-activate billing to bring it back. *** ## Open Chat Click **Chat** in the left sidebar. You will see the workspace conversation and a composer at the bottom. Messages support rich text and `@mentions`. If the Giphy app is enabled, you can also insert GIFs the same way you do in task comments. File attachments are not available in Chat yet. *** ## Access control By default, every workspace member can use Chat once it is subscribed. The **Owner** and **Admins** always have access. They can restrict Chat to a subset of members. Click **Chat** in the left sidebar. In the Chat header, click **Manage Access**. Select the members who should use Chat, then save. * An **empty** allowlist means everyone in the workspace can use Chat. * A **non-empty** allowlist means only the Owner, Admins, and the listed members can use Chat. * When someone loses access, their unread Chat notifications for that workspace are cleared. *** ## Notifications If you are currently viewing Chat, new messages arrive live over the connection and do not create inbox noise. If you are elsewhere (or on mobile), you receive an inbox notification for new Chat messages. On desktop, opening the notification takes you to Chat. On mobile, Chat opens in the Inbox for now — there is no dedicated Chat screen on the mobile app yet. You can turn Chat message notifications on or off under **Settings → Notifications**. *** ## Delete messages You can delete your own messages. Workspace Owners and Admins can delete any message in the room. # Comment Reactions Source: https://docs.getarca.app/arca-apps/comment-reactions React to any comment with an emoji instead of writing a reply. Great for quick acknowledgements and feedback. Comment Reactions lets you add emoji reactions to comments on any task. Click the emoji button on a comment, pick an emoji, and your reaction appears under the comment. Each person can add one of each emoji per comment. The comment's author gets a notification when someone reacts. *** ## Enable Comment Reactions Comment Reactions is **on by default**. A workspace Owner or Admin can disable it from **Settings → Arca Apps** if the workspace does not want it. *** ## React to a comment Click any task to open it. Click the smiley face icon to open the emoji picker. Click any emoji. Your reaction appears below the comment with a count. *** ## Remove a reaction Click your existing reaction badge below a comment to remove it. *** ## Notifications When someone reacts to your comment, you receive a notification in your **Inbox**. The notification shows who reacted and which task the comment belongs to. # Copy Task as AI Prompt Source: https://docs.getarca.app/arca-apps/copy-task-as-prompt Copy any task's details as a formatted AI prompt so you can paste it directly into ChatGPT, Claude, or any other AI tool. Copy Task as AI Prompt adds a one-click action to any task that packages the task's identifier, title, and description into a ready-to-use prompt. Paste it into any AI tool and start working immediately without manually copying individual fields. The copied prompt looks like this: ``` Start implementation of the following Arca task: Task ID: WORKSPACE-123 Task Title: Your task title here Description: Your task description here ``` This app is available to all members except viewers. *** ## Enable Copy Task as AI Prompt This app is **on by default**. A workspace Owner or Admin can disable it from **Settings → Arca Apps** if the workspace does not need it. *** ## Copy a task as a prompt Click any task to open it. Click the **⋯** menu in the task header. Click **Copy as AI Prompt**. The formatted prompt is copied to your clipboard immediately. Open ChatGPT, Claude, or any other AI tool and paste the prompt. The prompt includes the full task description in Markdown format, so formatting like headings, lists, and code blocks is preserved. # Task Custom Fields Source: https://docs.getarca.app/arca-apps/custom-fields Add your own fields to tasks to track any data your workflow needs. From ratings and budgets to people and dates. Task Custom Fields lets you define workspace-level fields that appear on every task. You can create fields for numbers, dates, dropdown menus, checkboxes, text, ratings, money amounts, and people assignments. Each field can be restricted so only specific members can see it. Task Custom Fields is always on and cannot be disabled. Learn how to create, configure, and restrict custom fields for your workspace. # Documents Source: https://docs.getarca.app/arca-apps/documents Create rich-text documents, wikis, and notes organized in folders with access control, directly inside your workspace. Documents brings a powerful rich-text editor into your workspace. Write long-form notes, wikis, standard operating procedures, meeting notes, and any other structured content. Organize documents into folders, control who can access each one, and attach documents directly to tasks for full context. The editor supports headings, bullet lists, numbered lists, checkboxes, code blocks, callouts, collapsible sections, tables, images, links, and more. All documents auto-save as you type. ## Enable Documents Documents is **off by default**. A workspace Owner or Admin must enable it first. Go to **Settings → Arca Apps**, find **Documents**, and click its toggle. Once enabled, a **Documents** entry appears in the left sidebar for all workspace members. *** ## Create a document Click **Documents** in the left sidebar. Click **New Document** in the top-right corner. The editor opens immediately with a blank page. Type your content directly. Use the `/` slash command menu to insert headings, lists, code blocks, callouts, images, and more. *** ## Organize with folders You can group related documents into folders for easier navigation. * Click the **folder** icon or **New Folder** to create a folder. * Drag any document card into a folder to move it. * Drag a document out of a folder to ungroup it. *** ## Access control By default, only the workspace owner and the document creator can view and edit a document. Share it with specific members to grant access. From the Documents list, click the **⋯** menu on any document card. Click **Manage Access**. A dialog opens where you can select which workspace members are allowed to view and edit the document. Click **Save** to apply the restriction. Members not on the list will no longer see the document. The workspace **Owner** and the document **creator** always have access. Everyone else, including **Admins**, must be explicitly added in **Manage Access**. *** ## Attach a document to a task You can link a document directly to a task so it appears in the task's context. Open a task and click on the attachment icon, then click **Attach Document** to pick an existing document from your workspace. *** ## Delete a document Click the **⋯** menu on a document card and select **Delete**. Deleting a document is permanent; it cannot be recovered. Only the document's creator, Admins, and Owners can delete a document. # Giphy Support Source: https://docs.getarca.app/arca-apps/giphy Search and insert GIFs from the Giphy library directly inside task comments to add a bit of personality to your team's conversations. Giphy Support adds a GIF picker to the comment editor on every task. Search Giphy's library, click a GIF, and it appears inline in your comment. Perfect for quick reactions, celebrations, or just keeping things fun. *** ## Enable Giphy Support Giphy Support is **off by default**. A workspace Owner or Admin must enable it first. Go to **Settings → Arca Apps**, find **Giphy Support**, and click its toggle. The GIF button appears in the comment editor for all workspace members immediately. *** ## Insert a GIF in a comment Click any task to open it. Scroll to the comment box at the bottom of the task. Click the **GIF** button in the comment toolbar. Type a keyword to search Giphy, or scroll through the trending GIFs. Click any GIF to insert it into your comment. Submit the comment to share it with your team. # Mindmaps Source: https://docs.getarca.app/arca-apps/mindmaps Build visual mind maps, flowcharts, and diagrams on an infinite canvas directly inside your workspace. Mindmaps gives you a full visual canvas for building mind maps, flowcharts, and diagrams. Add shapes and sticky notes, connect them with styled edges, upload images, and group related areas with section containers. Every canvas auto-saves as you work. ## Enable Mindmaps Mindmaps is **off by default**. A workspace Owner or Admin must enable it first. Go to **Settings → Arca Apps**, find **Mindmaps**, and click its toggle. Once enabled, a **Mindmaps** entry appears in the left sidebar for all workspace members. Learn how to create canvases, add and connect nodes, use keyboard shortcuts, and manage your maps. # Overview Source: https://docs.getarca.app/arca-apps/overview Optional workspace features you can enable or disable. Each app adds a specific capability to your workspace. Arca Apps is a catalog of optional features that you can turn on or off per workspace. Enabling an app makes it available to all workspace members immediately. Disabling it removes it from the interface without deleting any data. Go to **Settings → Arca Apps** to open the catalog. Only workspace **Owners** and **Admins** can enable or disable apps. Some apps are always on and cannot be toggled, their card shows an "Always on" label. # Task Reminders Source: https://docs.getarca.app/arca-apps/task-reminders Set personal reminders on any task and get a notification at exactly the time you choose. Task Reminders lets you schedule one or more personal notifications on any task. You choose when you want to be reminded, whether that's in 5 minutes or 30 days, and Arca sends you a notification at that time. Reminders are personal; only you see the ones you set on a task. Task Reminders is always on and cannot be disabled. *** ## Set a reminder Click any task to open it. Click the **⋯** menu in the task header. Hover over **Remind me** to see the available intervals. Click any option to activate it: | Option | Time before reminder | | ------------- | -------------------- | | In 5 minutes | 5 minutes from now | | In 15 minutes | 15 minutes from now | | In 30 minutes | 30 minutes from now | | In 1 hour | 1 hour from now | | In 2 hours | 2 hours from now | | In 3 hours | 3 hours from now | | Tomorrow | 24 hours from now | | In 7 days | 7 days from now | | In 30 days | 30 days from now | A checkmark appears next to any active reminder. *** ## Set multiple reminders You can activate more than one interval at the same time. For example, you can set both an "In 1 hour" and a "Tomorrow" reminder on the same task. Each one fires independently at the scheduled time. *** ## Remove a reminder Open the **⋯** menu on the task, hover over **Remind me**, and click any checked interval to deactivate it. The checkmark disappears and the reminder is cancelled. *** ## How reminders are delivered When a reminder fires, you receive a notification in your **Inbox**. If you have desktop notifications enabled, a desktop alert appears at the same time. Same goes for mobile push notifications. # Task Templates Source: https://docs.getarca.app/arca-apps/task-templates Save reusable task description templates so your team can create well-structured tasks faster. Task Templates lets you create reusable description templates for your workspace. When creating a task, type `/` in the description field to pick a template and populate the task instantly with pre-written structure. Task Templates is always on and cannot be disabled. Learn how to create templates, apply them with the slash command, and set a default template for your workspace. # Who's Online Source: https://docs.getarca.app/arca-apps/whos-online See which workspace members are currently active so you know who is available to collaborate right now. Who's Online shows a real-time green presence indicator on member avatars throughout Arca. When a teammate is active in the workspace, their avatar shows a green dot. This makes it easy to know who is available before you assign a task, @mention someone in a comment, or start a conversation. Who's Online is always on and cannot be disabled. *** ## Where you see online status Presence indicators appear in several places across the workspace: * **Task assignee picker**: see who is online when assigning a task or creating a new one. * **Settings → Members**: the full member list shows a green dot next to anyone who is currently active. * **Timeline view**: member avatars in the assignee column show live presence. # Keyboard shortcuts Source: https://docs.getarca.app/general-features/keyboard-shortcuts Speed up your workflow with keyboard shortcuts available throughout Arca. Keyboard shortcuts let you create tasks, search, navigate, and manage selections without taking your hands off the keyboard. Once familiar, they significantly speed up daily workflows. ## View all shortcuts Press **Cmd/Ctrl + /** at any time to open the full keyboard shortcuts reference panel inside Arca. Shortcuts are active when the app window is focused. Most shortcuts are ignored when your cursor is in a text input field, so you can type normally without triggering them. Start with **N** for new task and **Cmd+K** for search. These two shortcuts alone will save you significant time during a typical workday. # Member profiles Source: https://docs.getarca.app/general-features/member-profiles View a workspace member's role, online status, points, and active tasks without leaving the current page. Member profiles open as a drawer on the right side of the screen, giving you a quick look at a teammate without navigating away from what you're doing. Arca never shows a member's email address in their profile. This is intentional, workspaces are sometimes shared with external clients, and you shouldn't have to expose your internal team's contact details just because they're collaborating in the same workspace. ## How to open a profile You can open a member's profile from multiple places: * **Task detail page**: click the name of the task's creator in the task sidebar * **Comments and activity**: click any member's avatar in the comments or activity feed * **@mentions**: click a @mention inside a comment to open that person's profile ## What's shown | Field | Description | | ----------------- | ------------------------------------------------------------------------------------------------------ | | **Name** | The member's display name | | **Role** | Their role in the workspace: Owner, Admin, Member, or Viewer | | **Online status** | A live indicator showing whether the member is currently active in the workspace | | **Total points** | Points accumulated from completing tasks on time or early | | **Joined** | The month and year they joined the workspace | | **Working on** | A list of tasks currently assigned to them that are not yet completed, each shown with its status icon | The **Working on** section is only shown if the member has active tasks assigned to them. # Mindmaps Source: https://docs.getarca.app/general-features/mindmaps Build visual mind maps, flowcharts, and diagrams directly inside your workspace. Mindmaps is an optional workspace app that gives you a full visual canvas for building mind maps, flowcharts, and diagrams. You can add shapes, connect them with styled edges, upload images, annotate with sticky notes, and group areas with section containers. Every canvas auto-saves as you work. ## Enable Mindmaps Mindmaps is not enabled by default. A workspace **Owner** or **Admin** must turn it on first. Go to **Settings > Arca Apps**, find the Mindmaps app, and click its toggle. Once enabled, a **Mindmaps** entry appears in the left sidebar for all workspace members. ## Create a mindmap 1. Click **Mindmaps** in the sidebar. 2. Click **New Mindmap** in the top right corner. 3. The editor opens immediately with a blank canvas and a single starter node. ## The canvas The canvas is an infinite workspace. You can zoom in and out, pan by dragging, and rearrange nodes freely. Every change is saved automatically with a short debounce; a **Saved** indicator in the toolbar confirms the last save. ### Tool modes Two tool modes are available in the bottom toolbar: * **Select** (cursor icon): click and drag to select nodes; drag a selection box to select multiple nodes at once. * **Hand** (hand icon): click and drag the canvas to pan without accidentally selecting nodes. Press **S** to switch to Select or **H** to switch to Hand from anywhere on the canvas. ### Adding nodes The toolbar along the bottom of the canvas contains all the node types you can insert. Click any button or press its keyboard shortcut to add a node near the center of your current view. Nodes are placed automatically to avoid overlapping existing content. | Node type | Shortcut | Description | | ----------- | -------- | ---------------------------------------------------------- | | Rectangle | R + R | A standard rounded box; the default node type. | | Circle | R + C | An elliptical node. | | Triangle | R + G | A triangular node. | | Diamond | R + D | A diamond or rhombus shape. | | Hexagon | R + H | A six-sided node. | | Star | R + S | A five-pointed star. | | Sticky note | N | A freeform yellow note. Double-click to edit the text. | | Text | T | A plain text label with no border or fill. | | Section | S | A large transparent container for grouping related nodes. | | Image | I | Upload a JPEG, PNG, WebP, or GIF directly onto the canvas. | ### Editing node labels Double-click any node to enter edit mode and type a new label. Press **Enter**, **Escape**, or click outside the node to confirm. ### Deleting nodes and edges Select one or more nodes or edges and press **Delete** or **Backspace** to remove them. ### Connecting nodes Hover over a node to reveal the gray connection handles on its edges. Drag from any handle to another node to create a connection. You can create a connection between any two nodes regardless of type. ## Edge styles The top-left panel provides three options to control how connections are drawn: * **Smooth**: a smooth curve between the source and target handles. * **Curved**: a gentle arc with a single bend. * **Straight**: a direct line between handles. Switching the edge style updates all existing connections on the canvas immediately. ### Floating edges Enable **Floating edges** in the toolbar to let connections attach to the nearest point on each node rather than to fixed handles. This is useful for complex diagrams where rigid handle positions get in the way. ### Arrowheads Three arrowhead options are available: * **None**: plain line with no arrowhead. * **Open arrow**: an open arrowhead. * **Filled arrow**: a solid filled arrowhead. ## Canvas controls The controls panel in the lower right corner of the canvas provides: * **Zoom in** and **Zoom out** buttons. * **Fit view**: zooms and pans to show all nodes at once, accounting for the toolbar at the bottom. ## Alignment guides When you drag a node, alignment guide lines appear automatically when the node's edges or center align with another node on the canvas. This helps you keep layouts tidy without manual adjustment. ## Keyboard shortcuts | Action | Shortcut | | ------------------------ | --------------------------------------------- | | Undo | Cmd+Z / Ctrl+Z | | Redo | Cmd+Y or Cmd+Shift+Z / Ctrl+Y or Ctrl+Shift+Z | | Duplicate selected nodes | Cmd+D / Ctrl+D | | Edit node label | Enter (single node selected) | | Navigate nodes | Tab / Shift+Tab | | Delete selected | Delete or Backspace | | Select tool | V | | Hand (pan) tool | H | | Add shape | R | | Add text node | T | | Add sticky note | N | | Add section | S | | Add image | I | ## Canvas limit Each mindmap supports up to **500 nodes**. This limit is per canvas and prevents performance degradation on very large diagrams. ## Rename a mindmap Click the title in the toolbar at the top of the editor to edit it inline. Press **Enter** or click outside the title to save. Press **Escape** to cancel. ## Delete a mindmap From the Mindmaps list page, click the menu on a mindmap card and select **Delete**. You will be asked to confirm before the mindmap and all its nodes are permanently removed. # Planned Source: https://docs.getarca.app/general-features/planned See all your dated tasks in one place, automatically grouped by due date so nothing slips through the cracks. The **Planned** page collects every task that has a due date and displays them in a single, date-ordered view. Tasks are grouped automatically so you can see at a glance what is overdue, what needs attention today, and what is coming up next. ## Opening Planned Click **Planned** in the sidebar. A badge on the sidebar item shows the total number of overdue and today's tasks, giving you a heads-up even before you open the page. ## How tasks are grouped Tasks are sorted into date buckets in this fixed order: | Group | Which tasks appear here | | ------------------ | ------------------------------------------------------------------ | | **Overdue** | Tasks with a due date earlier than today | | **Today** | Tasks due today | | **Tomorrow** | Tasks due tomorrow | | **Upcoming dates** | Tasks due on later dates, one group per day in chronological order | | **No due date** | Tasks that have no due date assigned | Within each group, tasks are sorted by due date (earliest first) and then alphabetically by title. Completed and cancelled tasks are never shown in the Planned page, even if they have a due date. ## Sidebar badge The number shown on the **Planned** sidebar item counts all tasks that are either overdue or due today (across any status except completed/cancelled). Tasks due tomorrow or later are not counted. The badge disappears once all those tasks are resolved. ## Taking action on tasks You can act on any task directly from the Planned page without opening it: * **Open task**: click the task row to go to its full detail page * **Change status**: click the status icon on the left * **Change priority**: click the priority indicator * **Change assignees**: click the assignee avatars * **Context menu**: right-click a task to access additional options ## Bulk actions Select multiple tasks by clicking their checkboxes, then use the action bar that appears at the bottom of the screen to: * **Delete** selected tasks * **Change status** for all selected tasks at once * **Change priority** for all selected tasks at once * **Move to list** to reassign all selected tasks to a different list Press **Cmd+A** (macOS) or **Ctrl+A** (Windows/Linux) to select all visible tasks at once. Press **Escape** to clear the selection. ## Which tasks appear here A task appears in the Planned page if **all** of the following are true: * It has a due date or a start date * Its status is not completed or cancelled * You are one of its **assignees** To add a task to the Planned view, assign it to yourself and set a due date from the task detail page or inline from any list. # Search Source: https://docs.getarca.app/general-features/search Instantly find and navigate to tasks, lists, and sections across your workspace. Search lets you jump to any task or section in your workspace without scrolling through lists or remembering where something lives. It's the fastest way to get where you need to go. ## Open search * Press **Cmd+K** on macOS or **Ctrl+K** on Windows and Linux. * Or press **/** anywhere in the app to start searching immediately. * Or click the search icon in the sidebar. ## What search covers Search finds and navigates to: * **Tasks**: matched by title or Id * **Lists**: all lists in your current workspace * **Navigation items**: Inbox, Calendar, Insights, Dashboards, and other sidebar sections * **Settings pages**: Preferences, Members, Labels, Statuses, Billing, and more ## Search tips * Type a few words from the task title or section name; you don't need the full name. * Tasks are searched within your current workspace. * Press **Enter** to open the first result, or use the arrow keys to navigate and select. Use **Cmd+K** , **Ctrl+K** , or **/** any time you need to find something or jump to a section quickly. It's faster than clicking through the sidebar. # Sidebar customization Source: https://docs.getarca.app/general-features/sidebar-customization Tailor the sidebar to show only the sections and items that matter to you. The sidebar is your navigation hub. Arca lets you customize it so you only see what you actually use, keeping it clean, short, and fast to navigate. ## Customize the sidebar Go to **Settings > Preferences** in the sidebar. Find the **Customize sidebar** option and click it. Enable or disable the sections and items you want to show or hide. You can also access sidebar customization by right-clicking any whitespace in the sidebar and choosing **Customize sidebar** from the context menu. ## Personal layout Sidebar customization is per-person; changes you make only affect your own sidebar. Your teammates keep their own layouts. ## What you can toggle The following sidebar items can be shown or hidden individually: * **Inbox**: your notification centre * **Planned**: all dated tasks grouped by due date * **Views**: your saved workspace views * **Dashboards**: charts and analytics (visible to admins and owners only) Hide rarely-used items to keep your sidebar short and scannable. You can always re-enable them from Preferences at any time. # Core concepts Source: https://docs.getarca.app/getting-started/concepts Learn how Arca structures work so you can organize tasks and collaborate effectively. Arca uses a few simple building blocks to organize everything. Understanding them helps you set up your workspace in a way that matches how your team actually works. ## Workspaces A workspace is the top-level container for your team's work; it holds all tasks, lists, folders, members, and settings. Use separate workspaces for distinct teams or projects. Each workspace is fully isolated with its own members, settings, and data. ## Folders and lists Folders and lists are how you organize tasks inside a workspace. * **Folders** group related lists together (for example, a "Marketing" folder might contain lists for "Campaigns", "Content", and "Events"). * **Lists** are containers for tasks. Use them to group tasks by phase, category, milestone, or any other subdivision that makes sense within your workspace. Start simple: create a folder and add a few lists inside it to group tasks by phase or category. ## Tasks Tasks are the core unit of work in Arca. Each task represents one piece of work and can hold everything related to it: * A title and rich description * Status (which stage of your workflow it's in) * Priority (Urgent, High, Medium, Low) * Assignees (who owns it) * Start and due dates * Labels (custom tags) * Subtasks (smaller steps within the task) * Dependencies (other tasks this task is blocked by or related to) * Comments, reactions, and file attachments Keeping all of this on the task means your team never has to dig through email or chat to find context. ## Views Views are personal, saved layouts that let you look at tasks in different ways, filtered, sorted, and formatted for a specific purpose. * **Table:** a spreadsheet-style grid with columns for every field. Great for triaging and bulk updates. * **Board:** drag-and-drop cards grouped by status. Great for sprint boards and visualizing workflow stages. * **Calendar:** tasks plotted on a calendar by due date. Great for deadline planning. * **Timeline:** tasks shown as bars across a time axis. Great for project scheduling and seeing overlaps. Create a saved view once and it is available as a tab you can return to any time, with filters, sort, and layout all preserved. Each member manages their own views independently; views are not shared with the rest of the workspace. ## Dashboards Dashboards show you the big picture. Instead of opening individual lists to understand how work is going, a dashboard surfaces key metrics (task completion, workload by assignee, tasks by status) in a single view. Use dashboards in planning sessions, retrospectives, and check-ins to understand whether work is on track and where bottlenecks are forming. Dashboards are workspace-specific and available to anyone with workspace access. # Download Source: https://docs.getarca.app/getting-started/download Install the Arca desktop app on macOS, Windows, or Linux. ## Download Arca 1. Visit **[https://getarca.app/download](https://getarca.app/download)**. 2. Choose your operating system. 3. Install the app and log in with your Arca account. ## System requirements * **macOS**: 12 or later * **Windows**: Windows 10 or later * **Linux**: Modern distributions with support for AppImage ## Web version The web version of Arca is not yet available. Download the desktop app to get started. # Welcome to Arca Source: https://docs.getarca.app/getting-started/introduction Get started with Arca and learn the core features for managing work and collaborating with your team. Arca Insights Arca Insights Arca is a task management app built for teams who want clarity without complexity. It helps you capture work, assign ownership, track progress, and collaborate, all in one place, without scattered to-do lists or missed commitments. ## Why teams use Arca * **One place for all your work:** tasks, calendar, and conversations live together, so nothing gets lost across chat, email, and spreadsheets * **Clear ownership:** every task has an assignee, so there's never a question of who is responsible * **Real-time collaboration:** comments, mentions, and notifications keep your team aligned without endless status meetings * **Flexible views:** see your work as a list, board, calendar, or timeline based on what you're planning * **Progress at a glance:** dashboards and insights show how work is progressing across your whole workspace ## Get started quickly Understand how Arca structures work: workspaces, folders, lists, and tasks. Install the desktop app on macOS, Windows, or Linux. Start tracking work by creating tasks, assigning teammates, and setting due dates. Save custom views to focus on the tasks that matter most right now. Use Claude, Cline, or other AI tools to manage Arca with natural language via MCP. # Discord Source: https://docs.getarca.app/integrations/discord Get Arca task notifications delivered directly to your Discord server. The Discord integration connects your Arca workspace to a Discord channel so your team receives real-time notifications whenever key task events happen, without leaving Discord. Notifications are delivered as rich embeds with a **View task** button that opens the task directly in Arca. ## Requirements You must be an **Admin** or **Owner** of the Arca workspace to connect and configure the Discord integration. You also need permission to add bots to your Discord server (the **Manage Server** permission), or ask a server admin to complete the setup. *** ## Connect Discord In Arca, click your workspace name in the top-left, then go to **Settings → Integrations**. Find the **Discord** card and click it. Click **Connect**. This opens the Discord authorization page in your browser. Select the server you want to add the Arca bot to, then click **Authorize**. After authorization, you're taken back to the Discord settings page. Use the **Channel** dropdown to select the text channel where notifications should be posted. Only channels where the Arca bot has **Send Messages** permission will appear in the list. If a channel you expect to see is missing, check the channel's permissions in Discord server settings and make sure the Arca bot role has **Send Messages** allowed. Check the event types you want to receive notifications for (see [Notification events](#notification-events) below). Click **Save configuration**. Arca will start posting notifications to the selected channel immediately. *** ## Notification events You choose which events trigger a Discord notification. Each message is a rich embed that includes the event details and a **View task** button linking directly to the task in Arca. | Event | Triggered when | | ------------------ | ----------------------------------- | | Status changes | A task's status is updated | | Task assignments | A task is assigned to a team member | | New comments | A new comment is posted on a task | | Priority changes | A task's priority level is updated | | Due date changes | A task's due date is modified | | Start date changes | A task's start date is modified | *** ## Private channels Discord restricts bot access to private channels. Adding the bot to a private channel grants **View Channel** only, you must explicitly allow **Send Messages** for the bot role. To use a private channel with Arca notifications: 1. Open the private channel in Discord and add the Arca bot as a member. 2. Right-click the channel and select **Edit Channel**. 3. Go to the **Permissions** tab. 4. Find the **Arca bot role** (or the bot's username) and set **Send Messages** to ✅ (green checkmark). 5. Save changes, then go back to **Settings → Integrations → Discord** in Arca and select the channel from the dropdown. *** ## Disconnect Discord To remove the Discord integration from your workspace: 1. Go to **Settings → Integrations → Discord**. 2. Click **Disconnect**. 3. Confirm the action. Disconnecting stops all Discord notifications. Your configuration (selected channel and events) is deleted and will need to be set up again if you reconnect. Only Admins and Owners can disconnect the Discord integration. Disconnecting affects the entire workspace, all members will stop receiving Discord notifications. *** ## Troubleshooting Make sure you have: * Selected at least one event type and clicked **Save configuration** * Selected a channel where the Arca bot has **Send Messages** permission * Performed an action in Arca that matches an enabled event type If the issue persists, try disconnecting and reconnecting the integration. The channel must allow the Arca bot to send messages. Check the channel's permissions in Discord and confirm that the Arca bot role has **Send Messages** enabled. For private channels, also make sure the bot has been added as a member of the channel. If you restricted the bot's **Send Messages** permission after setting up the integration, notifications will silently fail. Go to **Settings → Integrations → Discord**, re-select the channel, and save again. If the channel no longer appears in the dropdown, the bot has lost access, restore the permission in Discord first. # Email Source: https://docs.getarca.app/integrations/email Create tasks by forwarding emails to your workspace's unique email address. The Email integration gives your workspace a unique inbound email address. Forward any email to that address and Arca automatically creates a task from it. The subject becomes the title, the body becomes the description, and attachments are added to the task. ## Requirements You must be an **Admin** or **Owner** of the Arca workspace to enable and configure the Email integration. *** ## Enable the integration In Arca, click your workspace name in the top-left, then go to **Settings → Integrations**. Find the **Email** card and click it. Use the **Default list** dropdown to choose the list where email-created tasks will be placed. A list is required before the integration can be enabled. Use the **Default priority** dropdown to assign a priority to every task created via email. If you leave this blank, tasks are created with no priority. Click **Enable Email Integration**. Arca generates a unique email address for your workspace and displays it on the settings page. *** ## Your workspace email address After enabling the integration, a unique address in the format `arca+@intake.getarca.app` is shown on the settings page. Copy it with the copy button next to the field. Any email sent to this address creates a task in the configured list: | Email field | Mapped to | | ------------------------- | ---------------------------------------------- | | Subject | Task title | | Body (plain text or HTML) | Task description | | Attachments | Task attachments (up to 25 MB total per email) | The email address is unique to your workspace and secret, anyone who has it can create tasks. Keep it private or reset it if it is ever shared accidentally. *** ## Update settings You can change the default list and default priority at any time without resetting your email address: 1. Go to **Settings → Integrations → Email**. 2. Update the **Default list** or **Default priority** fields. 3. Click **Save Settings**. *** ## Reset the email address Resetting generates a new email address and immediately invalidates the old one. Any forwarding rules or contacts using the old address will stop working. 1. Go to **Settings → Integrations → Email**. 2. Scroll to the **Reset Email Address** section and click **Reset**. 3. Confirm the action. Arca generates a new address and displays it on the settings page. The old address stops working immediately after a reset. Update any email clients or forwarding rules that use the previous address. *** ## Disconnect the integration Disconnecting removes the email address permanently. Any emails sent to the old address will no longer create tasks. 1. Go to **Settings → Integrations → Email**. 2. Click **Disconnect** in the actions bar. 3. Confirm the action. You can re-enable the integration at any time to get a new address, but the previous address cannot be restored. *** ## Troubleshooting Check that the integration is still enabled by going to **Settings → Integrations → Email**. If it shows as connected, verify that you forwarded the email to the exact address shown on the settings page, including the `arca+` prefix. Addresses are case-insensitive; extra spaces or characters in the address will cause delivery to fail. The Email integration supports attachments up to 25 MB total per email. If the combined size of all attachments exceeds this limit, attachments may be skipped. Try resending with smaller or fewer files. The integration accepts email from any sender, there is no allowlist. As long as the email is delivered to the correct workspace address, a task will be created regardless of who sent it. Reset the email address immediately from **Settings → Integrations → Email → Reset**. The old address becomes invalid at once and a new one is generated. # GitHub Source: https://docs.getarca.app/integrations/github Sync GitHub issues with Arca tasks and automate task updates from commit messages. The GitHub integration links a GitHub repository to an Arca list so that issues and tasks stay in sync. You can choose one-way sync (GitHub issues flow into Arca) or two-way sync (Arca tasks are also exported to GitHub). Commit message keywords let developers close, reopen, or change task state directly from their terminal without ever opening Arca. ## Requirements * You must be an **Admin** or **Owner** of the Arca workspace to connect and configure the integration. * You need permission to install GitHub Apps on the target GitHub organization or personal account. *** ## Connect GitHub In Arca, click your workspace name in the top-left, then go to **Settings → Integrations**. Find the **GitHub** card and click it. Click **Connect**. You are redirected to GitHub where you install the Arca GitHub App. Choose the organization or account, then select which repositories to grant access to (you can grant access to all repositories or only specific ones). After installation, GitHub redirects you back to Arca. The connection is now active and the integration page shows a connected status. In the integration settings, choose the **Repository** you want to link with the current Arca workspace and the **Arca list** where synced issues should land. These selections are required before any sync features work. Turn on [Issues sync](#issues-sync) and [Magic words](#magic-words) as needed, then click **Save configuration**. *** ## Issues sync Issues sync imports GitHub issues into Arca as tasks and keeps them updated as things change on GitHub. ### Enable issues sync In the integration settings, turn on **Issues sync** and select a **Sync mode** (see below), then save. ### Sync modes GitHub is treated as the source of truth. This mode does the following: * Open GitHub issues are imported into the linked Arca list as tasks. * When a GitHub issue is **closed**, its linked Arca task status is automatically moved to the first `completed` status in your workspace. * Changes made to Arca tasks are not reflected back in GitHub. Everything the one-way mode does, plus: * **Arca tasks are exported to GitHub**: any task in the linked list that does not already have a GitHub issue mapping is pushed to GitHub as a new issue (using the task title and description). * **Title sync**: when a GitHub issue title is edited, the linked Arca task title is updated to match. * **Description sync**: when a GitHub issue body is edited, the linked Arca task description is updated to match. When an Arca task description is edited, the linked GitHub issue body is updated to match. Two-way sync gives you a single source of truth across both platforms. GitHub issues and Arca tasks are kept in alignment automatically. ### Initial sync An initial sync runs automatically (in the background, without blocking your workflow) whenever: * Issues sync is **turned on** for the first time. * Issues sync is already on and you **change the repository**. * Issues sync is already on and you **change the target list**. During initial sync, Arca fetches all open issues from the GitHub repository (excluding pull requests) and creates tasks for any that are not already linked. If two-way mode is selected, Arca also exports all unlinked tasks from the configured list to GitHub. Issues that already have a mapping in Arca are always skipped to prevent duplicates. ### What gets imported When a GitHub issue is imported, Arca creates a task with the following field mapping: | Arca task field | Value | | --------------- | ----------------------------------------------------- | | Title | GitHub issue title | | Description | GitHub issue body (plain text and Markdown preserved) | | Status | First `pending` status in your workspace | | Priority | None | | Reporter | The workspace owner | | List | The configured Arca list | GitHub labels, assignees, and milestones are not imported into Arca fields at this time. Arca does not modify or close issues on GitHub when you change a task's status in Arca. Changes flow from GitHub to Arca, not the other way around for status updates, except when two-way mode exports initial tasks. ### When a GitHub issue is closed When a GitHub issue is closed, the linked Arca task status is updated to the first `completed` status in your workspace. The task's timeline and subscribers are updated in real time, no page refresh needed. ### When a GitHub issue is reopened When a GitHub issue is reopened, the linked Arca task status is automatically moved back to the first `pending` status in your workspace, the same status assigned when the task was originally imported. This happens in real time via webhooks and requires no manual action. The reopen only takes effect if the task is currently in a `completed` status category. If the task was already moved to an `in_progress` status category before the reopen event arrived, its status is left unchanged. ### When a GitHub issue title changes In two-way mode, renaming a GitHub issue title updates the linked Arca task title automatically. This works in real time via GitHub webhooks. ### When a GitHub issue description changes In two-way mode, editing the body of a GitHub issue also updates the linked Arca task description automatically. GitHub issue bodies are written in Markdown; Arca converts them to rich text so they display correctly in the task editor. ### When an Arca task description changes In two-way mode, editing the description of a linked task in Arca pushes the updated content to the corresponding GitHub issue body. The description is converted from Arca's rich text format to Markdown before being sent to GitHub so that formatting (headings, lists, code blocks, task checklists, bold, italic, and links) is preserved correctly. Description sync only works in **two-way** mode. In one-way (From GitHub) mode, descriptions flow from GitHub into Arca during import but subsequent edits on either side are not synced. *** ## Magic words Magic words let developers reference and update Arca tasks directly from commit messages. When a commit is pushed to the linked repository, Arca scans the message for recognized keywords followed by a task identifier and performs the corresponding action. ### Enable magic words In the integration settings, turn on **Magic words** and save. ### Task identifier format Every Arca task has an identifier in the format `WORKSPACE-NUMBER`, for example `MYAPP-42`. The workspace part is the slug of your workspace, and the number is the task's sequential number. You can copy the identifier from the task context menu (`Copy Full ID` button). Identifiers are case-insensitive in commit messages. ### Closing keywords The following keywords, when followed by a task identifier, mark the task as completed by moving it to the first `completed` status in your workspace: ``` fix fixes fixed close closes closed resolve resolves resolved ``` **Example commit messages:** ``` fix MYAPP-42 Closes myapp-7 resolved MYAPP-55: updated the payment flow ``` When a matching keyword is found, Arca: 1. Moves the task to the first `completed` status in your workspace. 2. Sends an in-app notification to all task subscribers (status changed). 3. Updates the task in real time for everyone currently viewing it. The action is skipped if the task is already in a completed status category. ### `Part of` keyword The `Part of` keyword followed by a task identifier logs a relationship between the commit and the task. Example: ``` refactor auth helper, Part of MYAPP-99 ``` This does not change the task's status, priority, or any other field. It is intended for traceability and does not yet trigger a visible action in the Arca UI. Magic words work on any commit pushed to the linked repository, regardless of the branch. Make sure your commit messages follow the `KEYWORD IDENTIFIER` pattern exactly. Extra text before or after the pattern is allowed. *** ## Branch name generation Any workspace member can copy the suggested Git branch name for a task. Open a task and look for the **Copy branch name** option. The format is controlled by the **Branch naming style** setting in the integration configuration: | Style | Format | Example | | ------------------------------ | ----------------------------------- | ------------------------ | | Title and identifier (default) | `{title-slug}-{workspace}-{number}` | `fix-login-bug-myapp-42` | | Identifier and title | `{workspace}-{number}-{title-slug}` | `myapp-42-fix-login-bug` | | Identifier only | `{workspace}-{number}` | `myapp-42` | The title is automatically slugified (lowercase; special characters replaced with `-`; limited to 60 characters). You can change the style at any time in the integration settings without affecting existing branches. *** ## Disconnect GitHub To remove the GitHub integration from your workspace: 1. Go to **Settings → Integrations → GitHub**. 2. Click **Disconnect**. 3. Confirm the action. Disconnecting removes all configuration including the linked repository, the target list, and all feature toggles. Existing Arca tasks that were imported from GitHub remain in your workspace, they are not deleted. The GitHub App installation on your GitHub organization is not uninstalled automatically, you can remove it from **GitHub → Settings → Applications** if you no longer need it. Only Admins and Owners can disconnect the GitHub integration. Disconnecting affects the entire workspace and stops all sync and magic word processing immediately. *** ## Troubleshooting Check the following: * Issues sync is **enabled** and the configuration has been saved. * A **repository** and a **target list** are both selected. * The GitHub App has access to the repository. Go to **GitHub → Settings → Applications → Arca** and confirm the repository is listed under repository access. If the configuration looks correct, try changing the target list to a different one and saving, then back to the original list and saving again to re-trigger the initial sync. Make sure: * **Magic words** is enabled in the integration settings and saved. * The commit message uses one of the recognized keywords (`fix`, `close`, `resolve`, and their variants). * The task identifier format is correct: `WORKSPACE-NUMBER` where `WORKSPACE` is your workspace slug. Check the slug in **Settings → Workspace**. * The repository being pushed to is the one selected in the integration settings. Note: magic words are not retroactive. Only commits pushed after the feature is enabled are processed. If the task was completed via a closing commit or by closing the linked GitHub issue, reopening the GitHub issue will automatically move the Arca task back to `pending`, which allows the next closing commit to fire correctly, no manual action needed. If the task was completed without a linked GitHub issue (for example by manual status change in Arca), reopen it by reopening the corresponding GitHub issue or by changing its status manually in Arca. The initial export runs in the background after you save the configuration. Wait a moment and then refresh GitHub. If issues still do not appear, check that the repository has **Issues** enabled (GitHub repository settings) and that the Arca GitHub App has write permission to the repository. Changing the repository triggers a new initial sync against the new repository. Tasks already imported from the old repository remain in Arca but they are no longer linked to any active GitHub issue. Future webhook events from the old repository are ignored because the integration now points to the new repository. # GitLab Source: https://docs.getarca.app/integrations/gitlab Sync GitLab issues with Arca tasks and automate task updates from commit messages. The GitLab integration links a GitLab project to an Arca list so that issues and tasks stay in sync. You can choose one-way sync (GitLab issues flow into Arca) or two-way sync (Arca tasks are also exported to GitLab). Commit message keywords let developers close, reopen, or change task state directly from their terminal without ever opening Arca. ## Requirements * You must be an **Admin** or **Owner** of the Arca workspace to connect and configure the integration. * You need a GitLab account with access to at least one GitLab project. *** ## Connect GitLab In Arca, click your workspace name in the top-left, then go to **Settings → Integrations**. Find the **GitLab** card and click it. Click **Connect GitLab**. You are redirected to GitLab where you authorize the Arca OAuth application. Review the requested permissions (`api` and `read_user`) and click **Authorize**. After authorization, GitLab redirects you back to Arca. The connection is now active and the integration page shows a connected status with your GitLab username. In the integration settings, choose the **GitLab project** you want to link with the current Arca workspace and the **Arca list** where synced issues should land. These selections are required before any sync features work. Turn on [Issues sync](#issues-sync) and [Magic words](#magic-words) as needed, then click **Save Settings**. *** ## Issues sync Issues sync imports GitLab issues into Arca as tasks and keeps them updated as things change on GitLab. ### Enable issues sync In the integration settings, turn on **Sync GitLab issues** and select a **Sync direction** (see below), then save. ### Sync modes GitLab is treated as the source of truth. This mode does the following: * Open GitLab issues are imported into the linked Arca list as tasks. * When a GitLab issue is **closed**, its linked Arca task status is automatically moved to the first `completed` status in your workspace. * Changes made to Arca tasks are not reflected back in GitLab. Everything the one-way mode does, plus: * **Arca tasks are exported to GitLab**: any task in the linked list that does not already have a GitLab issue mapping is pushed to GitLab as a new issue (using the task title and description). * **Title sync**: when a GitLab issue title is edited, the linked Arca task title is updated to match. * **Description sync**: when a GitLab issue description is edited, the linked Arca task description is updated to match. When an Arca task description is edited, the linked GitLab issue description is updated to match. Two-way sync gives you a single source of truth across both platforms. GitLab issues and Arca tasks are kept in alignment automatically. ### Initial sync An initial sync runs automatically (in the background, without blocking your workflow) whenever: * Issues sync is **turned on** for the first time. * Issues sync is already on and you **change the project**. * Issues sync is already on and you **change the target list**. During initial sync, Arca fetches all open issues from the GitLab project and creates tasks for any that are not already linked. If two-way mode is selected, Arca also exports all unlinked tasks from the configured list to GitLab. Issues that already have a mapping in Arca are always skipped to prevent duplicates. ### What gets imported When a GitLab issue is imported, Arca creates a task with the following field mapping: | Arca task field | Value | | --------------- | ------------------------------------------------------------ | | Title | GitLab issue title | | Description | GitLab issue description (plain text and Markdown preserved) | | Status | First `pending` status in your workspace | | Priority | None | | Reporter | The workspace owner | | List | The configured Arca list | GitLab labels, assignees, and milestones are not imported into Arca fields at this time. Arca does not modify or close issues on GitLab when you change a task's status in Arca. Changes flow from GitLab to Arca, not the other way around for status updates, except when two-way mode exports initial tasks. ### When a GitLab issue is closed When a GitLab issue is closed, the linked Arca task status is updated to the first `completed` status in your workspace. The task's timeline and subscribers are updated in real time, no page refresh needed. ### When a GitLab issue is reopened When a GitLab issue is reopened, the linked Arca task status is automatically moved back to the first `pending` status in your workspace, the same status assigned when the task was originally imported. This happens in real time via webhooks and requires no manual action. The reopen only takes effect if the task is currently in a `completed` status category. If the task was already moved to an `in_progress` status category before the reopen event arrived, its status is left unchanged. ### When a GitLab issue title changes In two-way mode, renaming a GitLab issue title updates the linked Arca task title automatically. This works in real time via GitLab webhooks. ### When a GitLab issue description changes In two-way mode, editing the description of a GitLab issue also updates the linked Arca task description automatically. GitLab issue descriptions are written in Markdown; Arca converts them to rich text so they display correctly in the task editor. ### When an Arca task description changes In two-way mode, editing the description of a linked task in Arca pushes the updated content to the corresponding GitLab issue description. The description is converted from Arca's rich text format to Markdown before being sent to GitLab so that formatting (headings, lists, code blocks, task checklists, bold, italic, and links) is preserved correctly. Description sync only works in **two-way** mode. In one-way (From GitLab) mode, descriptions flow from GitLab into Arca during import but subsequent edits on either side are not synced. *** ## Magic words Magic words let developers reference and update Arca tasks directly from commit messages. When a commit is pushed to the linked project, Arca scans the message for recognized keywords followed by a task identifier and performs the corresponding action. ### Enable magic words In the integration settings, turn on **Magic words** and save. ### Task identifier format Every Arca task has an identifier in the format `WORKSPACE-NUMBER`, for example `MYAPP-42`. The workspace part is the slug of your workspace, and the number is the task's sequential number. You can copy the identifier from the task context menu (`Copy Full ID` button). Identifiers are case-insensitive in commit messages. ### Closing keywords The following keywords, when followed by a task identifier, mark the task as completed by moving it to the first `completed` status in your workspace: ``` fix fixes fixed close closes closed resolve resolves resolved ``` **Example commit messages:** ``` fix MYAPP-42 Closes myapp-7 resolved MYAPP-55: updated the payment flow ``` When a matching keyword is found, Arca: 1. Moves the task to the first `completed` status in your workspace. 2. Sends an in-app notification to all task subscribers (status changed). 3. Updates the task in real time for everyone currently viewing it. The action is skipped if the task is already in a completed status category. ### `Part of` keyword The `Part of` keyword followed by a task identifier logs a relationship between the commit and the task. Example: ``` refactor auth helper, Part of MYAPP-99 ``` This does not change the task's status, priority, or any other field. It is intended for traceability and does not yet trigger a visible action in the Arca UI. Magic words work on any commit pushed to the linked project, regardless of the branch. Make sure your commit messages follow the `KEYWORD IDENTIFIER` pattern exactly. Extra text before or after the pattern is allowed. *** ## Branch name generation Any workspace member can copy the suggested Git branch name for a task. Open a task and look for the **Copy GitLab branch name** option in the task context menu. The format is controlled by the **Branch naming style** setting in the integration configuration: | Style | Format | Example | | ------------------------------ | ----------------------------------- | ------------------------ | | Title and identifier (default) | `{title-slug}-{workspace}-{number}` | `fix-login-bug-myapp-42` | | Identifier and title | `{workspace}-{number}-{title-slug}` | `myapp-42-fix-login-bug` | | Identifier only | `{workspace}-{number}` | `myapp-42` | The title is automatically slugified (lowercase; special characters replaced with `-`; limited to 60 characters). You can change the style at any time in the integration settings without affecting existing branches. *** ## Disconnect GitLab To remove the GitLab integration from your workspace: 1. Go to **Settings → Integrations → GitLab**. 2. Click **Disconnect GitLab**. 3. Confirm the action. Disconnecting removes all configuration including the linked project, the target list, and all feature toggles. Existing Arca tasks that were imported from GitLab remain in your workspace; they are not deleted. The webhook registered on the GitLab project is automatically removed when you disconnect. Only Admins and Owners can disconnect the GitLab integration. Disconnecting affects the entire workspace and stops all sync and magic word processing immediately. *** ## Troubleshooting Check the following: * Issues sync is **enabled** and the configuration has been saved. * A **project** and a **target list** are both selected. * Your GitLab account has at least Developer access to the selected project. If the configuration looks correct, try changing the target list to a different one and saving, then back to the original list and saving again to re-trigger the initial sync. Make sure: * **Magic words** is enabled in the integration settings and saved. * The commit message uses one of the recognized keywords (`fix`, `close`, `resolve`, and their variants). * The task identifier format is correct: `WORKSPACE-NUMBER` where `WORKSPACE` is your workspace slug. Check the slug in **Settings → Workspace**. * The repository being pushed to belongs to the GitLab project selected in the integration settings. Note: magic words are not retroactive. Only commits pushed after the feature is enabled are processed. If the task was completed via a closing commit or by closing the linked GitLab issue, reopening the GitLab issue will automatically move the Arca task back to `pending`, which allows the next closing commit to fire correctly; no manual action needed. If the task was completed without a linked GitLab issue (for example by manual status change in Arca), reopen it by reopening the corresponding GitLab issue or by changing its status manually in Arca. The initial export runs in the background after you save the configuration. Wait a moment and then refresh GitLab. If issues still do not appear, confirm that your GitLab account has permission to create issues in the selected project (Developer role or higher). Changing the project triggers a new initial sync against the new project. Tasks already imported from the old project remain in Arca but they are no longer linked to any active GitLab issue. Future webhook events from the old project are ignored because the integration now points to the new project. Arca registers the webhook automatically when you save settings with a project selected. If events are not arriving, try saving the configuration again to force a webhook re-registration. Also confirm that your Arca server is publicly accessible from the internet; local or internal-only deployments will not receive GitLab webhook deliveries without a tunnel. # Google Calendar Source: https://docs.getarca.app/integrations/google-calendar View your Google Calendar events alongside your tasks in Arca's Calendar and Timeline views. The Google Calendar integration pulls events from your primary Google Calendar into Arca so you can see your meetings and personal schedule in the same place as your tasks. The connection is personal, each team member connects their own Google account, and your calendar events are only visible to you. ## How it works Arca connects to your Google Calendar with read-only access. It syncs events from one month in the past to three months in the future and stores them in a local cache. From that point on, changes you make in Google Calendar (edits, deletions, new events) are reflected in Arca automatically through a real-time push notification from Google. Events appear in **purple** in the Calendar and Timeline views, making them easy to distinguish from your Arca tasks at a glance. Arca only reads your calendar. Nothing is ever written back to Google Calendar from Arca. ## Requirements You must have a Google account with an active Google Calendar. No special Google Workspace plan is required. *** ## Connect Google Calendar In Arca, click your workspace name in the top-left, then go to **Settings → Integrations**. Find the **Google Calendar** card and click it. Click **Connect**. Your browser opens Google's authorization page. Sign in with the Google account whose calendar you want to connect, then click **Allow**. You are redirected back to Arca. The integration page shows your connection date, confirming the sync is active. Your calendar events will appear in the Calendar and Timeline views within a few moments. *** ## Where events appear Synced events are visible in two views in Arca: **Calendar view**: events appear on their scheduled day in purple alongside your tasks. Click an event to see its details. **Timeline view**: events appear as purple bars spanning their duration, plotted on the same timeline as your tasks. *** ## What is synced Arca syncs events from your **primary Google Calendar only**. The following are included: * Standard meetings and events with a start and end time * All-day events The following are not included: * Google Tasks (to-do items created in Google Calendar) * Google Calendar birthday events * Events from secondary or shared calendars * Cancelled events Each event displays its title, date and time, description, location, a link to open it in Google Calendar, and a Google Meet link when one is present. *** ## Real-time updates After connecting, Arca registers a push notification channel with Google. When you change, add, or delete an event in Google Calendar, Google notifies Arca and a fresh sync runs automatically. The updated events appear in Arca within seconds. This works in the background without any action needed on your part. *** ## Meeting reminders You can get notified before Google Meet meetings that appear in your synced calendar. Meeting reminders are **off by default** and only apply to events that include a Google Meet link (not Google Tasks or events without video conferencing). Go to **Settings → Integrations → Google Calendar**. Turn on **Remind me before Google Meet meetings**. Select **1 to 3** reminder offsets from: 30 minutes, 1 hour, 2 hours, 3 hours, 4 hours, 5 hours, 6 hours, 12 hours, 24 hours, or 72 hours before the meeting starts. For example, you might choose 2 hours, 1 hour, and 30 minutes. Click **Save settings**. Reminders are delivered to your Arca inbox and through push notifications on supported devices. When a reminder arrives, tap it from your inbox, desktop notification, or mobile push notification to open the Google Meet link directly. Meeting reminders require a paid Arca workspace plan, the same as viewing calendar events in Calendar and Timeline views. *** ## Disconnect Google Calendar To remove the integration: 1. Go to **Settings → Integrations → Google Calendar**. 2. Click **Disconnect**. 3. Confirm the action. Disconnecting revokes Arca's access, removes all cached calendar events from your account, and stops the real-time sync. Your calendar data in Arca is deleted immediately. This only affects your own account and has no impact on other team members. *** ## Troubleshooting Events only appear in the Calendar and Timeline views, not in task lists. Make sure you are looking at the correct view. It can also take a few moments after connecting for the initial sync to complete. Try refreshing the page (use **Cmd+R** on Mac or **Ctrl+R** on Windows if you are using the desktop app). Arca syncs events within a window of one month in the past to three months in the future. Events outside that range will not appear. If recent changes are not showing up, try disconnecting and reconnecting to trigger a fresh sync. Arca syncs your primary calendar only. Events from secondary calendars, shared calendars, or Google Tasks are not included. # Intercom Source: https://docs.getarca.app/integrations/intercom Link Intercom conversations to Arca tasks, send internal notes from Arca, and automate conversation reopening based on task activity. The Intercom integration connects your Arca workspace to your Intercom account so your support and product teams can work from a shared context. You can link any Intercom conversation to an Arca task, view conversation details without leaving Arca, send internal notes to Intercom from a task, and automatically reopen conversations when task activity demands a follow-up. ## Requirements * You must be an **Admin** or **Owner** of the Arca workspace to connect and configure the integration. * You must have access to the target Intercom workspace and the ability to authorize third-party apps in it. *** ## Connect Intercom In Arca, click your workspace name in the top-left, then go to **Settings → Integrations**. Find the **Intercom** card and click it. Before connecting, select the **default list** where tasks created from Intercom conversations will be added. This is required to proceed. Click **Connect Intercom**. You are redirected to Intercom to authorize the connection. Grant the requested permissions and confirm. After authorization, Intercom redirects you back to Arca. The integration page shows a connected badge with the name of the linked Intercom workspace. *** ## Link conversations to tasks Once connected, any workspace member can link one or more Intercom conversations to an Arca task. 1. Open a task in Arca. 2. In the task detail panel, find the **Intercom** section. 3. Search for a conversation by its ID or by subject text. 4. Select the conversation to link it. The linked conversation appears as a card in the task, under the task attachments section. Click the card to view conversation details in a side drawer without leaving Arca. You can link multiple conversations to the same task and unlink them at any time. Numeric searches match by exact conversation ID. Text searches match against the conversation subject. Messenger and chat conversations that have no subject are matched by checking their message body (the first message of the conversation). *** ## Send internal notes from Arca From a linked conversation card inside any task, any workspace member can post an internal note directly to the Intercom conversation without opening Intercom. Internal notes are visible only to agents in Intercom and are not shown to customers. *** ## Create tasks from Intercom conversations You can create a new Arca task from an Intercom conversation. The task is placed in the default list you configured during setup. After creation the conversation is automatically linked to the new task. *** ## Automate conversation reopening Arca can automatically reopen linked Intercom conversations when specific task events occur. When a conversation is reopened, Arca also posts an internal note explaining the reason so your agents have context. You configure this behavior per workspace in **Settings → Integrations → Intercom → Automate conversation reopening**. | Trigger | Default | | --------------------------- | ------- | | A task is completed | On | | A task is canceled | Off | | A comment is made in a task | Off | Each toggle is independent. You can turn them on or off in any combination. Changes take effect immediately after you save. Only conversations that are directly linked to the task at the time of the event are affected. Conversations linked after the event are not retroactively reopened. *** ## Disconnect Intercom To remove the Intercom integration from your workspace: 1. Go to **Settings → Integrations → Intercom**. 2. Click **Disconnect Intercom**. 3. Confirm the action. Disconnecting removes the stored access token and stops all automatic conversation reopening. Existing conversation links stored on tasks are also removed and cannot be recovered. You can reconnect at any time, but all previous links will need to be re-created. Only Admins and Owners can disconnect the Intercom integration. Disconnecting affects the entire workspace for all members. *** ## Troubleshooting Make sure you selected a default list before clicking Connect. If the OAuth page showed a denial message, you may have clicked Cancel on the Intercom authorization screen. Try again and confirm the permissions. Check that the relevant toggle in **Automate conversation reopening** is turned on and that you clicked **Save** after enabling it. Also confirm that the conversation was linked to the task before the triggering event occurred. Conversations with an email subject are searchable by subject text. Messenger and chat conversations that have no subject can be found by searching for their numeric conversation ID (visible in the Intercom conversation URL) or by typing part of the message body text. The workspace name shown in Arca is fetched during the OAuth flow and cached. Disconnect the integration and reconnect to refresh it. # Integrations Source: https://docs.getarca.app/integrations/introduction Connect Arca to the tools your team already uses. Arca integrates with third-party services so you can bring your workflows together in one place. Some integrations are workspace-level (one connection shared by all members), while others are personal (each team member connects their own account). ## Managing integrations Go to **Settings → Integrations** in your Arca workspace to connect, configure, or disconnect any integration. Workspace-level integrations require an **Admin** or **Owner** role to manage. Personal integrations can be connected by any workspace member. Each integration card shows a checkmark when it is active, giving you a quick overview of what is connected. # More integrations Source: https://docs.getarca.app/integrations/more Arca connects with more tools than are documented here. This section only documents integrations that require extra setup steps or have enough complexity to benefit from a dedicated guide. Arca includes additional integrations that are simple enough to set up without a guide, each one has a description and instructions directly on its settings page. To browse and enable them, go to **Settings → Integrations** in your Arca workspace. # n8n Source: https://docs.getarca.app/integrations/n8n Automate your Arca workflows using the official Arca node in n8n. The Arca n8n integration lets you build automated workflows that read from and write to your Arca workspaces. You can create tasks when events happen in other tools, update task statuses based on external triggers, post comments automatically, and much more. The integration ships as two nodes: an action node for performing operations and a trigger node for listening to events. Arca is a verified node on n8n and is available directly in the node search, no manual installation required. ## Requirements You need a self-hosted or cloud n8n instance and an Arca API key. Any workspace member can generate an API key regardless of their role. *** ## Get your API key In Arca, click your avatar in the bottom-left sidebar and select **Settings**. Select the **API Keys** section from the settings menu. Click **Add new key**. Copy the key and store it somewhere safe. Arca only shows it once. *** ## Add the node In your n8n workflow, click **+** to add a node and search for **Arca**. The node is verified by n8n and appears directly in the search results, no manual installation needed. When prompted for credentials, select the **Arca API** credential, paste your API key, and save. n8n verifies the key against your account before saving. *** ## Arca node (actions) The **Arca** node lets you perform operations on your workspace from any workflow step. Select a **Resource** and then an **Operation** to configure what the node does. ### User | Operation | What it does | | ---------------- | -------------------------------------------------------- | | Get Current User | Returns the profile of the account that owns the API key | ### Workspace | Operation | What it does | | --------------- | ------------------------------------------------ | | List Workspaces | Returns all workspaces accessible to the API key | | Get Workspace | Returns the details of a specific workspace | | List Members | Returns all members of a workspace | ### Folder | Operation | What it does | | ------------- | ----------------------------------------------------------- | | List Folders | Returns all folders in a workspace | | Create Folder | Creates a new folder with an optional icon and color | | Update Folder | Renames or changes the icon and color of an existing folder | | Delete Folder | Permanently deletes a folder | ### List | Operation | What it does | | ----------- | ----------------------------------------------------------- | | List Lists | Returns all lists in a workspace | | Create List | Creates a new list with an optional folder, icon, and color | | Update List | Renames, moves, or reskins an existing list | | Delete List | Permanently deletes a list | ### Task | Operation | What it does | | ----------- | --------------------------------------------------------------------------------------------- | | List Tasks | Returns tasks in a workspace, optionally filtered by list (paginated, 50 per page by default) | | Get Task | Returns a single task by its ID | | Create Task | Creates a task with title, description, priority, status, due date, and start date | | Update Task | Edits any field on an existing task, including moving it to another list | | Delete Task | Permanently deletes a task | **Priority values:** `urgent` `high` `medium` `low` `none` ### Status | Operation | What it does | | ------------- | -------------------------------------------------------------------------- | | List Statuses | Returns all custom statuses in a workspace | | Create Status | Creates a new status with a category, icon, and color | | Update Status | Edits an existing status | | Delete Status | Deletes a status, with an option to reassign tasks to another status first | **Category values:** `pending` `in_progress` `completed` `cancelled` ### Label | Operation | What it does | | ------------ | ------------------------------------------ | | List Labels | Returns all labels in a workspace | | Create Label | Creates a new label with an optional color | | Update Label | Renames or recolors an existing label | | Delete Label | Permanently deletes a label | ### Comment | Operation | What it does | | -------------- | ------------------------------ | | List Comments | Returns all comments on a task | | Create Comment | Posts a new comment on a task | *** ## Arca Trigger node The **Arca Trigger** node starts a workflow whenever Arca sends a webhook event. It outputs the full event payload so downstream nodes can act on it. ### Setup Create a new workflow in n8n and add the **Arca Trigger** node as the starting node. Click the node to open its settings. Copy the webhook URL shown in the panel (the production URL). In Arca, go to **Settings → Webhooks**, create a new webhook, and paste the n8n URL as the endpoint. Select the events you want to receive. Back in n8n, publish the workflow. The trigger is now live and will start the workflow whenever a matching Arca event fires. ### Supported events The trigger accepts any event belonging to these resource types: | Prefix | Covers | | ---------- | -------------------------------------------------------- | | `task.*` | Task created, updated, deleted, status changed, and more | | `folder.*` | Folder created, updated, deleted | | `list.*` | List created, updated, deleted | The trigger passes all events through. To react to a specific event type, add an **IF** or **Switch** node after the trigger and check the `{{ $json.event }}` value (for example `task.created`). ### Output data Each trigger execution outputs an object with the following fields: | Field | Description | | ----------- | ------------------------------------------------------------- | | `event` | The event type string, for example `task.created` | | `timestamp` | ISO 8601 timestamp of when the event occurred | | `workspace` | The workspace where the event happened | | `user` | The Arca user who triggered the event | | `before` | The resource state before the change (null for create events) | | `after` | The resource state after the change (null for delete events) | For more information about the event structure and available fields, see the [Webhooks seciton](/administration/webhooks). ### Optional auth token To verify that incoming webhook calls genuinely come from Arca, enable the **Auth Token** option in the Arca Trigger node settings and set a secret string. Then, in Arca's webhook configuration, enter the same string in the **Auth token** field. The trigger rejects any request that does not present the correct token. *** ## Use as an AI agent tool The Arca node supports being used as a tool inside n8n AI agent workflows. Add it as a tool to any AI Agent node and the agent can query and update your Arca workspace using natural language instructions. *** ## Limitations Task listing returns 50 results per page by default. To retrieve more tasks, increment the **Page** parameter and loop until the result count drops below the page size. Comment operations are limited to listing and creating. Editing or deleting existing comments is not supported through n8n. Workspace operations are read-only. Creating or deleting workspaces must be done directly in Arca. There is no "get folder by ID" or "get list by ID" operation. Use the list operations and filter the results in your workflow. # Slack Source: https://docs.getarca.app/integrations/slack Get Arca notifications delivered directly to your Slack workspace. The Slack integration connects your Arca workspace to a Slack channel so your team receives real-time notifications whenever key task events happen, without leaving Slack. ## Requirements You must be an **Admin** or **Owner** of the Arca workspace to connect and configure Slack. You also need permission to install apps in your Slack workspace, or you can ask a Slack admin to approve the installation. *** ## Connect Slack In Arca, click your workspace name in the top-left, then go to **Settings → Integrations**. Find the **Slack** card and click it. Click **Connect**. This opens the Slack authorization page in your browser. Choose the Slack workspace you want to connect, then click **Allow**. After authorization, you're taken back to the Slack settings page. Use the **Channel** dropdown to select the channel where notifications should be posted. Only channels the Arca bot has been invited to will appear in the list. Public channels are available automatically. For private channels, first run `/invite @Arca` inside that channel, then refresh the page in Arca to see the updated channel list. Check the event types you want to receive notifications for (see [Notification events](#notification-events) below). Click **Save configuration**. Arca will start posting notifications to the selected channel immediately. *** ## Notification events You choose which events trigger a Slack notification. Each message includes the event details and a **View task** button that opens the task directly in Arca. | Event | Triggered when | | ---------------- | -------------------------------------- | | Task created | A new task is created in the workspace | | Status changed | A task's status is updated | | Assigned | A task is assigned to a team member | | Commented | A new comment is posted on a task | | Priority changed | A task's priority level is updated | | Due date changed | A task's due date is modified | *** ## Manage private channels Slack restricts bot access to private channels for security reasons. A private channel will not appear in the channel picker unless the Arca bot has been explicitly invited. To add a private channel: 1. Open the private channel in Slack. 2. Type `/invite @Arca` and send the message. 3. Go back to **Settings → Integrations → Slack** in Arca (or refresh the page if already there) and click the channel dropdown. The channel will now appear. *** ## Disconnect Slack To remove the Slack integration from your workspace: 1. Go to **Settings → Integrations → Slack**. 2. Click **Disconnect**. 3. Confirm the action. Disconnecting removes the bot from your workspace and stops all Slack notifications. Your configuration (selected channel and events) is also deleted and will need to be set up again if you reconnect. Only Admins and Owners can disconnect the Slack integration. Disconnecting affects the entire workspace, all members will stop receiving Slack notifications. *** ## Troubleshooting Make sure you have selected at least one event type and clicked **Save configuration**, chosen a channel the Arca bot is a member of, and performed an action in Arca that matches an enabled event type. If the bot was recently invited to the channel, try disconnecting and reconnecting the integration. The Arca bot can only see channels it has been invited to. For private channels, run `/invite @Arca` inside the channel first, then refresh the page in Arca and open the channel dropdown. Try disconnecting and reconnecting. If the issue persists, the bot token may have been revoked from the Slack side. Visit **Slack → Settings → Manage Apps** and check if Arca still has an active installation. # Telegram Source: https://docs.getarca.app/integrations/telegram Receive personal Arca task notifications directly in your Telegram chat. The Telegram integration sends task notifications to a Telegram chat of your choice. Unlike other integrations, Telegram is configured per user, each person connects their own bot, so notifications go directly to you rather than a shared channel. Each notification includes a **View task** link that opens the task directly in Arca. The Telegram integration is personal. Every team member who wants Telegram notifications must set it up individually under their own account settings. There are no workspace-level Telegram settings. *** ## How it works You create a dedicated Telegram bot using Telegram's official @BotFather tool. Arca uses that bot's token to send messages to a chat you choose, such as a private conversation with the bot or a group chat. *** ## Connect Telegram Open Telegram and search for **@BotFather**. Start a conversation, then send the command `/newbot`. Follow the prompts to give your bot a name and username. @BotFather will reply with a **bot token**, copy it and keep it ready. Find your new bot in Telegram (search for the username you just created) and send it any message, or tap **Start**. This step is required so Arca can detect your chat when you verify the token. In Arca, go to **Settings → Integrations → Telegram**. Paste the bot token you copied from @BotFather into the token field, then click **Verify**. Arca will contact the bot and retrieve the chats available to it. If verification fails, make sure you sent a message to the bot first (step 2). The bot cannot detect a chat until you've initiated contact with it. Use the **Chat** dropdown to choose where notifications should be delivered. Any chat where your bot is active and has received a message will appear here. Select the event types you want to receive notifications for. See [Notification events](#notification-events) below for the full list. Click **Connect Telegram**. Arca will save your configuration and begin sending notifications to the selected chat. *** ## Notification events You choose which events trigger a Telegram message. Each message includes the event details and a **View task** link that opens the task directly in Arca. | Event | Triggered when | | -------------------- | --------------------------------------------------------- | | Status changes | A task's status is updated | | Task assignments | You are assigned to a task | | New comments | A new comment is posted on a task you're subscribed to | | Mentions | You are @mentioned in a comment | | Priority changes | A task's priority level is updated | | Due date changes | A task's due date is modified | | Start date changes | A task's start date is modified | | Due date reminders | A task you're subscribed to is approaching its due date | | Start date reminders | A task you're subscribed to is approaching its start date | *** ## Update your notification settings To change which events trigger a notification after you've connected: 1. Go to **Settings → Integrations → Telegram**. 2. Check or uncheck the event types you want. 3. Click **Save** to apply your changes. *** ## Disconnect Telegram To remove your Telegram integration: 1. Go to **Settings → Integrations → Telegram**. 2. Click **Disconnect**. 3. Confirm the action. Disconnecting removes your bot token and chat settings. All Telegram notifications stop immediately. You can reconnect at any time by repeating the setup steps above. *** ## Troubleshooting Make sure you sent your bot at least one message in Telegram before clicking **Verify**. Telegram only allows a bot to see a chat after the user has initiated contact. Send any message to your bot, then try verifying again. Check the following: * Make sure at least one event type is selected and saved. * Confirm you have not blocked or deleted the bot in Telegram. * Perform an action in Arca that matches an enabled event type to trigger a test notification. If notifications still do not arrive, try disconnecting and reconnecting the integration. The bot can only see chats where it has received a message. Open Telegram, find your bot, and send it a message. Then go back to **Settings → Integrations → Telegram** and click **Verify** again to refresh the chat list. Add your bot to the group in Telegram, then send any message in the group (for example, `/start`). Once the bot has received a message in the group, it will appear in the chat dropdown when you verify your token in Arca. # Zapier Source: https://docs.getarca.app/integrations/zapier Automate Arca with thousands of apps using the official Zapier integration. The Arca Zapier integration lets you build automated workflows (Zaps) that connect Arca to over 9,000 other apps without writing any code. You can create tasks when events happen in other tools; post comments automatically; add labels based on external triggers; and much more. The integration is available on the [Zapier platform](https://zapier.com/apps/arca-1/integrations). ## Requirements You need a Zapier account (free tier is available) and an Arca API key. Any workspace member can generate an API key regardless of their role. *** ## Get your API key In Arca, click your workspace in the top-left sidebar, select **Settings**, then go to the **API Keys** section. Click **Add new key**. Enter a label (for example, "Zapier"), then select the scopes you want to grant. At minimum, enable write access for the resources you plan to use (Tasks, Comments, and so on). Optionally set an expiry date. Click **Create key**. Arca displays the key once, copy it immediately and store it somewhere safe. It cannot be retrieved again after you close the dialog. *** ## Connect Arca to Zapier Go to [zapier.com/apps/arca-1/integrations](https://zapier.com/apps/arca-1/integrations) and click **Connect Arca**, or start building a new Zap and select Arca as one of the apps. When Zapier prompts for credentials, select **API Key** as the authentication method and paste the key you copied from Arca settings. Zapier verifies the key before saving. Choose a trigger from another app (or use a Zapier built-in trigger like Schedule), then add an Arca action. Map the fields and publish the Zap. *** ## Supported actions The Arca Zapier integration supports both read and write actions across all core resources. ### Workspaces | Action | What it does | | ---------------------- | --------------------------------------------------- | | List Workspaces | Returns all workspaces the API key owner belongs to | | Get Workspace | Returns a single workspace by its ID | | List Workspace Members | Returns all members of a workspace | ### Folders | Action | What it does | | ------------- | -------------------------------------------------------------- | | List Folders | Returns all folders in a workspace | | Create Folder | Creates a new folder in a workspace | | Update Folder | Updates one or more properties of a folder | | Delete Folder | Permanently deletes a folder and all lists and tasks inside it | ### Lists | Action | What it does | | ----------- | -------------------------------------------------- | | List Lists | Returns all lists in a workspace | | Create List | Creates a new list inside a folder | | Update List | Updates one or more properties of a list | | Delete List | Permanently deletes a list and all tasks inside it | ### Tasks | Action | What it does | | ----------- | ------------------------------------------------ | | List Tasks | Returns a paginated list of tasks in a workspace | | Get Task | Returns a single task with full details | | Create Task | Creates a new task in a workspace | | Update Task | Updates one or more fields of a task | | Delete Task | Permanently deletes a task | ### Statuses | Action | What it does | | ------------- | --------------------------------------------- | | List Statuses | Returns all statuses defined in a workspace | | Create Status | Creates a new status in a workspace | | Update Status | Updates one or more properties of a status | | Delete Status | Permanently deletes a status from a workspace | ### Labels | Action | What it does | | ------------ | -------------------------------------------- | | List Labels | Returns all labels defined in a workspace | | Create Label | Creates a new label in a workspace | | Update Label | Updates one or more properties of a label | | Delete Label | Permanently deletes a label from a workspace | ### Comments | Action | What it does | | ------------------ | --------------------------------------- | | List Task Comments | Returns all comments on a task | | Create Comment | Posts a new top-level comment on a task | The full and up-to-date list of supported actions is always available on the [Arca integration page on Zapier](https://zapier.com/apps/arca-1/integrations). *** ## Example Zaps Here are a few common automation patterns you can build with Arca on Zapier: * **Form submission → Arca task**: When a new response is submitted in Typeform or Google Forms, automatically create a task in Arca with the submission details. * **Email → Arca task**: When a starred or labeled email arrives in Gmail, create a task in Arca so nothing falls through the cracks. * **CRM deal → Arca task**: When a deal moves to a new stage in HubSpot or Pipedrive, automatically create a follow-up task in Arca for your team. * **Support ticket → Arca task**: When a new ticket is opened in Intercom or Zendesk, create a corresponding task in Arca to track the resolution. * **Sentry error → Arca task**: When a new error or exception is captured in Sentry, automatically create a task in Arca so your team can track and prioritize the fix alongside other work. *** ## Limitations Zapier automation is one-directional: Arca does not send trigger events to Zapier. If you need webhook-based triggers from Arca, use the [n8n integration](/integrations/n8n) or [Arca webhooks](/administration/webhooks) directly. # List settings Source: https://docs.getarca.app/lists/list-settings Switch between list and board view, group tasks, sort them, and control what's visible. Each list has a settings menu (the sliders icon in the top-right of the list page) that controls how tasks are displayed for you. Changes apply only to that list. ## View type Switch between two layouts: * **List:** a top-to-bottom view of all tasks. Best for reviewing, triaging, and working through items one by one. * **Board:** a kanban-style column view where each column represents a group. Best for visualizing workflow stages or seeing work distributed by assignee or priority. ## Group by Grouping organizes tasks into sections based on a shared field: | Option | What it does | | ------------ | ----------------------------------------- | | **None** | No grouping; tasks appear in a flat list | | **Assignee** | Tasks are grouped under each assignee | | **Status** | Tasks are grouped by their workflow stage | | **Priority** | Tasks are grouped by priority level | In board view, **Group by Status** gives you a classic kanban board where columns represent each stage of your workflow. ## Sort by Sorting controls the order tasks appear within each group (or within the full list when no grouping is applied): | Option | Best for | | --------------- | --------------------------------------------- | | **Name** | Finding a specific task alphabetically | | **Create date** | Reviewing the newest tasks first | | **Start date** | Seeing what should be starting soon | | **Due date** | Prioritizing by deadline | | **Priority** | Working through the most critical tasks first | Choose **ascending** or **descending** direction alongside any sort option. ## Show completed tasks Toggle **Show completed** on or off to include or hide tasks that have reached a completed status. Turn it off to keep your focus on work still in progress, and turn it on when you need to review what's been done. ## Properties The **Properties** section at the bottom of the settings menu controls which property badges are shown on task cards in the list. The following properties can be toggled on or off: | Property | What it shows on each task card | | -------------- | --------------------------------------------- | | **Assignee** | The avatar of the member assigned to the task | | **Labels** | Any labels attached to the task | | **Start date** | The task start date | | **Due date** | The task due date | Any [custom fields](/administration/custom-fields) defined in the workspace also appear here and can be toggled individually. ### Workspace default vs. list override Property visibility works at two levels: * **Workspace default**: set in **Settings > Preferences**, under the Properties section. Applies to every list that has not been customized individually. * **List override**: set from the list's own settings menu. When you toggle any property in a list, that list gets its own independent configuration and no longer follows the workspace default. To go back to following the workspace default, click **Reset to workspace default** at the bottom of the Properties section. The list then inherits whatever the workspace default is, including any future changes made at the workspace level. # Assign tasks Source: https://docs.getarca.app/tasks/assign Assign tasks to teammates so everyone knows who is responsible. Assigning a task removes ambiguity. When every task has an owner, your team knows exactly who is responsible and nothing slips through the cracks. An unassigned task is an ownerless task, and ownerless tasks don't get done. ## How to assign a task There are three ways to assign a task: **From the task detail panel:** Click the task title to open the task detail panel. Find the **Assignees** field in the right-hand sidebar. Choose people from the dropdown. You can assign as many people as needed. **From the list or board view:** * **Right-click** a task item to open the context menu, then choose **Assignee**. * **Click the assignee avatar(s)** on the task item directly to add or change assignees without opening the task. ## Tips for effective assignments * **Assign before the meeting ends:** if a task comes out of a discussion, assign it immediately while everyone's attention is on it. * **Check for unassigned tasks regularly:** periodically scan your lists for tasks without assignees and make sure each one has a clear owner. * **Filter views by assignee:** create a view filtered to your name to see exactly what's on your plate for the day or week. If someone doesn't appear in the assignee list, they're not a member of the workspace yet. Invite them from **Settings > Members**. Assigned users are automatically subscribed to the task and receive notifications when it's updated, commented on, or has its status changed. And anyone can unsubscribe from the task if they don't want to receive updates, but it's generally best to stay subscribed to tasks you own so you don't miss important changes. Anyone who makes changes to a task is automatically subscribed to it, so if you comment on a task or change its status, you'll get notifications about future updates until you choose to unsubscribe. # Attachments Source: https://docs.getarca.app/tasks/attachments Attach files to tasks so your team has everything they need in one place. Keeping files attached to tasks means your team doesn't have to dig through email threads, shared drives, or chat messages to find what they need. Everything relevant to a task lives with the task. ## Add an attachment Open a task and click the **paperclip icon** in the task sidebar. Select one or more files from your computer to upload. ## Download or remove attachments * **Supported file formats** (images, PDFs, and similar) open in a preview popup when clicked. From there, use the **Download** button to save the file. * **Unsupported formats** are downloaded directly when clicked. * Use the delete action to remove an attachment you no longer need. ## What to attach * **Design files:** mockups, specs, or screenshots for a visual or UI task * **Reference documents:** briefs, research, or requirements that give context to the assignee * **Bug evidence:** error logs, screen recordings, or reproduction steps for a bug report * **Deliverables:** completed work like reports, exports, or final assets submitted for review Attachments are accessible to all workspace members who can view the task. Avoid uploading files that shouldn't be shared with the full workspace. Workspace owners can restrict who may upload files and which file types are allowed from **Settings > Workspace security**. See [Workspace security](/administration/workspace-security). # Comments and reactions Source: https://docs.getarca.app/tasks/comments-and-reactions Discuss work, share feedback, and react to updates directly on tasks. When decisions and feedback live inside the task, anyone who opens it later gets full context instantly. No need to dig through chat logs or ask "what did we decide about this?" Comments keep the conversation attached to the work where it belongs. ## Comments Each task has a comment section where the team can discuss details, share updates, and record decisions. Comments are organized as **threads**: each comment is its own topic, and teammates can reply directly within it to keep that conversation in one place. * Add a comment using the input box at the bottom of the task detail. * Use formatting (bold, lists, code blocks) to make longer comments readable. * Edit or delete your own comments at any time. * Once a thread topic is resolved, any member can **mark it as resolved** to collapse it. Resolved threads stay accessible if you need to refer back, but they're hidden by default so the task stays clean and easy to read. ### Mention teammates Type `@username` in a comment to mention someone. They'll receive a notification even if they're not already following the task, making it easy to loop in someone who needs to weigh in. Mentioning a member also **automatically subscribes them** to the task so they stay updated on future changes. They can unsubscribe at any time if they no longer need to follow it. ## Reactions React to a task with an emoji to give quick, lightweight feedback without leaving a full comment. * Click the emoji button in the task detail to add a reaction. * Reactions are visible to everyone who can see the task. * The task reporter receives a notification when a new reaction is added. Use reactions for quick acknowledgments ("👍 looks good" or "✅ confirmed") so you don't clutter the comment thread with one-word replies. ## Keep discussions on the task When a decision gets made in a meeting or chat, add a comment to the task summarizing it. This creates a permanent record and means your team doesn't have to rely on memory or search through old messages when they come back to the task later. # Create tasks Source: https://docs.getarca.app/tasks/create Add new tasks to your workspace and start tracking work quickly.