{
+ this.showSlashMenu = true;
+ this.slashRange = args.range;
+ this.slashSearchTerm = args.text || '';
+ this.updateSlashMenuPosition(args.range.from);
+ return false;
+ },
+ onChange: args => {
+ this.slashRange = args.range;
+ this.slashSearchTerm = args.text;
+ return false;
+ },
+ onExit: () => {
+ this.slashSearchTerm = '';
+ this.showSlashMenu = false;
+ this.slashMenuPosition = null;
+ return false;
+ },
+ onKeyDown: ({ event }) => {
+ return (
+ event.keyCode === 13 &&
+ this.showSlashMenu &&
+ this.$refs.slashMenu?.hasItems
+ );
+ },
+ });
+ },
+ updateSlashMenuPosition(pos) {
+ if (!editorView) return;
+ const coords = editorView.coordsAtPos(pos);
+ const editorRect = this.$refs.editor.getBoundingClientRect();
+ const isRtl = getComputedStyle(this.$refs.editor).direction === 'rtl';
+ this.slashMenuPosition = {
+ top: coords.bottom - editorRect.top + SLASH_MENU_OFFSET,
+ ...(isRtl
+ ? { right: editorRect.right - coords.right }
+ : { left: coords.left - editorRect.left }),
+ };
+ },
+ removeSlashTriggerText() {
+ if (!editorView || !this.slashRange) return;
+ const { from, to } = this.slashRange;
+ editorView.dispatch(editorView.state.tr.delete(from, to));
+ state = editorView.state;
+ },
+ executeSlashCommand(actionKey) {
+ if (!editorView) return;
+
+ this.removeSlashTriggerText();
+
+ const { schema } = editorView.state;
+ const commandMap = {
+ strong: () =>
+ toggleMark(schema.marks.strong)(
+ editorView.state,
+ editorView.dispatch
+ ),
+ em: () =>
+ toggleMark(schema.marks.em)(editorView.state, editorView.dispatch),
+ strike: () =>
+ toggleMark(schema.marks.strike)(
+ editorView.state,
+ editorView.dispatch
+ ),
+ code: () =>
+ toggleMark(schema.marks.code)(editorView.state, editorView.dispatch),
+ h1: () =>
+ toggleBlockType(schema.nodes.heading, { level: 1 })(
+ editorView.state,
+ editorView.dispatch
+ ),
+ h2: () =>
+ toggleBlockType(schema.nodes.heading, { level: 2 })(
+ editorView.state,
+ editorView.dispatch
+ ),
+ h3: () =>
+ toggleBlockType(schema.nodes.heading, { level: 3 })(
+ editorView.state,
+ editorView.dispatch
+ ),
+ bulletList: () =>
+ wrapInList(schema.nodes.bullet_list)(
+ editorView.state,
+ editorView.dispatch
+ ),
+ orderedList: () =>
+ wrapInList(schema.nodes.ordered_list)(
+ editorView.state,
+ editorView.dispatch
+ ),
+ insertTable: () => {
+ const { table, table_row, table_header, table_cell, paragraph } =
+ schema.nodes;
+ const headerCells = [0, 1, 2].map(() =>
+ table_header.createAndFill(null, paragraph.create())
+ );
+ const dataCells = [0, 1, 2].map(() =>
+ table_cell.createAndFill(null, paragraph.create())
+ );
+ const headerRow = table_row.create(null, headerCells);
+ const dataRow = table_row.create(null, dataCells);
+ const tableNode = table.create(null, [headerRow, dataRow]);
+ const tr = editorView.state.tr.replaceSelectionWith(tableNode);
+ editorView.dispatch(tr.scrollIntoView());
+ },
+ };
+
+ const command = commandMap[actionKey];
+ if (command) {
+ command();
+ state = editorView.state;
+ this.emitOnChange();
+ editorView.focus();
+ }
+ },
contentFromEditor() {
if (editorView) {
return ArticleMarkdownSerializer.serialize(editorView.state.doc);
@@ -262,7 +399,8 @@ export default {
// Get the editor's width
const editorWidth = editor.offsetWidth;
- const menubarWidth = 480; // Menubar width (adjust as needed (px))
+ const menubar = editor.querySelector('.ProseMirror-menubar');
+ const menubarWidth = menubar ? menubar.scrollWidth : 480;
// Get the end position of the selection
const { bottom: endBottom, right: endRight } = editorView.coordsAtPos(to);
@@ -290,7 +428,15 @@ export default {
-
diff --git a/app/javascript/dashboard/components/widgets/WootWriter/SlashCommandMenu.vue b/app/javascript/dashboard/components/widgets/WootWriter/SlashCommandMenu.vue
new file mode 100644
index 000000000..d74d889b2
--- /dev/null
+++ b/app/javascript/dashboard/components/widgets/WootWriter/SlashCommandMenu.vue
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
+
diff --git a/app/javascript/dashboard/components/widgets/conversation/ConversationHeader.vue b/app/javascript/dashboard/components/widgets/conversation/ConversationHeader.vue
index 55252d6da..4edfd643c 100644
--- a/app/javascript/dashboard/components/widgets/conversation/ConversationHeader.vue
+++ b/app/javascript/dashboard/components/widgets/conversation/ConversationHeader.vue
@@ -45,6 +45,7 @@ const backButtonUrl = computed(() => {
const conversationTypeMap = {
conversation_through_mentions: 'mention',
+ conversation_through_participating: 'participating',
conversation_through_unattended: 'unattended',
};
return conversationListPageURL({
diff --git a/app/javascript/dashboard/components/widgets/conversation/CopilotEditorSection.vue b/app/javascript/dashboard/components/widgets/conversation/CopilotEditorSection.vue
index bdd537d92..17d6712d4 100644
--- a/app/javascript/dashboard/components/widgets/conversation/CopilotEditorSection.vue
+++ b/app/javascript/dashboard/components/widgets/conversation/CopilotEditorSection.vue
@@ -16,10 +16,6 @@ defineProps({
type: String,
default: '',
},
- isPopout: {
- type: Boolean,
- default: false,
- },
});
const emit = defineEmits([
@@ -69,7 +65,6 @@ const onSend = () => {
:generated-content="generatedContent"
:min-height="4"
:enabled-menu-options="[]"
- :is-popout="isPopout"
@focus="onFocus"
@blur="onBlur"
@clear-selection="clearEditorSelection"
diff --git a/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue b/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue
index bc0b6c946..6b6e3d2b2 100644
--- a/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue
+++ b/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue
@@ -1,7 +1,7 @@
-
-
-
diff --git a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue
index a5122094e..d18be0caa 100644
--- a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue
+++ b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue
@@ -81,13 +81,7 @@ export default {
CopilotReplyBottomPanel,
},
mixins: [inboxMixin, fileUploadMixin, keyboardEventListenerMixins],
- props: {
- popOutReplyBox: {
- type: Boolean,
- default: false,
- },
- },
- emits: ['update:popOutReplyBox'],
+ emits: ['toggleEditorSize'],
setup() {
const {
uiSettings,
@@ -797,7 +791,6 @@ export default {
this.clearMessage();
this.hideEmojiPicker();
- this.$emit('update:popOutReplyBox', false);
}
},
sendMessageAsMultipleMessages(message, copilotAcceptedMessage = '') {
@@ -1217,8 +1210,9 @@ export default {
file => !file?.isRecordedAudio
);
},
- togglePopout() {
- this.$emit('update:popOutReplyBox', !this.popOutReplyBox);
+ toggleEditorSize() {
+ this.$emit('toggleEditorSize');
+ this.$nextTick(() => this.messageEditor?.focusEditorInputField());
},
onSubmitCopilotReply() {
const acceptedMessage = this.copilot.accept();
@@ -1244,9 +1238,8 @@ export default {
:is-message-length-reaching-threshold="isMessageLengthReachingThreshold"
:characters-remaining="charactersRemaining"
:editor-content="message"
- :popout-reply-box="popOutReplyBox"
@set-reply-mode="setReplyMode"
- @toggle-popout="togglePopout"
+ @toggle-editor-size="toggleEditorSize"
@toggle-copilot="copilot.toggleEditor"
@execute-copilot-action="executeCopilotAction"
/>
@@ -1275,7 +1268,7 @@ export default {
v-if="showEmojiPicker"
v-on-clickaway="hideEmojiPicker"
:class="{
- 'emoji-dialog--expanded': isOnExpandedLayout || popOutReplyBox,
+ 'emoji-dialog--expanded': isOnExpandedLayout,
}"
:on-click="addIntoEditor"
/>
@@ -1299,7 +1292,6 @@ export default {
:show-copilot-editor="copilot.showEditor.value"
:is-generating-content="copilot.isGenerating.value"
:generated-content="copilot.generatedContent.value"
- :is-popout="popOutReplyBox"
:placeholder="$t('CONVERSATION.FOOTER.COPILOT_MSG_INPUT')"
@focus="onFocus"
@blur="onBlur"
diff --git a/app/javascript/dashboard/components/widgets/conversation/ResizableEditorWrapper.vue b/app/javascript/dashboard/components/widgets/conversation/ResizableEditorWrapper.vue
new file mode 100644
index 000000000..4d5c041ac
--- /dev/null
+++ b/app/javascript/dashboard/components/widgets/conversation/ResizableEditorWrapper.vue
@@ -0,0 +1,154 @@
+
+
+
+
+
diff --git a/app/javascript/dashboard/composables/spec/useAutomation.spec.js b/app/javascript/dashboard/composables/spec/useAutomation.spec.js
index 2e07f1671..e90d9ef53 100644
--- a/app/javascript/dashboard/composables/spec/useAutomation.spec.js
+++ b/app/javascript/dashboard/composables/spec/useAutomation.spec.js
@@ -92,7 +92,9 @@ describe('useAutomation', () => {
case 'assign_team':
return teams;
case 'assign_agent':
- return agents;
+ return options.addNoneToListFn
+ ? options.addNoneToListFn(options.agents)
+ : options.agents;
case 'send_email_to_team':
return teams;
case 'send_message':
@@ -240,7 +242,11 @@ describe('useAutomation', () => {
expect(getActionDropdownValues('add_label')).toEqual(labels);
expect(getActionDropdownValues('assign_team')).toEqual(teams);
- expect(getActionDropdownValues('assign_agent')).toEqual(agents);
+ expect(getActionDropdownValues('assign_agent')).toEqual([
+ { id: 'nil', name: 'AUTOMATION.NONE_OPTION' },
+ { id: 'last_responding_agent', name: 'AUTOMATION.LAST_RESPONDING_AGENT' },
+ ...agents,
+ ]);
expect(getActionDropdownValues('send_email_to_team')).toEqual(teams);
expect(getActionDropdownValues('send_message')).toEqual([]);
expect(getActionDropdownValues('add_sla')).toEqual(slaPolicies);
diff --git a/app/javascript/dashboard/composables/spec/useEditableAutomation.spec.js b/app/javascript/dashboard/composables/spec/useEditableAutomation.spec.js
index c6177e9a2..42ba92bee 100644
--- a/app/javascript/dashboard/composables/spec/useEditableAutomation.spec.js
+++ b/app/javascript/dashboard/composables/spec/useEditableAutomation.spec.js
@@ -16,7 +16,20 @@ describe('useEditableAutomation', () => {
return [];
}),
- getActionDropdownValues: vi.fn(),
+ getActionDropdownValues: vi.fn(actionName => {
+ if (actionName === 'assign_agent') {
+ return [
+ { id: 'nil', name: 'None' },
+ {
+ id: 'last_responding_agent',
+ name: 'Last Responding Agent',
+ },
+ { id: 1, name: 'Agent 1' },
+ ];
+ }
+
+ return [];
+ }),
});
});
@@ -51,4 +64,35 @@ describe('useEditableAutomation', () => {
},
]);
});
+
+ it('rehydrates last responding agent as a selected action option', () => {
+ const automation = {
+ event_name: 'conversation_created',
+ conditions: [],
+ actions: [
+ {
+ action_name: 'assign_agent',
+ action_params: ['last_responding_agent'],
+ },
+ ],
+ };
+ const automationActionTypes = [
+ { key: 'assign_agent', inputType: 'search_select' },
+ ];
+
+ const { formatAutomation } = useEditableAutomation();
+ const result = formatAutomation(automation, [], {}, automationActionTypes);
+
+ expect(result.actions).toEqual([
+ {
+ action_name: 'assign_agent',
+ action_params: [
+ {
+ id: 'last_responding_agent',
+ name: 'Last Responding Agent',
+ },
+ ],
+ },
+ ]);
+ });
});
diff --git a/app/javascript/dashboard/composables/spec/useMacros.spec.js b/app/javascript/dashboard/composables/spec/useMacros.spec.js
index e7f6aa495..58ea78c15 100644
--- a/app/javascript/dashboard/composables/spec/useMacros.spec.js
+++ b/app/javascript/dashboard/composables/spec/useMacros.spec.js
@@ -119,24 +119,30 @@ describe('useMacros', () => {
const { getMacroDropdownValues } = useMacros();
expect(getMacroDropdownValues('add_label')).toHaveLength(mockLabels.length);
expect(getMacroDropdownValues('assign_team')).toHaveLength(
- mockTeams.length
- );
+ mockTeams.length + 1
+ ); // +1 for "None"
expect(getMacroDropdownValues('assign_agent')).toHaveLength(
- mockAgents.length + 1
- ); // +1 for "Self"
+ mockAgents.length + 2
+ ); // +2 for "None" and "Self"
});
- it('returns teams for assign_team and send_email_to_team types', () => {
+ it('returns teams with "None" option for assign_team and teams only for send_email_to_team', () => {
const { getMacroDropdownValues } = useMacros();
- expect(getMacroDropdownValues('assign_team')).toEqual(mockTeams);
+ const assignTeamResult = getMacroDropdownValues('assign_team');
+ expect(assignTeamResult[0]).toEqual({
+ id: 'nil',
+ name: 'AUTOMATION.NONE_OPTION',
+ });
+ expect(assignTeamResult.slice(1)).toEqual(mockTeams);
expect(getMacroDropdownValues('send_email_to_team')).toEqual(mockTeams);
});
- it('returns agents with "Self" option for assign_agent type', () => {
+ it('returns agents with "None" and "Self" options for assign_agent type', () => {
const { getMacroDropdownValues } = useMacros();
const result = getMacroDropdownValues('assign_agent');
- expect(result[0]).toEqual({ id: 'self', name: 'Self' });
- expect(result.slice(1)).toEqual(mockAgents);
+ expect(result[0]).toEqual({ id: 'nil', name: 'AUTOMATION.NONE_OPTION' });
+ expect(result[1]).toEqual({ id: 'self', name: 'Self' });
+ expect(result.slice(2)).toEqual(mockAgents);
});
it('returns formatted labels for add_label and remove_label types', () => {
@@ -172,8 +178,11 @@ describe('useMacros', () => {
const { getMacroDropdownValues } = useMacros();
expect(getMacroDropdownValues('add_label')).toEqual([]);
- expect(getMacroDropdownValues('assign_team')).toEqual([]);
+ expect(getMacroDropdownValues('assign_team')).toEqual([
+ { id: 'nil', name: 'AUTOMATION.NONE_OPTION' },
+ ]);
expect(getMacroDropdownValues('assign_agent')).toEqual([
+ { id: 'nil', name: 'AUTOMATION.NONE_OPTION' },
{ id: 'self', name: 'Self' },
]);
});
diff --git a/app/javascript/dashboard/composables/useAutomationValues.js b/app/javascript/dashboard/composables/useAutomationValues.js
index 709aba20b..69f87d427 100644
--- a/app/javascript/dashboard/composables/useAutomationValues.js
+++ b/app/javascript/dashboard/composables/useAutomationValues.js
@@ -121,8 +121,19 @@ export default function useAutomationValues() {
* @returns {Array} An array of action dropdown values.
*/
const getActionDropdownValues = type => {
+ let agentsList = agents.value;
+ if (type === 'assign_agent') {
+ agentsList = [
+ {
+ id: 'last_responding_agent',
+ name: t('AUTOMATION.LAST_RESPONDING_AGENT'),
+ },
+ ...agentsList,
+ ];
+ }
+
return getActionOptions({
- agents: agents.value,
+ agents: agentsList,
labels: labels.value,
teams: teams.value,
slaPolicies: slaPolicies.value,
diff --git a/app/javascript/dashboard/composables/useKeyboardNavigableList.js b/app/javascript/dashboard/composables/useKeyboardNavigableList.js
index 9bf3eb8ff..aa9fb9e1d 100644
--- a/app/javascript/dashboard/composables/useKeyboardNavigableList.js
+++ b/app/javascript/dashboard/composables/useKeyboardNavigableList.js
@@ -12,11 +12,14 @@ import { useKeyboardEvents } from './useKeyboardEvents';
/**
* Wrap the action in a function that calls the action and prevents the default event behavior.
+ * Only prevents default when items are available to navigate.
* @param {Function} action - The action to be called.
+ * @param {import('vue').Ref
} items - A ref to the array of selectable items.
* @returns {{action: Function, allowOnFocusedInput: boolean}} An object containing the action and a flag to allow the event on focused input.
*/
-const createAction = action => ({
+const createAction = (action, items) => ({
action: e => {
+ if (!items.value?.length) return;
action();
e.preventDefault();
},
@@ -38,15 +41,14 @@ const createKeyboardEvents = (
items
) => {
const events = {
- ArrowUp: createAction(moveSelectionUp),
- 'Control+KeyP': createAction(moveSelectionUp),
- ArrowDown: createAction(moveSelectionDown),
- 'Control+KeyN': createAction(moveSelectionDown),
+ ArrowUp: createAction(moveSelectionUp, items),
+ 'Control+KeyP': createAction(moveSelectionUp, items),
+ ArrowDown: createAction(moveSelectionDown, items),
+ 'Control+KeyN': createAction(moveSelectionDown, items),
};
- // Adds an event handler for the Enter key if the onSelect function is provided.
if (typeof onSelect === 'function') {
- events.Enter = createAction(() => items.value?.length > 0 && onSelect());
+ events.Enter = createAction(onSelect, items);
}
return events;
diff --git a/app/javascript/dashboard/composables/useMacros.js b/app/javascript/dashboard/composables/useMacros.js
index 437690eff..52aacd73f 100644
--- a/app/javascript/dashboard/composables/useMacros.js
+++ b/app/javascript/dashboard/composables/useMacros.js
@@ -15,6 +15,11 @@ export const useMacros = () => {
const teams = computed(() => getters['teams/getTeams'].value);
const agents = computed(() => getters['agents/getVerifiedAgents'].value);
+ const withNoneOption = options => [
+ { id: 'nil', name: t('AUTOMATION.NONE_OPTION') },
+ ...(options || []),
+ ];
+
/**
* Get dropdown values based on the specified type
* @param {string} type - The type of dropdown values to retrieve
@@ -23,10 +28,15 @@ export const useMacros = () => {
const getMacroDropdownValues = type => {
switch (type) {
case 'assign_team':
+ return withNoneOption(teams.value);
case 'send_email_to_team':
return teams.value;
case 'assign_agent':
- return [{ id: 'self', name: 'Self' }, ...agents.value];
+ return [
+ ...withNoneOption(),
+ { id: 'self', name: 'Self' },
+ ...agents.value,
+ ];
case 'add_label':
case 'remove_label':
return labels.value.map(i => ({
diff --git a/app/javascript/dashboard/constants/editor.js b/app/javascript/dashboard/constants/editor.js
index 08fcc45d9..378d303b4 100644
--- a/app/javascript/dashboard/constants/editor.js
+++ b/app/javascript/dashboard/constants/editor.js
@@ -167,6 +167,7 @@ export const FORMATTING = {
export const ARTICLE_EDITOR_MENU_OPTIONS = [
'strong',
'em',
+ 'strike',
'link',
'undo',
'redo',
@@ -177,6 +178,7 @@ export const ARTICLE_EDITOR_MENU_OPTIONS = [
'h3',
'imageUpload',
'code',
+ 'insertTable',
];
/**
diff --git a/app/javascript/dashboard/constants/globals.js b/app/javascript/dashboard/constants/globals.js
index 21303efcb..4fbc8174b 100644
--- a/app/javascript/dashboard/constants/globals.js
+++ b/app/javascript/dashboard/constants/globals.js
@@ -12,6 +12,11 @@ export default {
SNOOZED: 'snoozed',
ALL: 'all',
},
+ CONVERSATION_TYPE: {
+ MENTION: 'mention',
+ PARTICIPATING: 'participating',
+ UNATTENDED: 'unattended',
+ },
SORT_BY_TYPE: {
LAST_ACTIVITY_AT_ASC: 'last_activity_at_asc',
LAST_ACTIVITY_AT_DESC: 'last_activity_at_desc',
diff --git a/app/javascript/dashboard/helper/URLHelper.js b/app/javascript/dashboard/helper/URLHelper.js
index a4b3f32b4..76a5d8bd4 100644
--- a/app/javascript/dashboard/helper/URLHelper.js
+++ b/app/javascript/dashboard/helper/URLHelper.js
@@ -51,6 +51,7 @@ export const conversationListPageURL = ({
} else if (conversationType) {
const urlMap = {
mention: 'mentions/conversations',
+ participating: 'participating/conversations',
unattended: 'unattended/conversations',
};
url = `accounts/${accountId}/${urlMap[conversationType]}`;
diff --git a/app/javascript/dashboard/helper/specs/URLHelper.spec.js b/app/javascript/dashboard/helper/specs/URLHelper.spec.js
index 224a1df8b..cd7479509 100644
--- a/app/javascript/dashboard/helper/specs/URLHelper.spec.js
+++ b/app/javascript/dashboard/helper/specs/URLHelper.spec.js
@@ -40,6 +40,15 @@ describe('#URL Helpers', () => {
'/app/accounts/1/custom_view/1'
);
});
+
+ it('should return url to participating conversations', () => {
+ expect(
+ conversationListPageURL({
+ accountId: 1,
+ conversationType: 'participating',
+ })
+ ).toBe('/app/accounts/1/participating/conversations');
+ });
});
describe('conversationUrl', () => {
it('should return direct conversation URL if activeInbox is nil', () => {
diff --git a/app/javascript/dashboard/helper/specs/macrosHelper.spec.js b/app/javascript/dashboard/helper/specs/macrosHelper.spec.js
index d4c8dc5fb..fb5b62b38 100644
--- a/app/javascript/dashboard/helper/specs/macrosHelper.spec.js
+++ b/app/javascript/dashboard/helper/specs/macrosHelper.spec.js
@@ -45,6 +45,10 @@ describe('#resolveTeamIds', () => {
const resolvedTeams = '⚙️ sales team, 🤷♂️ fayaz';
expect(resolveTeamIds(teams, [1, 2])).toEqual(resolvedTeams);
});
+
+ it('resolves nil as None', () => {
+ expect(resolveTeamIds(teams, ['nil'])).toEqual('None');
+ });
});
describe('#resolveLabels', () => {
@@ -59,6 +63,10 @@ describe('#resolveAgents', () => {
const resolvedAgents = 'John Doe';
expect(resolveAgents(agents, [1])).toEqual(resolvedAgents);
});
+
+ it('resolves nil and self values', () => {
+ expect(resolveAgents(agents, ['nil', 'self'])).toEqual('None, Self');
+ });
});
describe('#getFileName', () => {
diff --git a/app/javascript/dashboard/helper/validations.js b/app/javascript/dashboard/helper/validations.js
index e425047a2..eaea81eb7 100644
--- a/app/javascript/dashboard/helper/validations.js
+++ b/app/javascript/dashboard/helper/validations.js
@@ -125,6 +125,7 @@ const validateSingleAction = action => {
'mute_conversation',
'snooze_conversation',
'resolve_conversation',
+ 'remove_assigned_agent',
'remove_assigned_team',
'open_conversation',
'pending_conversation',
diff --git a/app/javascript/dashboard/i18n/locale/am/agentBots.json b/app/javascript/dashboard/i18n/locale/am/agentBots.json
index dc92016ab..87c9ff2b3 100644
--- a/app/javascript/dashboard/i18n/locale/am/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/am/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "ምስጢሩን ወደ ክሊፕቦርድ ቅዳ",
+ "COPY_SUCCESS": "ምስጢሩ ወደ ክሊፕቦርድ ተቀድሷል",
+ "TOGGLE": "የምስጢሩን ማየት አሳይ/ደብቅ",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "ተጠናቀቀ",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/am/automation.json b/app/javascript/dashboard/i18n/locale/am/automation.json
index 22a9735f4..a9d62b236 100644
--- a/app/javascript/dashboard/i18n/locale/am/automation.json
+++ b/app/javascript/dashboard/i18n/locale/am/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "የግል ማስታወሻ",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/am/components.json b/app/javascript/dashboard/i18n/locale/am/components.json
index 0a2542a84..a75d35b08 100644
--- a/app/javascript/dashboard/i18n/locale/am/components.json
+++ b/app/javascript/dashboard/i18n/locale/am/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/am/contact.json b/app/javascript/dashboard/i18n/locale/am/contact.json
index fd87f279f..1cfdaf020 100644
--- a/app/javascript/dashboard/i18n/locale/am/contact.json
+++ b/app/javascript/dashboard/i18n/locale/am/contact.json
@@ -20,6 +20,7 @@
"CALL": "ደውል",
"CALL_INITIATED": "ለእውነተኛው እውቀት መደወል እየተከናወነ ነው…",
"CALL_FAILED": "ጥሪውን መጀመር አልቻልንም። እባክዎ ደግመው ይሞክሩ።.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "የድምፅ ኢንቦክስ ይምረጡ"
},
diff --git a/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json
index aea8e4578..f8fa3e8d6 100644
--- a/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "እባክዎ የWebhook URLዎን ያስገቡ",
"ERROR": "እባክዎ ትክክለኛ አድራሻ ያስገቡ"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "ምስጢሩን ወደ ክሊፕቦርድ ቅዳ",
+ "COPY_SUCCESS": "ምስጢሩ ወደ ክሊፕቦርድ ተቀድሷል",
+ "TOGGLE": "የምስጢሩን ማየት አሳይ/ደብቅ",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "የድር ጣቢያ ዶሜን",
"PLACEHOLDER": "የድር ጣቢያዎን ዶሜን ያስገቡ (ለምሳሌ፡ acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/am/integrations.json b/app/javascript/dashboard/i18n/locale/am/integrations.json
index 978721642..22ee57eff 100644
--- a/app/javascript/dashboard/i18n/locale/am/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/am/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "ብልጽግና ተጠቃሚ መሣሪያ ተሰርዟል",
"ERROR_MESSAGE": "ብልጽግና መሣሪያውን ማስወገድ አልተሳካም"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/am/macros.json b/app/javascript/dashboard/i18n/locale/am/macros.json
index e12f0ca73..67a5c5003 100644
--- a/app/javascript/dashboard/i18n/locale/am/macros.json
+++ b/app/javascript/dashboard/i18n/locale/am/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mute Conversation",
diff --git a/app/javascript/dashboard/i18n/locale/am/settings.json b/app/javascript/dashboard/i18n/locale/am/settings.json
index 166af46fd..6264307a8 100644
--- a/app/javascript/dashboard/i18n/locale/am/settings.json
+++ b/app/javascript/dashboard/i18n/locale/am/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "ፊርማው በተሳካ ሁኔታ ተቀምጧል",
"IMAGE_UPLOAD_ERROR": "ምስሉን ማስገባት አልተቻለም! እባክዎ እንደገና ይሞክሩ",
"IMAGE_UPLOAD_SUCCESS": "ምስሉ በተሳካ ሁኔታ ታክሏል። እባክዎ ማስቀመጫ ለማስቀመጥ ላይ ይጫኑ",
- "IMAGE_UPLOAD_SIZE_ERROR": "የምስል መጠን ከ{size}MB በታች መሆን አለበት"
+ "IMAGE_UPLOAD_SIZE_ERROR": "የምስል መጠን ከ{size}MB በታች መሆን አለበት",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "የመልእክት ፊርማ",
diff --git a/app/javascript/dashboard/i18n/locale/am/signup.json b/app/javascript/dashboard/i18n/locale/am/signup.json
index 4a90fd322..4cca4136d 100644
--- a/app/javascript/dashboard/i18n/locale/am/signup.json
+++ b/app/javascript/dashboard/i18n/locale/am/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "የማረጋገጫ ኢሜል እንደገና ላክ",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ar/agentBots.json b/app/javascript/dashboard/i18n/locale/ar/agentBots.json
index 97fd7d87e..92fa1351d 100644
--- a/app/javascript/dashboard/i18n/locale/ar/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ar/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "تعذر تحديث الروبوت. يرجى المحاولة مرة أخرى."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "رمز المصادقة",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/ar/automation.json b/app/javascript/dashboard/i18n/locale/ar/automation.json
index 509cd7313..878cb5d75 100644
--- a/app/javascript/dashboard/i18n/locale/ar/automation.json
+++ b/app/javascript/dashboard/i18n/locale/ar/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "إضافة ملاحظة خاصة",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "البريد الإلكتروني",
"INBOX": "صندوق الوارد",
diff --git a/app/javascript/dashboard/i18n/locale/ar/components.json b/app/javascript/dashboard/i18n/locale/ar/components.json
index f79ac8b5e..9944f9f47 100644
--- a/app/javascript/dashboard/i18n/locale/ar/components.json
+++ b/app/javascript/dashboard/i18n/locale/ar/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ar/contact.json b/app/javascript/dashboard/i18n/locale/ar/contact.json
index 23e370fe1..8dc0cebdc 100644
--- a/app/javascript/dashboard/i18n/locale/ar/contact.json
+++ b/app/javascript/dashboard/i18n/locale/ar/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "جار الاتصال بجهة الاتصال…",
"CALL_FAILED": "تعذر بدء المكالمة. الرجاء المحاولة مرة أخرى.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json
index f0f5f3383..457bbf20d 100644
--- a/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "الرجاء إدخال عنوان URL صالح"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "نطاق الموقع",
"PLACEHOLDER": "أدخل نطاق موقعك الإلكتروني (مثال: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/ar/integrations.json b/app/javascript/dashboard/i18n/locale/ar/integrations.json
index 31d17d0d4..1f3c59a0a 100644
--- a/app/javascript/dashboard/i18n/locale/ar/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ar/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "فتح الفواتير",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/ar/macros.json b/app/javascript/dashboard/i18n/locale/ar/macros.json
index 496a9eea3..261fad1c0 100644
--- a/app/javascript/dashboard/i18n/locale/ar/macros.json
+++ b/app/javascript/dashboard/i18n/locale/ar/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "كتم المحادثة",
diff --git a/app/javascript/dashboard/i18n/locale/ar/settings.json b/app/javascript/dashboard/i18n/locale/ar/settings.json
index 20b2a7faa..6bc1d348d 100644
--- a/app/javascript/dashboard/i18n/locale/ar/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ar/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "تم حفظ التوقيع بنجاح",
"IMAGE_UPLOAD_ERROR": "تعذر رفع الصورة! حاول مرة أخرى",
"IMAGE_UPLOAD_SUCCESS": "تم إضافة الصورة بنجاح. الرجاء النقر على الحفظ لحفظ التوقيع",
- "IMAGE_UPLOAD_SIZE_ERROR": "حجم الصورة يجب أن يكون أقل من {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "حجم الصورة يجب أن يكون أقل من {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "توقيع الرسالة",
diff --git a/app/javascript/dashboard/i18n/locale/ar/signup.json b/app/javascript/dashboard/i18n/locale/ar/signup.json
index 89ff33ca5..7acb1ccf7 100644
--- a/app/javascript/dashboard/i18n/locale/ar/signup.json
+++ b/app/javascript/dashboard/i18n/locale/ar/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "تعذر الاتصال بالخادم، الرجاء المحاولة مرة أخرى لاحقاً"
},
"SUBMIT": "إرسال",
- "HAVE_AN_ACCOUNT": "هل لديك حساب مسبق؟"
+ "HAVE_AN_ACCOUNT": "هل لديك حساب مسبق؟",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "إعادة إرسال رسالة التحقق",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/az/agentBots.json b/app/javascript/dashboard/i18n/locale/az/agentBots.json
index dc92016ab..fd731d9ff 100644
--- a/app/javascript/dashboard/i18n/locale/az/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/az/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Hazır",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/az/automation.json b/app/javascript/dashboard/i18n/locale/az/automation.json
index 22a9735f4..c654508ef 100644
--- a/app/javascript/dashboard/i18n/locale/az/automation.json
+++ b/app/javascript/dashboard/i18n/locale/az/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Şəxsi Qeyd",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/az/components.json b/app/javascript/dashboard/i18n/locale/az/components.json
index 0a2542a84..a75d35b08 100644
--- a/app/javascript/dashboard/i18n/locale/az/components.json
+++ b/app/javascript/dashboard/i18n/locale/az/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/az/contact.json b/app/javascript/dashboard/i18n/locale/az/contact.json
index 4a65a2005..90776f5ef 100644
--- a/app/javascript/dashboard/i18n/locale/az/contact.json
+++ b/app/javascript/dashboard/i18n/locale/az/contact.json
@@ -20,6 +20,7 @@
"CALL": "Zəng et",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/az/helpCenter.json b/app/javascript/dashboard/i18n/locale/az/helpCenter.json
index fc6f3c86a..70d89727d 100644
--- a/app/javascript/dashboard/i18n/locale/az/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/az/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Uncategorized",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json
index 5373e331f..0bfdc8f7e 100644
--- a/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Zəhmət olmasa Webhook URL-ni daxil edin",
"ERROR": "Zəhmət olmasa düzgün URL daxil edin"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Veb sayt Domeni",
"PLACEHOLDER": "Veb sayt domeninizi daxil edin (məsələn: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/az/integrations.json b/app/javascript/dashboard/i18n/locale/az/integrations.json
index 8fb31cd00..00e0c0ec9 100644
--- a/app/javascript/dashboard/i18n/locale/az/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/az/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Xüsusi alət uğurla silindi",
"ERROR_MESSAGE": "Xüsusi alət silinmədi"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Bağlantını yoxla",
"SUCCESS": "Endpoint HTTP {status} qaytardı",
diff --git a/app/javascript/dashboard/i18n/locale/az/macros.json b/app/javascript/dashboard/i18n/locale/az/macros.json
index e12f0ca73..67a5c5003 100644
--- a/app/javascript/dashboard/i18n/locale/az/macros.json
+++ b/app/javascript/dashboard/i18n/locale/az/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mute Conversation",
diff --git a/app/javascript/dashboard/i18n/locale/az/settings.json b/app/javascript/dashboard/i18n/locale/az/settings.json
index 772b4856d..a74576641 100644
--- a/app/javascript/dashboard/i18n/locale/az/settings.json
+++ b/app/javascript/dashboard/i18n/locale/az/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "İmza uğurla yadda saxlanıldı",
"IMAGE_UPLOAD_ERROR": "Şəkil yüklənmədi! Yenidən cəhd edin",
"IMAGE_UPLOAD_SUCCESS": "Şəkil uğurla əlavə edildi. İmzanı saxlamaq üçün zəhmət olmasa Saxla düyməsini basın",
- "IMAGE_UPLOAD_SIZE_ERROR": "Şəkil ölçüsü {size}MB-dan az olmalıdır"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Şəkil ölçüsü {size}MB-dan az olmalıdır",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Mesaj imzası",
diff --git a/app/javascript/dashboard/i18n/locale/az/signup.json b/app/javascript/dashboard/i18n/locale/az/signup.json
index 4a90fd322..673ded57b 100644
--- a/app/javascript/dashboard/i18n/locale/az/signup.json
+++ b/app/javascript/dashboard/i18n/locale/az/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Təsdiq e-poçtunu yenidən göndər",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/bg/agentBots.json b/app/javascript/dashboard/i18n/locale/bg/agentBots.json
index c44a8024b..7911ddee6 100644
--- a/app/javascript/dashboard/i18n/locale/bg/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/bg/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/bg/automation.json b/app/javascript/dashboard/i18n/locale/bg/automation.json
index 97bf7be40..57524ccef 100644
--- a/app/javascript/dashboard/i18n/locale/bg/automation.json
+++ b/app/javascript/dashboard/i18n/locale/bg/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Private Note",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Входяща кутия",
diff --git a/app/javascript/dashboard/i18n/locale/bg/components.json b/app/javascript/dashboard/i18n/locale/bg/components.json
index 8b8fe3f40..12e3ed232 100644
--- a/app/javascript/dashboard/i18n/locale/bg/components.json
+++ b/app/javascript/dashboard/i18n/locale/bg/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/bg/contact.json b/app/javascript/dashboard/i18n/locale/bg/contact.json
index a253b49ff..4b51d7e43 100644
--- a/app/javascript/dashboard/i18n/locale/bg/contact.json
+++ b/app/javascript/dashboard/i18n/locale/bg/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json
index b07e18646..4f6213c1b 100644
--- a/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Please enter a valid URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Website Domain",
"PLACEHOLDER": "Enter your website domain (eg: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/bg/integrations.json b/app/javascript/dashboard/i18n/locale/bg/integrations.json
index fd3d12e15..068fba92b 100644
--- a/app/javascript/dashboard/i18n/locale/bg/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/bg/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/bg/macros.json b/app/javascript/dashboard/i18n/locale/bg/macros.json
index 2a3604f3f..d1a00eb4c 100644
--- a/app/javascript/dashboard/i18n/locale/bg/macros.json
+++ b/app/javascript/dashboard/i18n/locale/bg/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Заглушаване на разговора",
diff --git a/app/javascript/dashboard/i18n/locale/bg/settings.json b/app/javascript/dashboard/i18n/locale/bg/settings.json
index 46772a425..d3079a05d 100644
--- a/app/javascript/dashboard/i18n/locale/bg/settings.json
+++ b/app/javascript/dashboard/i18n/locale/bg/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Signature saved successfully",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Message Signature",
diff --git a/app/javascript/dashboard/i18n/locale/bg/signup.json b/app/javascript/dashboard/i18n/locale/bg/signup.json
index d9f7b04f0..4d5218e9f 100644
--- a/app/javascript/dashboard/i18n/locale/bg/signup.json
+++ b/app/javascript/dashboard/i18n/locale/bg/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Не можа да се свърже с Woot сървър. Моля, опитайте отново по-късно"
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/bn/agentBots.json b/app/javascript/dashboard/i18n/locale/bn/agentBots.json
index dc92016ab..764a9c0fa 100644
--- a/app/javascript/dashboard/i18n/locale/bn/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/bn/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "গোপন কোড ক্লিপবোর্ডে কপি করুন",
+ "COPY_SUCCESS": "গোপন কোড ক্লিপবোর্ডে কপি হয়েছে",
+ "TOGGLE": "গোপন কোডের দৃশ্যমানতা টগল করুন",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "সম্পন্ন",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/bn/automation.json b/app/javascript/dashboard/i18n/locale/bn/automation.json
index 22a9735f4..37f1b7e66 100644
--- a/app/javascript/dashboard/i18n/locale/bn/automation.json
+++ b/app/javascript/dashboard/i18n/locale/bn/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "ব্যক্তিগত নোট",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/bn/components.json b/app/javascript/dashboard/i18n/locale/bn/components.json
index 0a2542a84..a75d35b08 100644
--- a/app/javascript/dashboard/i18n/locale/bn/components.json
+++ b/app/javascript/dashboard/i18n/locale/bn/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/bn/contact.json b/app/javascript/dashboard/i18n/locale/bn/contact.json
index ea2e8c334..cfc52fff5 100644
--- a/app/javascript/dashboard/i18n/locale/bn/contact.json
+++ b/app/javascript/dashboard/i18n/locale/bn/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/bn/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/bn/inboxMgmt.json
index 5faf75a6b..ecfcfce2c 100644
--- a/app/javascript/dashboard/i18n/locale/bn/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/bn/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "অনুগ্রহ করে আপনার Webhook URL লিখুন",
"ERROR": "অনুগ্রহ করে একটি বৈধ URL দিন"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "গোপন কোড ক্লিপবোর্ডে কপি করুন",
+ "COPY_SUCCESS": "গোপন কোড ক্লিপবোর্ডে কপি হয়েছে",
+ "TOGGLE": "গোপন কোডের দৃশ্যমানতা টগল করুন",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "ওয়েবসাইট ডোমেইন",
"PLACEHOLDER": "আপনার ওয়েবসাইট ডোমেইন লিখুন (যেমন: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/bn/integrations.json b/app/javascript/dashboard/i18n/locale/bn/integrations.json
index dbdf6b663..3b3ee5833 100644
--- a/app/javascript/dashboard/i18n/locale/bn/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/bn/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "কাস্টম টুল সফলভাবে মুছে ফেলা হয়েছে",
"ERROR_MESSAGE": "কাস্টম টুল মুছে ফেলা যায়নি"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/bn/macros.json b/app/javascript/dashboard/i18n/locale/bn/macros.json
index e12f0ca73..67a5c5003 100644
--- a/app/javascript/dashboard/i18n/locale/bn/macros.json
+++ b/app/javascript/dashboard/i18n/locale/bn/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mute Conversation",
diff --git a/app/javascript/dashboard/i18n/locale/bn/settings.json b/app/javascript/dashboard/i18n/locale/bn/settings.json
index 0ce2a8550..8ff2971be 100644
--- a/app/javascript/dashboard/i18n/locale/bn/settings.json
+++ b/app/javascript/dashboard/i18n/locale/bn/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "স্বাক্ষর সফলভাবে সংরক্ষণ হয়েছে",
"IMAGE_UPLOAD_ERROR": "ছবি আপলোড করা সম্ভব হয়নি! আবার চেষ্টা করুন",
"IMAGE_UPLOAD_SUCCESS": "ছবি সফলভাবে যোগ হয়েছে। স্বাক্ষর সংরক্ষণ করতে অনুগ্রহ করে সেভ-এ ক্লিক করুন।",
- "IMAGE_UPLOAD_SIZE_ERROR": "ছবির আকার {size}MB-এর কম হতে হবে"
+ "IMAGE_UPLOAD_SIZE_ERROR": "ছবির আকার {size}MB-এর কম হতে হবে",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "বার্তার স্বাক্ষর",
diff --git a/app/javascript/dashboard/i18n/locale/bn/signup.json b/app/javascript/dashboard/i18n/locale/bn/signup.json
index 4a90fd322..46a21aa23 100644
--- a/app/javascript/dashboard/i18n/locale/bn/signup.json
+++ b/app/javascript/dashboard/i18n/locale/bn/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "যাচাইকরণ ইমেল পুনরায় পাঠান",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ca/agentBots.json b/app/javascript/dashboard/i18n/locale/ca/agentBots.json
index 4937aa1a7..7dcb782bb 100644
--- a/app/javascript/dashboard/i18n/locale/ca/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ca/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "No s'ha pogut actualitzar el bot. Torneu-ho a provar."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Token d'accés",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/ca/automation.json b/app/javascript/dashboard/i18n/locale/ca/automation.json
index 6e3970cd7..32863a0f5 100644
--- a/app/javascript/dashboard/i18n/locale/ca/automation.json
+++ b/app/javascript/dashboard/i18n/locale/ca/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Nota privada",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Correu electrònic",
"INBOX": "Safata d'entrada",
diff --git a/app/javascript/dashboard/i18n/locale/ca/components.json b/app/javascript/dashboard/i18n/locale/ca/components.json
index c8adecbf1..3b0e062fd 100644
--- a/app/javascript/dashboard/i18n/locale/ca/components.json
+++ b/app/javascript/dashboard/i18n/locale/ca/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ca/contact.json b/app/javascript/dashboard/i18n/locale/ca/contact.json
index a6d25ca42..883057244 100644
--- a/app/javascript/dashboard/i18n/locale/ca/contact.json
+++ b/app/javascript/dashboard/i18n/locale/ca/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json
index 820ca44e0..ce289770d 100644
--- a/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Introdueix l'URL del teu webhook",
"ERROR": "Introduïu una URL vàlid"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Domini del lloc web",
"PLACEHOLDER": "Introduïu el vostre domini de lloc web (pe: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/ca/integrations.json b/app/javascript/dashboard/i18n/locale/ca/integrations.json
index 3aac7094f..747663b65 100644
--- a/app/javascript/dashboard/i18n/locale/ca/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ca/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Obrir facturació",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Posa't en contacte amb el vostre administrador per obtenir l'actualització."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/ca/macros.json b/app/javascript/dashboard/i18n/locale/ca/macros.json
index ae4ca38a3..3bb2bd9ef 100644
--- a/app/javascript/dashboard/i18n/locale/ca/macros.json
+++ b/app/javascript/dashboard/i18n/locale/ca/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Silencia la conversa",
diff --git a/app/javascript/dashboard/i18n/locale/ca/settings.json b/app/javascript/dashboard/i18n/locale/ca/settings.json
index 95ff685d2..f3d5c03eb 100644
--- a/app/javascript/dashboard/i18n/locale/ca/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ca/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "La signatura s'ha desat correctament",
"IMAGE_UPLOAD_ERROR": "No s'ha pogut carregar la imatge! Torna-ho a provar",
"IMAGE_UPLOAD_SUCCESS": "La imatge s'ha afegit correctament. Fes clic a desa per desar la signatura",
- "IMAGE_UPLOAD_SIZE_ERROR": "La mida de la imatge ha de ser inferior a {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "La mida de la imatge ha de ser inferior a {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Signatura del missatge",
diff --git a/app/javascript/dashboard/i18n/locale/ca/signup.json b/app/javascript/dashboard/i18n/locale/ca/signup.json
index 9afee22c6..e06e1267e 100644
--- a/app/javascript/dashboard/i18n/locale/ca/signup.json
+++ b/app/javascript/dashboard/i18n/locale/ca/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "No s'ha pogut connectar amb el servidor Woot. Torna-ho a provar més endavant"
},
"SUBMIT": "Crear un compte",
- "HAVE_AN_ACCOUNT": "Ja tens un compte?"
+ "HAVE_AN_ACCOUNT": "Ja tens un compte?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Reenviar correu electrònic de verificació",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/cs/agentBots.json b/app/javascript/dashboard/i18n/locale/cs/agentBots.json
index 638cbb5fe..b012e30ff 100644
--- a/app/javascript/dashboard/i18n/locale/cs/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/cs/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Přístupový token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/cs/automation.json b/app/javascript/dashboard/i18n/locale/cs/automation.json
index b50c78434..537e8952b 100644
--- a/app/javascript/dashboard/i18n/locale/cs/automation.json
+++ b/app/javascript/dashboard/i18n/locale/cs/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Přiřadit agentovi",
"ASSIGN_TEAM": "Přiřadit tým",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Přidat štítek",
"REMOVE_LABEL": "Odebrat štítek",
"SEND_EMAIL_TO_TEAM": "Poslat e-mail týmu",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Typ zprávy",
+ "PRIVATE_NOTE": "Soukromá poznámka",
"MESSAGE_CONTAINS": "Zpráva obsahuje",
"EMAIL": "E-mailová adresa",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/cs/components.json b/app/javascript/dashboard/i18n/locale/cs/components.json
index 51398ece6..76de71d16 100644
--- a/app/javascript/dashboard/i18n/locale/cs/components.json
+++ b/app/javascript/dashboard/i18n/locale/cs/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/cs/contact.json b/app/javascript/dashboard/i18n/locale/cs/contact.json
index 073e61e18..80474b427 100644
--- a/app/javascript/dashboard/i18n/locale/cs/contact.json
+++ b/app/javascript/dashboard/i18n/locale/cs/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json
index de8f32bd9..3dfe132b0 100644
--- a/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Zadejte prosím platnou URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Doména webových stránek",
"PLACEHOLDER": "Zadejte doménu webu (např. acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/cs/integrations.json b/app/javascript/dashboard/i18n/locale/cs/integrations.json
index 49fcede3a..3fcd3b361 100644
--- a/app/javascript/dashboard/i18n/locale/cs/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/cs/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/cs/macros.json b/app/javascript/dashboard/i18n/locale/cs/macros.json
index 3ce6bb7c1..bf550aeea 100644
--- a/app/javascript/dashboard/i18n/locale/cs/macros.json
+++ b/app/javascript/dashboard/i18n/locale/cs/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Přiřadit agenta",
"ADD_LABEL": "Přidat štítek",
"REMOVE_LABEL": "Odebrat štítek",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Ztlumit konverzaci",
diff --git a/app/javascript/dashboard/i18n/locale/cs/settings.json b/app/javascript/dashboard/i18n/locale/cs/settings.json
index a1086aef7..6411bf614 100644
--- a/app/javascript/dashboard/i18n/locale/cs/settings.json
+++ b/app/javascript/dashboard/i18n/locale/cs/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Signature saved successfully",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Message Signature",
diff --git a/app/javascript/dashboard/i18n/locale/cs/signup.json b/app/javascript/dashboard/i18n/locale/cs/signup.json
index 37eb87541..a091a8d00 100644
--- a/app/javascript/dashboard/i18n/locale/cs/signup.json
+++ b/app/javascript/dashboard/i18n/locale/cs/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Nelze se připojit k Woot serveru, opakujte akci později"
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Máte již účet?"
+ "HAVE_AN_ACCOUNT": "Máte již účet?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/da/agentBots.json b/app/javascript/dashboard/i18n/locale/da/agentBots.json
index 725095d9a..92eddba01 100644
--- a/app/javascript/dashboard/i18n/locale/da/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/da/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Adgangs Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/da/automation.json b/app/javascript/dashboard/i18n/locale/da/automation.json
index c1636f2b9..91e8a241d 100644
--- a/app/javascript/dashboard/i18n/locale/da/automation.json
+++ b/app/javascript/dashboard/i18n/locale/da/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Privat Note",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "E-mail",
"INBOX": "Indbakke",
diff --git a/app/javascript/dashboard/i18n/locale/da/components.json b/app/javascript/dashboard/i18n/locale/da/components.json
index b71842016..aa566d5c6 100644
--- a/app/javascript/dashboard/i18n/locale/da/components.json
+++ b/app/javascript/dashboard/i18n/locale/da/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/da/contact.json b/app/javascript/dashboard/i18n/locale/da/contact.json
index 46e8d0cd9..3c36d166b 100644
--- a/app/javascript/dashboard/i18n/locale/da/contact.json
+++ b/app/javascript/dashboard/i18n/locale/da/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json
index 822fe5f3e..3007f2022 100644
--- a/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Angiv en gyldig URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Hjemmeside Domæne",
"PLACEHOLDER": "Indtast dit website domæne (fx: ditfirma.dk)"
diff --git a/app/javascript/dashboard/i18n/locale/da/integrations.json b/app/javascript/dashboard/i18n/locale/da/integrations.json
index 0729227a5..3a72c92ba 100644
--- a/app/javascript/dashboard/i18n/locale/da/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/da/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/da/macros.json b/app/javascript/dashboard/i18n/locale/da/macros.json
index d31a4138d..c095c17ec 100644
--- a/app/javascript/dashboard/i18n/locale/da/macros.json
+++ b/app/javascript/dashboard/i18n/locale/da/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Gør Samtale Lydløs",
diff --git a/app/javascript/dashboard/i18n/locale/da/settings.json b/app/javascript/dashboard/i18n/locale/da/settings.json
index 01a64899b..c2c75d777 100644
--- a/app/javascript/dashboard/i18n/locale/da/settings.json
+++ b/app/javascript/dashboard/i18n/locale/da/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Signatur gemt",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Billedets størrelse skal være mindre end {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Billedets størrelse skal være mindre end {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Besked Signatur",
diff --git a/app/javascript/dashboard/i18n/locale/da/signup.json b/app/javascript/dashboard/i18n/locale/da/signup.json
index 250e5672f..cd47ab0ad 100644
--- a/app/javascript/dashboard/i18n/locale/da/signup.json
+++ b/app/javascript/dashboard/i18n/locale/da/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Kunne ikke oprette forbindelse til Woot Server, Prøv igen senere"
},
"SUBMIT": "Opret en konto",
- "HAVE_AN_ACCOUNT": "Har du allerede en konto?"
+ "HAVE_AN_ACCOUNT": "Har du allerede en konto?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/de/agentBots.json b/app/javascript/dashboard/i18n/locale/de/agentBots.json
index 39ed7cfcf..b763812a8 100644
--- a/app/javascript/dashboard/i18n/locale/de/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/de/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Der Bot konnte nicht aktualisiert werden, bitte versuche es später erneut."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Zugangstoken",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/de/automation.json b/app/javascript/dashboard/i18n/locale/de/automation.json
index dfec1022c..0d8dd35a3 100644
--- a/app/javascript/dashboard/i18n/locale/de/automation.json
+++ b/app/javascript/dashboard/i18n/locale/de/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Private Notiz",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "E-Mail",
"INBOX": "Posteingang",
diff --git a/app/javascript/dashboard/i18n/locale/de/components.json b/app/javascript/dashboard/i18n/locale/de/components.json
index 565b82181..8a8387204 100644
--- a/app/javascript/dashboard/i18n/locale/de/components.json
+++ b/app/javascript/dashboard/i18n/locale/de/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/de/contact.json b/app/javascript/dashboard/i18n/locale/de/contact.json
index 36d003067..19b6b4aa2 100644
--- a/app/javascript/dashboard/i18n/locale/de/contact.json
+++ b/app/javascript/dashboard/i18n/locale/de/contact.json
@@ -20,6 +20,7 @@
"CALL": "Anruf",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Spracheingang wählen"
},
diff --git a/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json
index 26ca049aa..3d2a6cfbd 100644
--- a/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Bitte geben Sie Ihre Webhook-URL ein",
"ERROR": "Bitte geben Sie eine gültige URL ein"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Website-Domain",
"PLACEHOLDER": "Geben Sie Ihre Website-Domain ein (eg: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/de/integrations.json b/app/javascript/dashboard/i18n/locale/de/integrations.json
index 789e292bb..fefa6bd84 100644
--- a/app/javascript/dashboard/i18n/locale/de/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/de/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Rechnung öffnen",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/de/macros.json b/app/javascript/dashboard/i18n/locale/de/macros.json
index f39444991..a6a0d884e 100644
--- a/app/javascript/dashboard/i18n/locale/de/macros.json
+++ b/app/javascript/dashboard/i18n/locale/de/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Unterhaltung stummschalten",
diff --git a/app/javascript/dashboard/i18n/locale/de/settings.json b/app/javascript/dashboard/i18n/locale/de/settings.json
index 24e13e3e0..575549f0d 100644
--- a/app/javascript/dashboard/i18n/locale/de/settings.json
+++ b/app/javascript/dashboard/i18n/locale/de/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Signatur erfolgreich gespeichert",
"IMAGE_UPLOAD_ERROR": "Bild konnte nicht hochgeladen werden! Versuchen Sie es erneut",
"IMAGE_UPLOAD_SUCCESS": "Bild erfolgreich hinzugefügt. Bitte klicken Sie auf Speichern, um die Signatur zu speichern",
- "IMAGE_UPLOAD_SIZE_ERROR": "Bildgröße sollte kleiner als {size}MB sein"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Bildgröße sollte kleiner als {size}MB sein",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Nachrichten-Signatur",
diff --git a/app/javascript/dashboard/i18n/locale/de/signup.json b/app/javascript/dashboard/i18n/locale/de/signup.json
index d6718df1e..b42178644 100644
--- a/app/javascript/dashboard/i18n/locale/de/signup.json
+++ b/app/javascript/dashboard/i18n/locale/de/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Es konnte keine Verbindung zum Woot Server hergestellt werden. Bitte versuchen Sie es später erneut"
},
"SUBMIT": "Konto erstellen",
- "HAVE_AN_ACCOUNT": "Haben Sie bereits ein Konto?"
+ "HAVE_AN_ACCOUNT": "Haben Sie bereits ein Konto?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Verifizierungs-E-Mail erneut senden",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/el/agentBots.json b/app/javascript/dashboard/i18n/locale/el/agentBots.json
index fcf146f3d..1683e496f 100644
--- a/app/javascript/dashboard/i18n/locale/el/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/el/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Κώδικας Πρόσβασης (Access Token)",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/el/automation.json b/app/javascript/dashboard/i18n/locale/el/automation.json
index 8a1ae42d5..dc6eb2e31 100644
--- a/app/javascript/dashboard/i18n/locale/el/automation.json
+++ b/app/javascript/dashboard/i18n/locale/el/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Ιδιωτική Σημείωση",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Εισερχόμενα",
diff --git a/app/javascript/dashboard/i18n/locale/el/components.json b/app/javascript/dashboard/i18n/locale/el/components.json
index 6f56c2165..90cbbbded 100644
--- a/app/javascript/dashboard/i18n/locale/el/components.json
+++ b/app/javascript/dashboard/i18n/locale/el/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/el/contact.json b/app/javascript/dashboard/i18n/locale/el/contact.json
index aaae1286c..c8fa545d1 100644
--- a/app/javascript/dashboard/i18n/locale/el/contact.json
+++ b/app/javascript/dashboard/i18n/locale/el/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json
index acc25aa84..00100b7c4 100644
--- a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Παρακαλώ εισάγετε ένα έγκυρο URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Domain Ιστοσελίδας",
"PLACEHOLDER": "Συμπληρώστε το domain της Ιστοσελίδας σας (π.χ: hmu.gr)"
diff --git a/app/javascript/dashboard/i18n/locale/el/integrations.json b/app/javascript/dashboard/i18n/locale/el/integrations.json
index 811f68aac..3111e71c1 100644
--- a/app/javascript/dashboard/i18n/locale/el/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/el/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/el/macros.json b/app/javascript/dashboard/i18n/locale/el/macros.json
index 59b3124e6..2c200cfda 100644
--- a/app/javascript/dashboard/i18n/locale/el/macros.json
+++ b/app/javascript/dashboard/i18n/locale/el/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Σίγαση Συνομιλίας",
diff --git a/app/javascript/dashboard/i18n/locale/el/settings.json b/app/javascript/dashboard/i18n/locale/el/settings.json
index 6c15c9c32..9079729db 100644
--- a/app/javascript/dashboard/i18n/locale/el/settings.json
+++ b/app/javascript/dashboard/i18n/locale/el/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Η υπογραφή αποθηκεύτηκε με επιτυχία",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Υπογραφή μηνύματος",
diff --git a/app/javascript/dashboard/i18n/locale/el/signup.json b/app/javascript/dashboard/i18n/locale/el/signup.json
index 1b8769d0c..a57dae0ab 100644
--- a/app/javascript/dashboard/i18n/locale/el/signup.json
+++ b/app/javascript/dashboard/i18n/locale/el/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Αδυναμία σύνδεσης με τον Woot Server, Παρακαλώ προσπαθήστε αργότερα"
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Έχετε ήδη ένα λογαριασμό?"
+ "HAVE_AN_ACCOUNT": "Έχετε ήδη ένα λογαριασμό?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/en/automation.json b/app/javascript/dashboard/i18n/locale/en/automation.json
index d338fa9a2..e96a28b40 100644
--- a/app/javascript/dashboard/i18n/locale/en/automation.json
+++ b/app/javascript/dashboard/i18n/locale/en/automation.json
@@ -130,6 +130,7 @@
"ATLEAST_ONE_ACTION_REQUIRED": "At least one action is required"
},
"NONE_OPTION": "None",
+ "LAST_RESPONDING_AGENT": "Last Responding Agent",
"EVENTS": {
"CONVERSATION_CREATED": "Conversation Created",
"CONVERSATION_UPDATED": "Conversation Updated",
@@ -140,6 +141,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
diff --git a/app/javascript/dashboard/i18n/locale/en/components.json b/app/javascript/dashboard/i18n/locale/en/components.json
index 7793b419f..68db1cc85 100644
--- a/app/javascript/dashboard/i18n/locale/en/components.json
+++ b/app/javascript/dashboard/i18n/locale/en/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/en/contact.json b/app/javascript/dashboard/i18n/locale/en/contact.json
index 803cd66cb..9234071d1 100644
--- a/app/javascript/dashboard/i18n/locale/en/contact.json
+++ b/app/javascript/dashboard/i18n/locale/en/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/en/helpCenter.json b/app/javascript/dashboard/i18n/locale/en/helpCenter.json
index 51e2586aa..ffeca222a 100644
--- a/app/javascript/dashboard/i18n/locale/en/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/en/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Uncategorized",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/en/macros.json b/app/javascript/dashboard/i18n/locale/en/macros.json
index e12f0ca73..67a5c5003 100644
--- a/app/javascript/dashboard/i18n/locale/en/macros.json
+++ b/app/javascript/dashboard/i18n/locale/en/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mute Conversation",
diff --git a/app/javascript/dashboard/i18n/locale/es/agentBots.json b/app/javascript/dashboard/i18n/locale/es/agentBots.json
index 587fbb821..83dba45df 100644
--- a/app/javascript/dashboard/i18n/locale/es/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/es/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "No se pudo actualizar el bot, por favor inténtalo de nuevo más tarde."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Token de acceso",
"DESCRIPTION": "Copie el código de acceso y guardarlo seguro",
diff --git a/app/javascript/dashboard/i18n/locale/es/automation.json b/app/javascript/dashboard/i18n/locale/es/automation.json
index 5d159186d..f48528d7d 100644
--- a/app/javascript/dashboard/i18n/locale/es/automation.json
+++ b/app/javascript/dashboard/i18n/locale/es/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Asignar al agente",
"ASSIGN_TEAM": "Asignar equipo",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Añadir etiqueta",
"REMOVE_LABEL": "Eliminar etiqueta",
"SEND_EMAIL_TO_TEAM": "Enviar un email al equipo",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Tipo de mensaje",
+ "PRIVATE_NOTE": "Nota privada",
"MESSAGE_CONTAINS": "El mensaje contiene",
"EMAIL": "E-mail",
"INBOX": "Bandeja de entrada",
diff --git a/app/javascript/dashboard/i18n/locale/es/components.json b/app/javascript/dashboard/i18n/locale/es/components.json
index 4627e6897..f588a7602 100644
--- a/app/javascript/dashboard/i18n/locale/es/components.json
+++ b/app/javascript/dashboard/i18n/locale/es/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "¡Muy pronto!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/es/contact.json b/app/javascript/dashboard/i18n/locale/es/contact.json
index 839f9d057..e47cdd4cf 100644
--- a/app/javascript/dashboard/i18n/locale/es/contact.json
+++ b/app/javascript/dashboard/i18n/locale/es/contact.json
@@ -20,6 +20,7 @@
"CALL": "Llamar",
"CALL_INITIATED": "Llamando al contacto…",
"CALL_FAILED": "No se puede iniciar la llamada. Por favor, inténtelo de nuevo.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Seleccionar un buzón de entrada"
},
diff --git a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json
index 16fd3e363..8f8dc9454 100644
--- a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Por favor, introduzca su URL de Webhook",
"ERROR": "Por favor, introduzca una URL válida"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Dominio del sitio web",
"PLACEHOLDER": "Introduzca el dominio de su sitio web (por ejemplo: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/es/integrations.json b/app/javascript/dashboard/i18n/locale/es/integrations.json
index 4c2c9737a..ff34d1251 100644
--- a/app/javascript/dashboard/i18n/locale/es/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/es/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Abrir facturación",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Por favor, comuníquese con su administrador para la actualización."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/es/macros.json b/app/javascript/dashboard/i18n/locale/es/macros.json
index 3d59c9c88..956d37e48 100644
--- a/app/javascript/dashboard/i18n/locale/es/macros.json
+++ b/app/javascript/dashboard/i18n/locale/es/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Añadir etiqueta",
"REMOVE_LABEL": "Eliminar etiqueta",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Enviar transcripción por correo",
"MUTE_CONVERSATION": "Silenciar Conversación",
diff --git a/app/javascript/dashboard/i18n/locale/es/settings.json b/app/javascript/dashboard/i18n/locale/es/settings.json
index 14076393e..be7747902 100644
--- a/app/javascript/dashboard/i18n/locale/es/settings.json
+++ b/app/javascript/dashboard/i18n/locale/es/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Firma guardada correctamente",
"IMAGE_UPLOAD_ERROR": "¡No se pudo subir la imagen! Intente nuevamente",
"IMAGE_UPLOAD_SUCCESS": "Imagen agregada satisfactoriamente. Por favor haga clic en salvar para guardar la firma",
- "IMAGE_UPLOAD_SIZE_ERROR": "El tamaño de la imagen debe ser menor que {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "El tamaño de la imagen debe ser menor que {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Firma del mensaje",
diff --git a/app/javascript/dashboard/i18n/locale/es/signup.json b/app/javascript/dashboard/i18n/locale/es/signup.json
index 02bb594e3..b73250f09 100644
--- a/app/javascript/dashboard/i18n/locale/es/signup.json
+++ b/app/javascript/dashboard/i18n/locale/es/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "No se pudo conectar al servidor Woot, por favor inténtalo de nuevo más tarde"
},
"SUBMIT": "Crear una cuenta",
- "HAVE_AN_ACCOUNT": "¿Ya tienes una cuenta?"
+ "HAVE_AN_ACCOUNT": "¿Ya tienes una cuenta?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Reenviar correo de verificación",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/et/agentBots.json b/app/javascript/dashboard/i18n/locale/et/agentBots.json
index dc92016ab..c17ec60d0 100644
--- a/app/javascript/dashboard/i18n/locale/et/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/et/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/et/automation.json b/app/javascript/dashboard/i18n/locale/et/automation.json
index 22a9735f4..7cea69c5e 100644
--- a/app/javascript/dashboard/i18n/locale/et/automation.json
+++ b/app/javascript/dashboard/i18n/locale/et/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Privaatne märkus",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/et/components.json b/app/javascript/dashboard/i18n/locale/et/components.json
index 0a2542a84..a75d35b08 100644
--- a/app/javascript/dashboard/i18n/locale/et/components.json
+++ b/app/javascript/dashboard/i18n/locale/et/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/et/contact.json b/app/javascript/dashboard/i18n/locale/et/contact.json
index 5bacfd708..a83a0af4c 100644
--- a/app/javascript/dashboard/i18n/locale/et/contact.json
+++ b/app/javascript/dashboard/i18n/locale/et/contact.json
@@ -20,6 +20,7 @@
"CALL": "Helista",
"CALL_INITIATED": "Helistatakse kontaktile…",
"CALL_FAILED": "Kõne alustamine ebaõnnestus. Palun proovi uuesti.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Vali häälpostkast"
},
diff --git a/app/javascript/dashboard/i18n/locale/et/helpCenter.json b/app/javascript/dashboard/i18n/locale/et/helpCenter.json
index 757886844..4bb4bbb3b 100644
--- a/app/javascript/dashboard/i18n/locale/et/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/et/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "Rohkem omadusi",
"UNCATEGORIZED": "Kategooriata",
- "EDITOR_PLACEHOLDER": "Kirjuta midagi..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Artikli omadused",
diff --git a/app/javascript/dashboard/i18n/locale/et/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/et/inboxMgmt.json
index 4a84bf948..51c7087a5 100644
--- a/app/javascript/dashboard/i18n/locale/et/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/et/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Palun sisestage oma webhooki URL",
"ERROR": "Palun sisesta kehtiv URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Veebisaidi domeen",
"PLACEHOLDER": "Sisestage oma veebisaidi domeen (nt acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/et/integrations.json b/app/javascript/dashboard/i18n/locale/et/integrations.json
index e84e65737..0ac64ef6a 100644
--- a/app/javascript/dashboard/i18n/locale/et/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/et/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/et/macros.json b/app/javascript/dashboard/i18n/locale/et/macros.json
index e12f0ca73..67a5c5003 100644
--- a/app/javascript/dashboard/i18n/locale/et/macros.json
+++ b/app/javascript/dashboard/i18n/locale/et/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mute Conversation",
diff --git a/app/javascript/dashboard/i18n/locale/et/settings.json b/app/javascript/dashboard/i18n/locale/et/settings.json
index dce9af51f..a4ba6ac6e 100644
--- a/app/javascript/dashboard/i18n/locale/et/settings.json
+++ b/app/javascript/dashboard/i18n/locale/et/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Allkiri salvestati edukalt",
"IMAGE_UPLOAD_ERROR": "Pildi üleslaadimine ebaõnnestus! Proovi uuesti",
"IMAGE_UPLOAD_SUCCESS": "Pilt lisatud edukalt. Palun klõpsa salvestamiseks nuppu Salvesta",
- "IMAGE_UPLOAD_SIZE_ERROR": "Pildi suurus peab olema väiksem kui {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Pildi suurus peab olema väiksem kui {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Sõnumi allkiri",
diff --git a/app/javascript/dashboard/i18n/locale/et/signup.json b/app/javascript/dashboard/i18n/locale/et/signup.json
index 4a90fd322..2814dc5cc 100644
--- a/app/javascript/dashboard/i18n/locale/et/signup.json
+++ b/app/javascript/dashboard/i18n/locale/et/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Saada kinnituskiri uuesti",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/fa/agentBots.json b/app/javascript/dashboard/i18n/locale/fa/agentBots.json
index cd69870f4..f187d0cbd 100644
--- a/app/javascript/dashboard/i18n/locale/fa/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/fa/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "ربات بروز رسانی نشد، لطفا دوباره امتحان کنید."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "توکن دسترسی",
"DESCRIPTION": "توکن دسترسی را کپی کرده و در جای امن ذخیره کنید",
diff --git a/app/javascript/dashboard/i18n/locale/fa/automation.json b/app/javascript/dashboard/i18n/locale/fa/automation.json
index 9a203b74f..619911264 100644
--- a/app/javascript/dashboard/i18n/locale/fa/automation.json
+++ b/app/javascript/dashboard/i18n/locale/fa/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "یادداشت خصوصی",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "ایمیل",
"INBOX": "صندوق ورودی",
diff --git a/app/javascript/dashboard/i18n/locale/fa/components.json b/app/javascript/dashboard/i18n/locale/fa/components.json
index b2dd2e2ee..cab63a405 100644
--- a/app/javascript/dashboard/i18n/locale/fa/components.json
+++ b/app/javascript/dashboard/i18n/locale/fa/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/fa/contact.json b/app/javascript/dashboard/i18n/locale/fa/contact.json
index 2dddb7f96..c6428b5ca 100644
--- a/app/javascript/dashboard/i18n/locale/fa/contact.json
+++ b/app/javascript/dashboard/i18n/locale/fa/contact.json
@@ -20,6 +20,7 @@
"CALL": "تماس",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/fa/helpCenter.json b/app/javascript/dashboard/i18n/locale/fa/helpCenter.json
index 7b211d718..d020f4a7c 100644
--- a/app/javascript/dashboard/i18n/locale/fa/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/fa/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "دسته بندی نشده",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json
index ad64e8cdf..a45d23790 100644
--- a/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "لطفا آدرس URL صحیحی وارد کنید"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "دامنه سایت",
"PLACEHOLDER": "دامنه سایت خود را وارد کنید (به عنوان مثال: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/fa/integrations.json b/app/javascript/dashboard/i18n/locale/fa/integrations.json
index 492563c8d..472b33d73 100644
--- a/app/javascript/dashboard/i18n/locale/fa/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/fa/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "باز کردن صورتحساب",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "لطفاً برای ارتقا با ادمین خود تماس بگیرید."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/fa/macros.json b/app/javascript/dashboard/i18n/locale/fa/macros.json
index 5221dcb95..e61541f2c 100644
--- a/app/javascript/dashboard/i18n/locale/fa/macros.json
+++ b/app/javascript/dashboard/i18n/locale/fa/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "بیصدا کردن گفتگو",
diff --git a/app/javascript/dashboard/i18n/locale/fa/settings.json b/app/javascript/dashboard/i18n/locale/fa/settings.json
index 5fe16b4c6..49ec42840 100644
--- a/app/javascript/dashboard/i18n/locale/fa/settings.json
+++ b/app/javascript/dashboard/i18n/locale/fa/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "امضا با موفقیت ذخیره شد",
"IMAGE_UPLOAD_ERROR": "تصویر ارسال نشد! دوباره امتحان کنید",
"IMAGE_UPLOAD_SUCCESS": "تصویر با موفقیت اضافه شد. لطفا بر روی ذخیره کلیک کنید تا امضا ذخیره شود",
- "IMAGE_UPLOAD_SIZE_ERROR": "اندازه تصویر باید کمتر از {size} مگابایت باشد"
+ "IMAGE_UPLOAD_SIZE_ERROR": "اندازه تصویر باید کمتر از {size} مگابایت باشد",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "امضای پیام",
diff --git a/app/javascript/dashboard/i18n/locale/fa/signup.json b/app/javascript/dashboard/i18n/locale/fa/signup.json
index 38a662649..e0b3dcf41 100644
--- a/app/javascript/dashboard/i18n/locale/fa/signup.json
+++ b/app/javascript/dashboard/i18n/locale/fa/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "ارتباط با سرور برقرار نشد، لطفا بعدا امتحان کنید"
},
"SUBMIT": "ایجاد حساب کاربری",
- "HAVE_AN_ACCOUNT": "از قبل حسابکاربری دارید؟"
+ "HAVE_AN_ACCOUNT": "از قبل حسابکاربری دارید؟",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "ارسال مجدد ایمیل تایید",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/fi/agentBots.json b/app/javascript/dashboard/i18n/locale/fi/agentBots.json
index ed237979f..d2787550f 100644
--- a/app/javascript/dashboard/i18n/locale/fi/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/fi/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/fi/automation.json b/app/javascript/dashboard/i18n/locale/fi/automation.json
index 0dfca6771..43c1a6a31 100644
--- a/app/javascript/dashboard/i18n/locale/fi/automation.json
+++ b/app/javascript/dashboard/i18n/locale/fi/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Sisäinen merkintä",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Sähköposti",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/fi/components.json b/app/javascript/dashboard/i18n/locale/fi/components.json
index 16b40e1e4..d7dc18f5c 100644
--- a/app/javascript/dashboard/i18n/locale/fi/components.json
+++ b/app/javascript/dashboard/i18n/locale/fi/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/fi/contact.json b/app/javascript/dashboard/i18n/locale/fi/contact.json
index 4950073a8..c3db43d17 100644
--- a/app/javascript/dashboard/i18n/locale/fi/contact.json
+++ b/app/javascript/dashboard/i18n/locale/fi/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json
index d40fb8663..86adbffc6 100644
--- a/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Anna kelvollinen URL-osoite"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Sivuston verkkotunnus",
"PLACEHOLDER": "Anna sivuston verkkotunnus (esim. acme.fi)"
diff --git a/app/javascript/dashboard/i18n/locale/fi/integrations.json b/app/javascript/dashboard/i18n/locale/fi/integrations.json
index 2696dee05..cc0c0a0e8 100644
--- a/app/javascript/dashboard/i18n/locale/fi/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/fi/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/fi/macros.json b/app/javascript/dashboard/i18n/locale/fi/macros.json
index 5d78f2687..b053ae8c8 100644
--- a/app/javascript/dashboard/i18n/locale/fi/macros.json
+++ b/app/javascript/dashboard/i18n/locale/fi/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mykistä Keskustelu",
diff --git a/app/javascript/dashboard/i18n/locale/fi/settings.json b/app/javascript/dashboard/i18n/locale/fi/settings.json
index bf7d7bc44..5c70b7459 100644
--- a/app/javascript/dashboard/i18n/locale/fi/settings.json
+++ b/app/javascript/dashboard/i18n/locale/fi/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Signature saved successfully",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Message Signature",
diff --git a/app/javascript/dashboard/i18n/locale/fi/signup.json b/app/javascript/dashboard/i18n/locale/fi/signup.json
index a460c1582..b307e6e19 100644
--- a/app/javascript/dashboard/i18n/locale/fi/signup.json
+++ b/app/javascript/dashboard/i18n/locale/fi/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Yhteyden muodostaminen Woot-palvelimelle ei onnistunut, yritä myöhemmin uudelleen"
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Onko sinulla jo tili?"
+ "HAVE_AN_ACCOUNT": "Onko sinulla jo tili?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/fr/agentBots.json b/app/javascript/dashboard/i18n/locale/fr/agentBots.json
index 915adb649..28a6179a6 100644
--- a/app/javascript/dashboard/i18n/locale/fr/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/fr/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Impossible de mettre à jour le bot, veuillez réessayer plus tard."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Jeton d'accès",
"DESCRIPTION": "Copiez le jeton d'accès et enregistrez-le en toute sécurité",
diff --git a/app/javascript/dashboard/i18n/locale/fr/automation.json b/app/javascript/dashboard/i18n/locale/fr/automation.json
index a43e34cfa..8455de077 100644
--- a/app/javascript/dashboard/i18n/locale/fr/automation.json
+++ b/app/javascript/dashboard/i18n/locale/fr/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assigner à un agent",
"ASSIGN_TEAM": "Assigner une équipe",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Supprimer l’équipe assignée",
"ADD_LABEL": "Ajouter une étiquette",
"REMOVE_LABEL": "Supprimer une étiquette",
"SEND_EMAIL_TO_TEAM": "Envoyer un e-mail à l'équipe",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Type de message",
+ "PRIVATE_NOTE": "Note privée",
"MESSAGE_CONTAINS": "Le message contient",
"EMAIL": "Courriel",
"INBOX": "Boîte de réception",
diff --git a/app/javascript/dashboard/i18n/locale/fr/components.json b/app/javascript/dashboard/i18n/locale/fr/components.json
index 49535efce..53ebf3b1a 100644
--- a/app/javascript/dashboard/i18n/locale/fr/components.json
+++ b/app/javascript/dashboard/i18n/locale/fr/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Bientôt disponible !"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/fr/contact.json b/app/javascript/dashboard/i18n/locale/fr/contact.json
index baded39db..36e12a1b2 100644
--- a/app/javascript/dashboard/i18n/locale/fr/contact.json
+++ b/app/javascript/dashboard/i18n/locale/fr/contact.json
@@ -20,6 +20,7 @@
"CALL": "Appel",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choisir une boîte de réception vocale"
},
diff --git a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json
index 9b0df9c8d..a96e4de0b 100644
--- a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Veuillez entrer une URL valide"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Domaine du site Web",
"PLACEHOLDER": "Entrez le domaine de votre site Web (ex : acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/fr/integrations.json b/app/javascript/dashboard/i18n/locale/fr/integrations.json
index 4bbc1b94b..31484f430 100644
--- a/app/javascript/dashboard/i18n/locale/fr/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/fr/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Ouvrir la facturation",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/fr/macros.json b/app/javascript/dashboard/i18n/locale/fr/macros.json
index d61e849d8..19b4649e0 100644
--- a/app/javascript/dashboard/i18n/locale/fr/macros.json
+++ b/app/javascript/dashboard/i18n/locale/fr/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Attribuer un agent",
"ADD_LABEL": "Ajouter une étiquette",
"REMOVE_LABEL": "Supprimer une étiquette",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Supprimer l’équipe assignée",
"SEND_EMAIL_TRANSCRIPT": "Envoyer une transcription par e-mail",
"MUTE_CONVERSATION": "Mettre la conversation en sourdine",
diff --git a/app/javascript/dashboard/i18n/locale/fr/settings.json b/app/javascript/dashboard/i18n/locale/fr/settings.json
index 15dceb726..5629b0351 100644
--- a/app/javascript/dashboard/i18n/locale/fr/settings.json
+++ b/app/javascript/dashboard/i18n/locale/fr/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Signature enregistrée avec succès",
"IMAGE_UPLOAD_ERROR": "Impossible de télécharger l'image! Réessayez",
"IMAGE_UPLOAD_SUCCESS": "L'image a été ajoutée avec succès. Veuillez cliquer sur Enregistrer pour enregistrer la signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "La taille de l'image doit être inférieure à {size}Mo"
+ "IMAGE_UPLOAD_SIZE_ERROR": "La taille de l'image doit être inférieure à {size}Mo",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Signature du message",
diff --git a/app/javascript/dashboard/i18n/locale/fr/signup.json b/app/javascript/dashboard/i18n/locale/fr/signup.json
index 1d3aa0d4f..3ec6e7254 100644
--- a/app/javascript/dashboard/i18n/locale/fr/signup.json
+++ b/app/javascript/dashboard/i18n/locale/fr/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Impossible de se connecter au serveur Woot, veuillez réessayer plus tard"
},
"SUBMIT": "Créer un compte",
- "HAVE_AN_ACCOUNT": "Vous avez déjà un compte ?"
+ "HAVE_AN_ACCOUNT": "Vous avez déjà un compte ?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/he/agentBots.json b/app/javascript/dashboard/i18n/locale/he/agentBots.json
index a0787013f..021dfb70b 100644
--- a/app/javascript/dashboard/i18n/locale/he/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/he/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "לא ניתן לעדכן בוט. אנא נסה שוב."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "אסימון גישה",
"DESCRIPTION": "העתק את אסימון הגישה ושמור אותו בבטחה",
diff --git a/app/javascript/dashboard/i18n/locale/he/automation.json b/app/javascript/dashboard/i18n/locale/he/automation.json
index c93ce37ad..eab82a584 100644
--- a/app/javascript/dashboard/i18n/locale/he/automation.json
+++ b/app/javascript/dashboard/i18n/locale/he/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "הקצה לסוכן",
"ASSIGN_TEAM": "הקצה צוות",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "הסר צוות שהוקצה",
"ADD_LABEL": "הוסף תווית",
"REMOVE_LABEL": "הסר תווית",
"SEND_EMAIL_TO_TEAM": "שלח דוא\"ל לצוות",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "סוג הודעה",
+ "PRIVATE_NOTE": "הערה פרטית",
"MESSAGE_CONTAINS": "ההודעה מכילה",
"EMAIL": "דוא\"ל",
"INBOX": "תיבת דואר נכנס",
diff --git a/app/javascript/dashboard/i18n/locale/he/components.json b/app/javascript/dashboard/i18n/locale/he/components.json
index 7e4a33953..87ba64827 100644
--- a/app/javascript/dashboard/i18n/locale/he/components.json
+++ b/app/javascript/dashboard/i18n/locale/he/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "בקרוב!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/he/contact.json b/app/javascript/dashboard/i18n/locale/he/contact.json
index af89a1f60..e32bbf26f 100644
--- a/app/javascript/dashboard/i18n/locale/he/contact.json
+++ b/app/javascript/dashboard/i18n/locale/he/contact.json
@@ -20,6 +20,7 @@
"CALL": "התקשר",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "בחר תיבת דואר קולי"
},
diff --git a/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json
index 11f790980..64c6f3f06 100644
--- a/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "אנא הזן את כתובת ה-Webhook URL שלך",
"ERROR": "אנא הכנס כתובת URL חוקית"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "דומיין אתר",
"PLACEHOLDER": "הזן את שם האתר שלך (למשל: Acme Inc)"
diff --git a/app/javascript/dashboard/i18n/locale/he/integrations.json b/app/javascript/dashboard/i18n/locale/he/integrations.json
index 3bc992b0f..ebdad2ec4 100644
--- a/app/javascript/dashboard/i18n/locale/he/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/he/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "הכלי המותאם אישית נמחק בהצלחה",
"ERROR_MESSAGE": "מחיקת הכלי המותאם אישית נכשלה"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "פתח חיוב",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "אנא פנה למנהל המערכת שלך לצורך השדרוג."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/he/macros.json b/app/javascript/dashboard/i18n/locale/he/macros.json
index 41365acd0..663167e51 100644
--- a/app/javascript/dashboard/i18n/locale/he/macros.json
+++ b/app/javascript/dashboard/i18n/locale/he/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "הקצה סוכן",
"ADD_LABEL": "הוסף תווית",
"REMOVE_LABEL": "הסר תווית",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "הסר צוות שהוקצה",
"SEND_EMAIL_TRANSCRIPT": "שלח תמלול דוא\"ל",
"MUTE_CONVERSATION": "השתק שיחה",
diff --git a/app/javascript/dashboard/i18n/locale/he/settings.json b/app/javascript/dashboard/i18n/locale/he/settings.json
index 317e096e6..8aa405c49 100644
--- a/app/javascript/dashboard/i18n/locale/he/settings.json
+++ b/app/javascript/dashboard/i18n/locale/he/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "החתימה נשמרה בהצלחה",
"IMAGE_UPLOAD_ERROR": "לא ניתן להעלות את התמונה! נסה שוב",
"IMAGE_UPLOAD_SUCCESS": "התמונה נוספה בהצלחה. אנא לחץ על שמור כדי לשמור את החתימה",
- "IMAGE_UPLOAD_SIZE_ERROR": "גודל התמונה צריך להיות פחות מ-{size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "גודל התמונה צריך להיות פחות מ-{size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "חתימת הודעה",
diff --git a/app/javascript/dashboard/i18n/locale/he/signup.json b/app/javascript/dashboard/i18n/locale/he/signup.json
index 702b7be96..81af889f4 100644
--- a/app/javascript/dashboard/i18n/locale/he/signup.json
+++ b/app/javascript/dashboard/i18n/locale/he/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "לא ניתן להתחבר לשרת Woot, נסה שוב מאוחר יותר"
},
"SUBMIT": "צור חשבון",
- "HAVE_AN_ACCOUNT": "כבר יש לך חשבון?"
+ "HAVE_AN_ACCOUNT": "כבר יש לך חשבון?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "שלח מחדש דוא\"ל אימות",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/hi/agentBots.json b/app/javascript/dashboard/i18n/locale/hi/agentBots.json
index dc92016ab..c17ec60d0 100644
--- a/app/javascript/dashboard/i18n/locale/hi/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/hi/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/hi/automation.json b/app/javascript/dashboard/i18n/locale/hi/automation.json
index 22a9735f4..46f4a520e 100644
--- a/app/javascript/dashboard/i18n/locale/hi/automation.json
+++ b/app/javascript/dashboard/i18n/locale/hi/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Private Note",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/hi/components.json b/app/javascript/dashboard/i18n/locale/hi/components.json
index 748020e02..ea7ea6eb5 100644
--- a/app/javascript/dashboard/i18n/locale/hi/components.json
+++ b/app/javascript/dashboard/i18n/locale/hi/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/hi/contact.json b/app/javascript/dashboard/i18n/locale/hi/contact.json
index b69f88a97..e58921a5e 100644
--- a/app/javascript/dashboard/i18n/locale/hi/contact.json
+++ b/app/javascript/dashboard/i18n/locale/hi/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/hi/helpCenter.json b/app/javascript/dashboard/i18n/locale/hi/helpCenter.json
index 16ffbc4ca..c7989a5bd 100644
--- a/app/javascript/dashboard/i18n/locale/hi/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/hi/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Uncategorized",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json
index 38a9bd2c7..f5dd1270e 100644
--- a/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Please enter a valid URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Website Domain",
"PLACEHOLDER": "Enter your website domain (eg: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/hi/integrations.json b/app/javascript/dashboard/i18n/locale/hi/integrations.json
index 2e88278c6..0be5b2278 100644
--- a/app/javascript/dashboard/i18n/locale/hi/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/hi/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/hi/macros.json b/app/javascript/dashboard/i18n/locale/hi/macros.json
index e12f0ca73..67a5c5003 100644
--- a/app/javascript/dashboard/i18n/locale/hi/macros.json
+++ b/app/javascript/dashboard/i18n/locale/hi/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mute Conversation",
diff --git a/app/javascript/dashboard/i18n/locale/hi/settings.json b/app/javascript/dashboard/i18n/locale/hi/settings.json
index 805ffee46..51f673f15 100644
--- a/app/javascript/dashboard/i18n/locale/hi/settings.json
+++ b/app/javascript/dashboard/i18n/locale/hi/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Signature saved successfully",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Message Signature",
diff --git a/app/javascript/dashboard/i18n/locale/hi/signup.json b/app/javascript/dashboard/i18n/locale/hi/signup.json
index 746ca0999..d16b10839 100644
--- a/app/javascript/dashboard/i18n/locale/hi/signup.json
+++ b/app/javascript/dashboard/i18n/locale/hi/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later"
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/hr/agentBots.json b/app/javascript/dashboard/i18n/locale/hr/agentBots.json
index 018cfee80..1e5019dca 100644
--- a/app/javascript/dashboard/i18n/locale/hr/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/hr/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Nije moguće ažurirati bota, molimo pokušajte ponovno."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Pristupni token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/hr/automation.json b/app/javascript/dashboard/i18n/locale/hr/automation.json
index 95d4d7b10..4de4cfd09 100644
--- a/app/javascript/dashboard/i18n/locale/hr/automation.json
+++ b/app/javascript/dashboard/i18n/locale/hr/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Private Note",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/hr/components.json b/app/javascript/dashboard/i18n/locale/hr/components.json
index 372cb867d..e43d0f95e 100644
--- a/app/javascript/dashboard/i18n/locale/hr/components.json
+++ b/app/javascript/dashboard/i18n/locale/hr/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/hr/contact.json b/app/javascript/dashboard/i18n/locale/hr/contact.json
index f8386b234..c388d8978 100644
--- a/app/javascript/dashboard/i18n/locale/hr/contact.json
+++ b/app/javascript/dashboard/i18n/locale/hr/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/hr/helpCenter.json b/app/javascript/dashboard/i18n/locale/hr/helpCenter.json
index 8291dee6e..ae07eff13 100644
--- a/app/javascript/dashboard/i18n/locale/hr/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/hr/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Uncategorized",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json
index b59380044..40052a8b3 100644
--- a/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Please enter a valid URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Website Domain",
"PLACEHOLDER": "Enter your website domain (eg: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/hr/integrations.json b/app/javascript/dashboard/i18n/locale/hr/integrations.json
index 81ee3b28a..269c4faac 100644
--- a/app/javascript/dashboard/i18n/locale/hr/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/hr/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/hr/macros.json b/app/javascript/dashboard/i18n/locale/hr/macros.json
index bb81f8cb9..188e2cedf 100644
--- a/app/javascript/dashboard/i18n/locale/hr/macros.json
+++ b/app/javascript/dashboard/i18n/locale/hr/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mute Conversation",
diff --git a/app/javascript/dashboard/i18n/locale/hr/settings.json b/app/javascript/dashboard/i18n/locale/hr/settings.json
index 319481096..4ec0300f6 100644
--- a/app/javascript/dashboard/i18n/locale/hr/settings.json
+++ b/app/javascript/dashboard/i18n/locale/hr/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Signature saved successfully",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Message Signature",
diff --git a/app/javascript/dashboard/i18n/locale/hr/signup.json b/app/javascript/dashboard/i18n/locale/hr/signup.json
index ee8f92d85..ac6a702ef 100644
--- a/app/javascript/dashboard/i18n/locale/hr/signup.json
+++ b/app/javascript/dashboard/i18n/locale/hr/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later"
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/hu/agentBots.json b/app/javascript/dashboard/i18n/locale/hu/agentBots.json
index 12e650448..3105889cf 100644
--- a/app/javascript/dashboard/i18n/locale/hu/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/hu/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Nem tudta frissíteni a botot. Kérjük, próbálja újra."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Hozzáférési kulcs",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/hu/automation.json b/app/javascript/dashboard/i18n/locale/hu/automation.json
index bdd2d6cd8..9e7b528ba 100644
--- a/app/javascript/dashboard/i18n/locale/hu/automation.json
+++ b/app/javascript/dashboard/i18n/locale/hu/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Privát üzenet",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "E-mail",
"INBOX": "Fiók",
diff --git a/app/javascript/dashboard/i18n/locale/hu/components.json b/app/javascript/dashboard/i18n/locale/hu/components.json
index 22a01aeaf..5fd99eaed 100644
--- a/app/javascript/dashboard/i18n/locale/hu/components.json
+++ b/app/javascript/dashboard/i18n/locale/hu/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/hu/contact.json b/app/javascript/dashboard/i18n/locale/hu/contact.json
index 0ef163f1e..c7e10ac65 100644
--- a/app/javascript/dashboard/i18n/locale/hu/contact.json
+++ b/app/javascript/dashboard/i18n/locale/hu/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json
index 558fbe47a..557694aec 100644
--- a/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Kérjük helyes URL-t adj meg"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Website domain",
"PLACEHOLDER": "Add meg weboldalad domainjét (pl.: példa.hu)"
diff --git a/app/javascript/dashboard/i18n/locale/hu/integrations.json b/app/javascript/dashboard/i18n/locale/hu/integrations.json
index bed8f4dd1..f3cab8c72 100644
--- a/app/javascript/dashboard/i18n/locale/hu/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/hu/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Számlázási beállítások megnyitása",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/hu/macros.json b/app/javascript/dashboard/i18n/locale/hu/macros.json
index 3e3facdb8..d4592f816 100644
--- a/app/javascript/dashboard/i18n/locale/hu/macros.json
+++ b/app/javascript/dashboard/i18n/locale/hu/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Beszélgetés elnémítása",
diff --git a/app/javascript/dashboard/i18n/locale/hu/settings.json b/app/javascript/dashboard/i18n/locale/hu/settings.json
index 4a530b0fc..acde7e91b 100644
--- a/app/javascript/dashboard/i18n/locale/hu/settings.json
+++ b/app/javascript/dashboard/i18n/locale/hu/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Aláírás sikeresen mentve",
"IMAGE_UPLOAD_ERROR": "A képet nem lehet betölteni! Próbálja újra",
"IMAGE_UPLOAD_SUCCESS": "A kép sikeresen hozzáadva. Az aláírás mentéséhez kattintson a mentésre",
- "IMAGE_UPLOAD_SIZE_ERROR": "A kép mérete kevesebb, mint {size} MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "A kép mérete kevesebb, mint {size} MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Üzenet aláírás",
diff --git a/app/javascript/dashboard/i18n/locale/hu/signup.json b/app/javascript/dashboard/i18n/locale/hu/signup.json
index c9f35486e..5e2d2561a 100644
--- a/app/javascript/dashboard/i18n/locale/hu/signup.json
+++ b/app/javascript/dashboard/i18n/locale/hu/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Nem sikerült csatlakozni a Woot szerverhez, kérjük próbáld később"
},
"SUBMIT": "Fiók létrehozása",
- "HAVE_AN_ACCOUNT": "Már van fiókod?"
+ "HAVE_AN_ACCOUNT": "Már van fiókod?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/hy/agentBots.json b/app/javascript/dashboard/i18n/locale/hy/agentBots.json
index dc92016ab..155cd1d91 100644
--- a/app/javascript/dashboard/i18n/locale/hy/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/hy/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Պատճենել գաղտնաբառը",
+ "COPY_SUCCESS": "Գաղտնաբառը պատճենվել է",
+ "TOGGLE": "Ցուցադրել/թաքցնել գաղտնաբառը",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Պատրաստ է",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/hy/automation.json b/app/javascript/dashboard/i18n/locale/hy/automation.json
index 22a9735f4..51bcc4207 100644
--- a/app/javascript/dashboard/i18n/locale/hy/automation.json
+++ b/app/javascript/dashboard/i18n/locale/hy/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Գաղտնի նշում",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/hy/components.json b/app/javascript/dashboard/i18n/locale/hy/components.json
index 0a2542a84..a75d35b08 100644
--- a/app/javascript/dashboard/i18n/locale/hy/components.json
+++ b/app/javascript/dashboard/i18n/locale/hy/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/hy/contact.json b/app/javascript/dashboard/i18n/locale/hy/contact.json
index 7785edab9..a5879aad6 100644
--- a/app/javascript/dashboard/i18n/locale/hy/contact.json
+++ b/app/javascript/dashboard/i18n/locale/hy/contact.json
@@ -20,6 +20,7 @@
"CALL": "Զանգ",
"CALL_INITIATED": "Զանգը սկսվում է…",
"CALL_FAILED": "Չհաջողվեց սկսել զանգը։ Խնդրում ենք փորձել կրկին։",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Ընտրեք ձայնային մուտքագրման արկղը"
},
diff --git a/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json
index cf46459d3..54ddb3821 100644
--- a/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Խնդրում ենք մուտքագրել ձեր Webhook URL-ը",
"ERROR": "Խնդրում ենք մուտքագրել վավեր URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Պատճենել գաղտնաբառը",
+ "COPY_SUCCESS": "Գաղտնաբառը պատճենվել է",
+ "TOGGLE": "Ցուցադրել/թաքցնել գաղտնաբառը",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Վեբկայքի տիրույթ",
"PLACEHOLDER": "Մուտքագրեք ձեր վեբկայքի տիրույթը (օրինակ՝ acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/hy/integrations.json b/app/javascript/dashboard/i18n/locale/hy/integrations.json
index 4ba0d04ed..852ad54c6 100644
--- a/app/javascript/dashboard/i18n/locale/hy/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/hy/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Alat tersuai berjaya dipadam",
"ERROR_MESSAGE": "Gagal memadam alat tersuai"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/hy/macros.json b/app/javascript/dashboard/i18n/locale/hy/macros.json
index e12f0ca73..67a5c5003 100644
--- a/app/javascript/dashboard/i18n/locale/hy/macros.json
+++ b/app/javascript/dashboard/i18n/locale/hy/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mute Conversation",
diff --git a/app/javascript/dashboard/i18n/locale/hy/settings.json b/app/javascript/dashboard/i18n/locale/hy/settings.json
index 01cebd986..463da6f97 100644
--- a/app/javascript/dashboard/i18n/locale/hy/settings.json
+++ b/app/javascript/dashboard/i18n/locale/hy/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Ստորագրությունը հաջողությամբ պահպանվել է",
"IMAGE_UPLOAD_ERROR": "Պատկերի վերբեռնումը չհաջողվեց։ Փորձեք կրկին",
"IMAGE_UPLOAD_SUCCESS": "Պատկերը հաջողությամբ ավելացվեց։ Խնդրում ենք սեղմել պահպանել՝ ստորագրությունը պահպանելու համար",
- "IMAGE_UPLOAD_SIZE_ERROR": "Պատկերի չափը պետք է լինի {size} ՄԲ-ից փոքր"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Պատկերի չափը պետք է լինի {size} ՄԲ-ից փոքր",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Հաղորդագրության ստորագրություն",
diff --git a/app/javascript/dashboard/i18n/locale/hy/signup.json b/app/javascript/dashboard/i18n/locale/hy/signup.json
index fa4322493..dc06c7501 100644
--- a/app/javascript/dashboard/i18n/locale/hy/signup.json
+++ b/app/javascript/dashboard/i18n/locale/hy/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later"
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Վերակազմակերպել հաստատման էլեկտրոնային փոստը",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/id/agentBots.json b/app/javascript/dashboard/i18n/locale/id/agentBots.json
index 2639f67b0..6f619e280 100644
--- a/app/javascript/dashboard/i18n/locale/id/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/id/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Token Akses",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/id/automation.json b/app/javascript/dashboard/i18n/locale/id/automation.json
index 8ff80ae93..ca7bc83fc 100644
--- a/app/javascript/dashboard/i18n/locale/id/automation.json
+++ b/app/javascript/dashboard/i18n/locale/id/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Catatan Pribadi",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Kotak masuk",
diff --git a/app/javascript/dashboard/i18n/locale/id/components.json b/app/javascript/dashboard/i18n/locale/id/components.json
index 2f1e6802a..e3c2a8b39 100644
--- a/app/javascript/dashboard/i18n/locale/id/components.json
+++ b/app/javascript/dashboard/i18n/locale/id/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/id/contact.json b/app/javascript/dashboard/i18n/locale/id/contact.json
index dada842a7..fce8f036e 100644
--- a/app/javascript/dashboard/i18n/locale/id/contact.json
+++ b/app/javascript/dashboard/i18n/locale/id/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/id/helpCenter.json b/app/javascript/dashboard/i18n/locale/id/helpCenter.json
index 90daf4180..a121f9ced 100644
--- a/app/javascript/dashboard/i18n/locale/id/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/id/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Tanpa Kategori",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json
index 40a5ace86..0dc21ea27 100644
--- a/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Harap masukkan URL yang valid"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Domain Website",
"PLACEHOLDER": "Masukkan domain situs web Anda (misalnya: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/id/integrations.json b/app/javascript/dashboard/i18n/locale/id/integrations.json
index 523de64e1..f27c1e22b 100644
--- a/app/javascript/dashboard/i18n/locale/id/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/id/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Buka tagihan",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/id/macros.json b/app/javascript/dashboard/i18n/locale/id/macros.json
index ff9b66392..1466d1d1b 100644
--- a/app/javascript/dashboard/i18n/locale/id/macros.json
+++ b/app/javascript/dashboard/i18n/locale/id/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Matikan Suara Percakapan",
diff --git a/app/javascript/dashboard/i18n/locale/id/settings.json b/app/javascript/dashboard/i18n/locale/id/settings.json
index 93bb7fb58..3a04f306c 100644
--- a/app/javascript/dashboard/i18n/locale/id/settings.json
+++ b/app/javascript/dashboard/i18n/locale/id/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Tanda tangan berhasil disimpan",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Ukuran gambar harus kurang dari {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Ukuran gambar harus kurang dari {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Tanda Tangan Pesan",
diff --git a/app/javascript/dashboard/i18n/locale/id/signup.json b/app/javascript/dashboard/i18n/locale/id/signup.json
index b580845a0..bc1f3ab84 100644
--- a/app/javascript/dashboard/i18n/locale/id/signup.json
+++ b/app/javascript/dashboard/i18n/locale/id/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Tidak dapat terhubung ke Server Woot, Silahkan coba lagi nanti"
},
"SUBMIT": "Buat akun",
- "HAVE_AN_ACCOUNT": "Sudah punya akun?"
+ "HAVE_AN_ACCOUNT": "Sudah punya akun?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/is/agentBots.json b/app/javascript/dashboard/i18n/locale/is/agentBots.json
index 31fe17975..d35d26597 100644
--- a/app/javascript/dashboard/i18n/locale/is/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/is/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Aðgangslykill",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/is/automation.json b/app/javascript/dashboard/i18n/locale/is/automation.json
index d6d5c1ae8..aabe5a568 100644
--- a/app/javascript/dashboard/i18n/locale/is/automation.json
+++ b/app/javascript/dashboard/i18n/locale/is/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Private Note",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Tölvupóstfang",
"INBOX": "Innhólf",
diff --git a/app/javascript/dashboard/i18n/locale/is/components.json b/app/javascript/dashboard/i18n/locale/is/components.json
index d3c75b1d6..1a4ab4455 100644
--- a/app/javascript/dashboard/i18n/locale/is/components.json
+++ b/app/javascript/dashboard/i18n/locale/is/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/is/contact.json b/app/javascript/dashboard/i18n/locale/is/contact.json
index 8ee019720..76c79686c 100644
--- a/app/javascript/dashboard/i18n/locale/is/contact.json
+++ b/app/javascript/dashboard/i18n/locale/is/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/is/helpCenter.json b/app/javascript/dashboard/i18n/locale/is/helpCenter.json
index d68670cd4..e6327269a 100644
--- a/app/javascript/dashboard/i18n/locale/is/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/is/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Uncategorized",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json
index 8afcdc1c2..c717ee88c 100644
--- a/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Vinsamlega skráðu gilt URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Lén Vefsíðu",
"PLACEHOLDER": "Sláðu lénið á vefsíðunni þinni (dæmi: acme.is)"
diff --git a/app/javascript/dashboard/i18n/locale/is/integrations.json b/app/javascript/dashboard/i18n/locale/is/integrations.json
index 74181313d..337f59e3c 100644
--- a/app/javascript/dashboard/i18n/locale/is/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/is/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/is/macros.json b/app/javascript/dashboard/i18n/locale/is/macros.json
index 4d5bb632f..bd1b9342d 100644
--- a/app/javascript/dashboard/i18n/locale/is/macros.json
+++ b/app/javascript/dashboard/i18n/locale/is/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Þagga Samtal",
diff --git a/app/javascript/dashboard/i18n/locale/is/settings.json b/app/javascript/dashboard/i18n/locale/is/settings.json
index e470fc11f..a317e5195 100644
--- a/app/javascript/dashboard/i18n/locale/is/settings.json
+++ b/app/javascript/dashboard/i18n/locale/is/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Undirskrift var vistuð",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Undirskrift skilaboða",
diff --git a/app/javascript/dashboard/i18n/locale/is/signup.json b/app/javascript/dashboard/i18n/locale/is/signup.json
index 7a7965142..8f5b408cb 100644
--- a/app/javascript/dashboard/i18n/locale/is/signup.json
+++ b/app/javascript/dashboard/i18n/locale/is/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Náði ekki að tengjast við netþjóna Woot, vinsamlegast reynið aftur"
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Ertu nú þegar með aðgang?"
+ "HAVE_AN_ACCOUNT": "Ertu nú þegar með aðgang?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/it/agentBots.json b/app/javascript/dashboard/i18n/locale/it/agentBots.json
index 55cc5de67..3b800bc12 100644
--- a/app/javascript/dashboard/i18n/locale/it/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/it/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Impossibile aggiornare il bot. Riprova."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copia secret negli appunti",
+ "COPY_SUCCESS": "Secret copiato negli appunti",
+ "TOGGLE": "Cambia visibilità secret",
+ "CREATED_DESC": "Usa il secret qui sotto per verificare le signature dei webhook. Per favore copialo ora, puoi anche trovarlo in seguito nelle impostazioni del bot.",
+ "DONE": "Fatto",
+ "RESET_SUCCESS": "Webhook secret rigenerato con successo",
+ "RESET_ERROR": "Impossibile rigenerare il webhook secret. Riprova"
+ },
"ACCESS_TOKEN": {
"TITLE": "Token di Accesso",
"DESCRIPTION": "Copia il token di accesso e salvalo in un luogo sicuro",
diff --git a/app/javascript/dashboard/i18n/locale/it/automation.json b/app/javascript/dashboard/i18n/locale/it/automation.json
index e9e67cd07..f779061b1 100644
--- a/app/javascript/dashboard/i18n/locale/it/automation.json
+++ b/app/javascript/dashboard/i18n/locale/it/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assegna a un Operatore",
"ASSIGN_TEAM": "Assegna a un Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Rimuovi Team Assegnato",
"ADD_LABEL": "Aggiungi Etichetta",
"REMOVE_LABEL": "Rimuovi Etichetta",
"SEND_EMAIL_TO_TEAM": "Invia un'email al Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Tipo di Messaggio",
+ "PRIVATE_NOTE": "Nota Privata",
"MESSAGE_CONTAINS": "Il Messaggio Contiene",
"EMAIL": "Email",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/it/components.json b/app/javascript/dashboard/i18n/locale/it/components.json
index 9f559cade..e44c5b92c 100644
--- a/app/javascript/dashboard/i18n/locale/it/components.json
+++ b/app/javascript/dashboard/i18n/locale/it/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/it/contact.json b/app/javascript/dashboard/i18n/locale/it/contact.json
index 892de6660..915d8af28 100644
--- a/app/javascript/dashboard/i18n/locale/it/contact.json
+++ b/app/javascript/dashboard/i18n/locale/it/contact.json
@@ -20,6 +20,7 @@
"CALL": "Chiama",
"CALL_INITIATED": "Chiamando il contatto…",
"CALL_FAILED": "Impossibile avviare la chiamata. Riprova.",
+ "CLICK_TO_EDIT": "Clicca per modificare",
"VOICE_INBOX_PICKER": {
"TITLE": "Scegli una inbox vocale"
},
diff --git a/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json
index f76065367..91c7d51f0 100644
--- a/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Inserisci il tuo URL Webhook",
"ERROR": "Inserisci un URL valido"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copia secret negli appunti",
+ "COPY_SUCCESS": "Secret copiato negli appunti",
+ "TOGGLE": "Cambia visibilità secret",
+ "RESET_SUCCESS": "Webhook secret rigenerato con successo",
+ "RESET_ERROR": "Impossibile rigenerare il webhook secret. Riprova"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Dominio del Sito",
"PLACEHOLDER": "Inserisci il dominio del tuo sito web (es: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/it/integrations.json b/app/javascript/dashboard/i18n/locale/it/integrations.json
index 523de2d32..0c41aee3e 100644
--- a/app/javascript/dashboard/i18n/locale/it/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/it/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Strumento personalizzato eliminato correttamente",
"ERROR_MESSAGE": "Impossibile eliminare lo strumento personalizzato"
},
+ "PAYWALL": {
+ "TITLE": "Aggiorna per utilizzare gli strumenti con Captain",
+ "AVAILABLE_ON": "Gli strumenti Captain sono disponibili solo nei piani Business e Enterprise. Si prega di aggiornare al piano Business per utilizzare la funzionalità.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Apri fatturazione",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Gli strumenti Captain sono disponibili solo nei piani a pagamento.",
+ "UPGRADE_PROMPT": "Aggiorna a un piano a pagamento per utilizzare questa funzione.",
+ "ASK_ADMIN": "Contatta il tuo amministratore per l'aggiornamento."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/it/macros.json b/app/javascript/dashboard/i18n/locale/it/macros.json
index 1a05380ad..c91b69cee 100644
--- a/app/javascript/dashboard/i18n/locale/it/macros.json
+++ b/app/javascript/dashboard/i18n/locale/it/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assegna un Operatore",
"ADD_LABEL": "Aggiungi Etichetta",
"REMOVE_LABEL": "Rimuovi Etichetta",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Rimuovi Team Assegnato",
"SEND_EMAIL_TRANSCRIPT": "Invia una Trascrizione Email",
"MUTE_CONVERSATION": "Silenzia Conversazione",
diff --git a/app/javascript/dashboard/i18n/locale/it/settings.json b/app/javascript/dashboard/i18n/locale/it/settings.json
index 32b3cdd10..c210c8872 100644
--- a/app/javascript/dashboard/i18n/locale/it/settings.json
+++ b/app/javascript/dashboard/i18n/locale/it/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Firma salvata con successo",
"IMAGE_UPLOAD_ERROR": "Impossibile caricare l'immagine! Riprova",
"IMAGE_UPLOAD_SUCCESS": "Immagine aggiunta con successo. Clicca su Salva per salvare la firma",
- "IMAGE_UPLOAD_SIZE_ERROR": "La dimensione dell'immagine deve essere inferiore a {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "La dimensione dell'immagine deve essere inferiore a {size}MB",
+ "INLINE_IMAGE_WARNING": "Le immagini in linea non possono più essere incollate. Si prega di utilizzare il pulsante di caricamento dell'immagine per aggiungere immagini alla firma."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Firma del messaggio",
diff --git a/app/javascript/dashboard/i18n/locale/it/signup.json b/app/javascript/dashboard/i18n/locale/it/signup.json
index 86c8fdf2f..a07e38934 100644
--- a/app/javascript/dashboard/i18n/locale/it/signup.json
+++ b/app/javascript/dashboard/i18n/locale/it/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Impossibile connettersi al server Woot. Riprova."
},
"SUBMIT": "Crea account",
- "HAVE_AN_ACCOUNT": "Hai già un account?"
+ "HAVE_AN_ACCOUNT": "Hai già un account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Controlla le tue email",
+ "DESCRIPTION": "Abbiamo inviato un link di verifica a {email}. Clicca sul link per verificare la tua email e iniziare.",
+ "RESEND": "Invia nuovamente email di verifica",
+ "RESEND_SUCCESS": "Email di verifica inviata. Controlla la tua casella di posta.",
+ "RESEND_ERROR": "Impossibile inviare l'email di verifica. Riprova."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ja/agentBots.json b/app/javascript/dashboard/i18n/locale/ja/agentBots.json
index 776fa5517..5b61845bc 100644
--- a/app/javascript/dashboard/i18n/locale/ja/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ja/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "ボットを更新できませんでした。再試行してください。"
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "アクセストークン",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/ja/automation.json b/app/javascript/dashboard/i18n/locale/ja/automation.json
index f8def7fba..4d19e9150 100644
--- a/app/javascript/dashboard/i18n/locale/ja/automation.json
+++ b/app/javascript/dashboard/i18n/locale/ja/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "非公開メモ",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Eメール",
"INBOX": "受信トレイ",
diff --git a/app/javascript/dashboard/i18n/locale/ja/components.json b/app/javascript/dashboard/i18n/locale/ja/components.json
index f91e4f5d4..4b7f15413 100644
--- a/app/javascript/dashboard/i18n/locale/ja/components.json
+++ b/app/javascript/dashboard/i18n/locale/ja/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ja/contact.json b/app/javascript/dashboard/i18n/locale/ja/contact.json
index 3b9bb73a7..d401d54ee 100644
--- a/app/javascript/dashboard/i18n/locale/ja/contact.json
+++ b/app/javascript/dashboard/i18n/locale/ja/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json
index 17994dc40..409934efe 100644
--- a/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Webhook URLを入力してください",
"ERROR": "有効なURLを入力してください"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "ウェブサイトのドメイン",
"PLACEHOLDER": "ウェブサイトのドメインを入力してください(例:acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/ja/integrations.json b/app/javascript/dashboard/i18n/locale/ja/integrations.json
index 0df440e47..c501c1993 100644
--- a/app/javascript/dashboard/i18n/locale/ja/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ja/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "請求情報を開く",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "管理者にアップグレードを依頼してください。"
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/ja/macros.json b/app/javascript/dashboard/i18n/locale/ja/macros.json
index 0a1bbbca5..59909faba 100644
--- a/app/javascript/dashboard/i18n/locale/ja/macros.json
+++ b/app/javascript/dashboard/i18n/locale/ja/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "会話をミュート",
diff --git a/app/javascript/dashboard/i18n/locale/ja/settings.json b/app/javascript/dashboard/i18n/locale/ja/settings.json
index bb4290648..abc8872e2 100644
--- a/app/javascript/dashboard/i18n/locale/ja/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ja/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "署名が正常に保存されました",
"IMAGE_UPLOAD_ERROR": "画像をアップロードできませんでした。もう一度お試しください。",
"IMAGE_UPLOAD_SUCCESS": "画像が正常に追加されました。保存をクリックして署名を保存してください。",
- "IMAGE_UPLOAD_SIZE_ERROR": "画像サイズは{size}MB未満である必要があります"
+ "IMAGE_UPLOAD_SIZE_ERROR": "画像サイズは{size}MB未満である必要があります",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "メッセージ署名",
diff --git a/app/javascript/dashboard/i18n/locale/ja/signup.json b/app/javascript/dashboard/i18n/locale/ja/signup.json
index aa0b74a44..45bc7d6e9 100644
--- a/app/javascript/dashboard/i18n/locale/ja/signup.json
+++ b/app/javascript/dashboard/i18n/locale/ja/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Wootサーバーに接続できませんでした。後でもう一度お試しください。"
},
"SUBMIT": "アカウントを作成",
- "HAVE_AN_ACCOUNT": "すでにアカウントをお持ちですか?"
+ "HAVE_AN_ACCOUNT": "すでにアカウントをお持ちですか?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "認証メールを再送",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ka/agentBots.json b/app/javascript/dashboard/i18n/locale/ka/agentBots.json
index 437a1c612..099cd276b 100644
--- a/app/javascript/dashboard/i18n/locale/ka/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ka/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "საიდუმლოს კოპირება კლიპბორდზე",
+ "COPY_SUCCESS": "საიდუმლო კლიპბორდზე გადაწერილია",
+ "TOGGLE": "საიდუმლოს ხილვადობის გადართვა",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "მზადაა",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "წვდომის ტოკენი",
"DESCRIPTION": "დააკოპირეთ წვდომის ტოკენი და უსაფრთხოდ შეინახეთ",
diff --git a/app/javascript/dashboard/i18n/locale/ka/automation.json b/app/javascript/dashboard/i18n/locale/ka/automation.json
index e4b78e3c3..cb865d8c3 100644
--- a/app/javascript/dashboard/i18n/locale/ka/automation.json
+++ b/app/javascript/dashboard/i18n/locale/ka/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "აგენტის მინიჭება",
"ASSIGN_TEAM": "გუნდის მინიჭება",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "იარლიყის დამატება",
"REMOVE_LABEL": "იარლიყის მოცილება",
"SEND_EMAIL_TO_TEAM": "ელფოსტის გაგზავნა გუნდისთვის",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "შეტყობინების ტიპი",
+ "PRIVATE_NOTE": "Private Note",
"MESSAGE_CONTAINS": "შეტყობინება შეიცავს",
"EMAIL": "ელფოსტა",
"INBOX": "ინბოქსი",
diff --git a/app/javascript/dashboard/i18n/locale/ka/components.json b/app/javascript/dashboard/i18n/locale/ka/components.json
index 0a2542a84..a75d35b08 100644
--- a/app/javascript/dashboard/i18n/locale/ka/components.json
+++ b/app/javascript/dashboard/i18n/locale/ka/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ka/contact.json b/app/javascript/dashboard/i18n/locale/ka/contact.json
index bf80c5567..726f40ada 100644
--- a/app/javascript/dashboard/i18n/locale/ka/contact.json
+++ b/app/javascript/dashboard/i18n/locale/ka/contact.json
@@ -20,6 +20,7 @@
"CALL": "დარეკვა",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "აირჩიეთ ხმოვანი საფოსტო ყუთი"
},
diff --git a/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json
index 09643219a..bb79e1ea2 100644
--- a/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "გთხოვთ, შეიყვანეთ თქვენი Webhook URL",
"ERROR": "გთხოვთ, შეიყვანოთ ვალიდური URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "საიდუმლოს კოპირება კლიპბორდზე",
+ "COPY_SUCCESS": "საიდუმლო კლიპბორდზე გადაწერილია",
+ "TOGGLE": "საიდუმლოს ხილვადობის გადართვა",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "ვებგვერდის დომენი",
"PLACEHOLDER": "შეიყვანეთ თქვენი ვებსაიტის დომენი (მაგ: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/ka/integrations.json b/app/javascript/dashboard/i18n/locale/ka/integrations.json
index df76bfabc..ec8452ce2 100644
--- a/app/javascript/dashboard/i18n/locale/ka/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ka/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "კასტომური ხელსაწყო წარმატებით წაიშალა",
"ERROR_MESSAGE": "კასტომური ხელსაწყოს წაშლა ვერ მოხერხდა"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/ka/macros.json b/app/javascript/dashboard/i18n/locale/ka/macros.json
index 182732c3c..9e25712ff 100644
--- a/app/javascript/dashboard/i18n/locale/ka/macros.json
+++ b/app/javascript/dashboard/i18n/locale/ka/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "იარლიყის დამატება",
"REMOVE_LABEL": "იარლიყის მოცილება",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "საუბრის ჩანაწერის გაგზავნა ელფოსტით",
"MUTE_CONVERSATION": "საუბრის დადუმება",
diff --git a/app/javascript/dashboard/i18n/locale/ka/settings.json b/app/javascript/dashboard/i18n/locale/ka/settings.json
index 2333f765a..118461266 100644
--- a/app/javascript/dashboard/i18n/locale/ka/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ka/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "ხელმოწერა წარმატებით შენახულია",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "მესიჯის ხელმოწერა",
diff --git a/app/javascript/dashboard/i18n/locale/ka/signup.json b/app/javascript/dashboard/i18n/locale/ka/signup.json
index 5140c3c92..71a039e7d 100644
--- a/app/javascript/dashboard/i18n/locale/ka/signup.json
+++ b/app/javascript/dashboard/i18n/locale/ka/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later"
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ko/agentBots.json b/app/javascript/dashboard/i18n/locale/ko/agentBots.json
index 87296ccd3..6135d5a96 100644
--- a/app/javascript/dashboard/i18n/locale/ko/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ko/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "봇을 업데이트할 수 없습니다. 다시 시도하십시오."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "시크릿을 클립보드에 복사",
+ "COPY_SUCCESS": "시크릿이 클립보드에 복사되었습니다",
+ "TOGGLE": "시크릿 표시 전환",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "액세스 토큰",
"DESCRIPTION": "액세스 토큰을 복사하여 안전하게 보관하십시오.",
diff --git a/app/javascript/dashboard/i18n/locale/ko/automation.json b/app/javascript/dashboard/i18n/locale/ko/automation.json
index 19636cb22..59be1f768 100644
--- a/app/javascript/dashboard/i18n/locale/ko/automation.json
+++ b/app/javascript/dashboard/i18n/locale/ko/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "에이전트에게 배정",
"ASSIGN_TEAM": "팀 배정",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "배정된 팀 제거",
"ADD_LABEL": "라벨 추가",
"REMOVE_LABEL": "라벨 제거",
"SEND_EMAIL_TO_TEAM": "팀에 이메일 보내기",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "메시지 유형",
+ "PRIVATE_NOTE": "개인 노트",
"MESSAGE_CONTAINS": "메시지 포함",
"EMAIL": "이메일",
"INBOX": "받은 메시지함",
diff --git a/app/javascript/dashboard/i18n/locale/ko/components.json b/app/javascript/dashboard/i18n/locale/ko/components.json
index f457ed7d5..d25d205fd 100644
--- a/app/javascript/dashboard/i18n/locale/ko/components.json
+++ b/app/javascript/dashboard/i18n/locale/ko/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "곧 출시 예정!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ko/contact.json b/app/javascript/dashboard/i18n/locale/ko/contact.json
index d7fc9e90e..daad5a048 100644
--- a/app/javascript/dashboard/i18n/locale/ko/contact.json
+++ b/app/javascript/dashboard/i18n/locale/ko/contact.json
@@ -20,6 +20,7 @@
"CALL": "통화",
"CALL_INITIATED": "연락처에 전화 거는 중...",
"CALL_FAILED": "통화를 시작할 수 없습니다. 다시 시도하십시오.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "음성 받은 메시지함 선택"
},
diff --git a/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json
index a7ac2e42c..519198e9e 100644
--- a/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "웹훅 URL을 입력하십시오.",
"ERROR": "올바른 URL을 입력하십시오."
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "시크릿을 클립보드에 복사",
+ "COPY_SUCCESS": "시크릿이 클립보드에 복사되었습니다",
+ "TOGGLE": "시크릿 표시 전환",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "웹사이트 도메인",
"PLACEHOLDER": "웹사이트 도메인을 입력하십시오 (예: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/ko/integrations.json b/app/javascript/dashboard/i18n/locale/ko/integrations.json
index a7b91f18a..94d6599e0 100644
--- a/app/javascript/dashboard/i18n/locale/ko/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ko/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "사용자 정의 도구가 성공적으로 삭제되었습니다",
"ERROR_MESSAGE": "사용자 정의 도구를 삭제하지 못했습니다"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "청구서 열기",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "업그레이드에 대해 관리자에게 문의하십시오."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/ko/macros.json b/app/javascript/dashboard/i18n/locale/ko/macros.json
index dfa9fba44..e5d913c76 100644
--- a/app/javascript/dashboard/i18n/locale/ko/macros.json
+++ b/app/javascript/dashboard/i18n/locale/ko/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "에이전트 배정",
"ADD_LABEL": "라벨 추가",
"REMOVE_LABEL": "라벨 제거",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "배정된 팀 제거",
"SEND_EMAIL_TRANSCRIPT": "이메일 대화 내용 전송",
"MUTE_CONVERSATION": "대화 음소거",
diff --git a/app/javascript/dashboard/i18n/locale/ko/settings.json b/app/javascript/dashboard/i18n/locale/ko/settings.json
index 69a5e08f6..225be4cb6 100644
--- a/app/javascript/dashboard/i18n/locale/ko/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ko/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "서명이 성공적으로 저장되었습니다",
"IMAGE_UPLOAD_ERROR": "이미지를 업로드할 수 없습니다! 다시 시도하십시오",
"IMAGE_UPLOAD_SUCCESS": "이미지가 성공적으로 추가되었습니다. 저장을 클릭하여 서명을 저장하십시오",
- "IMAGE_UPLOAD_SIZE_ERROR": "이미지 크기는 {size}MB 미만이어야 합니다"
+ "IMAGE_UPLOAD_SIZE_ERROR": "이미지 크기는 {size}MB 미만이어야 합니다",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "메시지 서명",
diff --git a/app/javascript/dashboard/i18n/locale/ko/signup.json b/app/javascript/dashboard/i18n/locale/ko/signup.json
index 6e6e9e854..008f58683 100644
--- a/app/javascript/dashboard/i18n/locale/ko/signup.json
+++ b/app/javascript/dashboard/i18n/locale/ko/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Chatwoot 서버에 연결할 수 없습니다. 나중에 다시 시도하십시오."
},
"SUBMIT": "계정 만들기",
- "HAVE_AN_ACCOUNT": "이미 계정이 있으십니까?"
+ "HAVE_AN_ACCOUNT": "이미 계정이 있으십니까?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "인증 이메일 다시 보내기",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/lt/agentBots.json b/app/javascript/dashboard/i18n/locale/lt/agentBots.json
index 7812085bc..a1ea2a669 100644
--- a/app/javascript/dashboard/i18n/locale/lt/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/lt/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Nepavyko atnaujinti boto. Bandykite dar kartą vėliau."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Prieeigos raktas",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/lt/automation.json b/app/javascript/dashboard/i18n/locale/lt/automation.json
index 3a1e1549a..4fa4b169e 100644
--- a/app/javascript/dashboard/i18n/locale/lt/automation.json
+++ b/app/javascript/dashboard/i18n/locale/lt/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Privati pastaba",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "El. paštas",
"INBOX": "Gautų laiškų aplankas",
diff --git a/app/javascript/dashboard/i18n/locale/lt/components.json b/app/javascript/dashboard/i18n/locale/lt/components.json
index 52980d59f..9fbe67cba 100644
--- a/app/javascript/dashboard/i18n/locale/lt/components.json
+++ b/app/javascript/dashboard/i18n/locale/lt/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/lt/contact.json b/app/javascript/dashboard/i18n/locale/lt/contact.json
index 9538b4a71..5597a73c4 100644
--- a/app/javascript/dashboard/i18n/locale/lt/contact.json
+++ b/app/javascript/dashboard/i18n/locale/lt/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Skambinama kontaktui...",
"CALL_FAILED": "Nepavyko pradėti skambučio. Bandykite dar kartą.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json
index cea5436dd..ee23589a2 100644
--- a/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Prašome įvesti tesingą URL adresą"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Internetinio svetainės domenas",
"PLACEHOLDER": "Įveskite savo internetinės svetainės pavadinimą (pvz.: Acme Inc)"
diff --git a/app/javascript/dashboard/i18n/locale/lt/integrations.json b/app/javascript/dashboard/i18n/locale/lt/integrations.json
index 0fc5f490f..b27f860c5 100644
--- a/app/javascript/dashboard/i18n/locale/lt/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/lt/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Atidaryti mokėjimą",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/lt/macros.json b/app/javascript/dashboard/i18n/locale/lt/macros.json
index 6dba5c1ff..ce7e88310 100644
--- a/app/javascript/dashboard/i18n/locale/lt/macros.json
+++ b/app/javascript/dashboard/i18n/locale/lt/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Tildyti pokalbį",
diff --git a/app/javascript/dashboard/i18n/locale/lt/settings.json b/app/javascript/dashboard/i18n/locale/lt/settings.json
index 64f0ea307..51c8a9e54 100644
--- a/app/javascript/dashboard/i18n/locale/lt/settings.json
+++ b/app/javascript/dashboard/i18n/locale/lt/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Parašas išsaugotas sėkmingai",
"IMAGE_UPLOAD_ERROR": "Nepavyko įkelti vaizdo! Prašau, pabandykite dar kartą",
"IMAGE_UPLOAD_SUCCESS": "Vaizdas sėkmingai pridėtas. Spustelėkite \"Išsaugoti\", kad išsaugotumėte parašą",
- "IMAGE_UPLOAD_SIZE_ERROR": "Paveiksliuko dydis turi būti mažesnis nei {size} MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Paveiksliuko dydis turi būti mažesnis nei {size} MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Pranešimo parašas",
diff --git a/app/javascript/dashboard/i18n/locale/lt/signup.json b/app/javascript/dashboard/i18n/locale/lt/signup.json
index 8b8a93759..4200b6587 100644
--- a/app/javascript/dashboard/i18n/locale/lt/signup.json
+++ b/app/javascript/dashboard/i18n/locale/lt/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later"
},
"SUBMIT": "Sukurti paskyrą",
- "HAVE_AN_ACCOUNT": "Jau turi prisijungimo paskyrą?"
+ "HAVE_AN_ACCOUNT": "Jau turi prisijungimo paskyrą?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/lv/agentBots.json b/app/javascript/dashboard/i18n/locale/lv/agentBots.json
index 32199bec2..af6ef9e2c 100644
--- a/app/javascript/dashboard/i18n/locale/lv/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/lv/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Nevarēja atjaunināt robotu. Lūdzu mēģiniet vēlreiz."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Piekļuves Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/lv/automation.json b/app/javascript/dashboard/i18n/locale/lv/automation.json
index 2e7ec674b..cac761605 100644
--- a/app/javascript/dashboard/i18n/locale/lv/automation.json
+++ b/app/javascript/dashboard/i18n/locale/lv/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Piešķirt Aģentam",
"ASSIGN_TEAM": "Piešķirt Komandai",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Noņemt Piešķirto Komandu",
"ADD_LABEL": "Pievienot Etiķeti",
"REMOVE_LABEL": "Noņemt Etiķeti",
"SEND_EMAIL_TO_TEAM": "Nosūtīt E-pastu Komandai",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Ziņojuma Tips",
+ "PRIVATE_NOTE": "Privāta Piezīme",
"MESSAGE_CONTAINS": "Ziņojums Satur",
"EMAIL": "E-pasts",
"INBOX": "Iesūtne",
diff --git a/app/javascript/dashboard/i18n/locale/lv/components.json b/app/javascript/dashboard/i18n/locale/lv/components.json
index fc47b929f..869838135 100644
--- a/app/javascript/dashboard/i18n/locale/lv/components.json
+++ b/app/javascript/dashboard/i18n/locale/lv/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/lv/contact.json b/app/javascript/dashboard/i18n/locale/lv/contact.json
index fa9e6755e..8050fc0c3 100644
--- a/app/javascript/dashboard/i18n/locale/lv/contact.json
+++ b/app/javascript/dashboard/i18n/locale/lv/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/lv/helpCenter.json b/app/javascript/dashboard/i18n/locale/lv/helpCenter.json
index 1c61d5cb5..3e74d4ada 100644
--- a/app/javascript/dashboard/i18n/locale/lv/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/lv/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "Papildu īpašības",
"UNCATEGORIZED": "Bez kategorijas",
- "EDITOR_PLACEHOLDER": "Uzrakstiet kaut ko..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Raksta īpašības",
diff --git a/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json
index 88d3c5a2f..a7bb4fc0a 100644
--- a/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Lūdzu ievadiet Webhook URL",
"ERROR": "Lūdzu, ievadiet derīgu URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Tīmekļa Vietnes Domēns",
"PLACEHOLDER": "Ievadiet savas tīmekļa vietnes domēnu (piemēram: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/lv/integrations.json b/app/javascript/dashboard/i18n/locale/lv/integrations.json
index 589ce259b..426463dfa 100644
--- a/app/javascript/dashboard/i18n/locale/lv/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/lv/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Atvērt norēķinus",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Lai pārietu uz maksas versiju, lūdzu sazinieties ar savu administratoru."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/lv/macros.json b/app/javascript/dashboard/i18n/locale/lv/macros.json
index 677acc6dd..5b5e2e547 100644
--- a/app/javascript/dashboard/i18n/locale/lv/macros.json
+++ b/app/javascript/dashboard/i18n/locale/lv/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Piešķirt Aģentu",
"ADD_LABEL": "Pievienot Etiķeti",
"REMOVE_LABEL": "Noņemt Etiķeti",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Noņemt Piešķirto Komandu",
"SEND_EMAIL_TRANSCRIPT": "Nosūtīt uz E-pastu Transkriptu",
"MUTE_CONVERSATION": "Izslēgt Sarunu",
diff --git a/app/javascript/dashboard/i18n/locale/lv/settings.json b/app/javascript/dashboard/i18n/locale/lv/settings.json
index 77c7101c8..2f8d166d3 100644
--- a/app/javascript/dashboard/i18n/locale/lv/settings.json
+++ b/app/javascript/dashboard/i18n/locale/lv/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Paraksts ir veiksmīgi saglabāts",
"IMAGE_UPLOAD_ERROR": "Nevarēja augšupielādēt attēlu! Lūdzu, mēģiniet vēlreiz",
"IMAGE_UPLOAD_SUCCESS": "Attēls ir veiksmīgi pievienots. Lūdzu, noklikšķiniet uz saglabāt, lai saglabātu parakstu",
- "IMAGE_UPLOAD_SIZE_ERROR": "Attēla izmēram ir jābūt mazākam par {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Attēla izmēram ir jābūt mazākam par {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Ziņojuma Paraksts",
diff --git a/app/javascript/dashboard/i18n/locale/lv/signup.json b/app/javascript/dashboard/i18n/locale/lv/signup.json
index 65cd1d0c6..8748e7803 100644
--- a/app/javascript/dashboard/i18n/locale/lv/signup.json
+++ b/app/javascript/dashboard/i18n/locale/lv/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Nevarēja izveidot savienojumu ar Woot serveri. Lūdzu mēģiniet vēlreiz."
},
"SUBMIT": "Izveidot kontu",
- "HAVE_AN_ACCOUNT": "Jau ir konts?"
+ "HAVE_AN_ACCOUNT": "Jau ir konts?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Sūtīt verifikācijas e-pastu atkārtoti",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ml/agentBots.json b/app/javascript/dashboard/i18n/locale/ml/agentBots.json
index a2187f99b..1b9ea6c25 100644
--- a/app/javascript/dashboard/i18n/locale/ml/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ml/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "രഹസ്യം ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തുക",
+ "COPY_SUCCESS": "രഹസ്യം ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തി",
+ "TOGGLE": "രഹസ്യ ദൃശ്യത ടോഗിൾ ചെയ്യുക",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "സമാപ്തം",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "ആക്സസ് ടോക്കൺ",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/ml/automation.json b/app/javascript/dashboard/i18n/locale/ml/automation.json
index d177a6211..d81f4a8e5 100644
--- a/app/javascript/dashboard/i18n/locale/ml/automation.json
+++ b/app/javascript/dashboard/i18n/locale/ml/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "സ്വകാര്യ കുറിപ്പ്",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "ഇമെയിൽ",
"INBOX": "ഇൻബോക്സ്",
diff --git a/app/javascript/dashboard/i18n/locale/ml/components.json b/app/javascript/dashboard/i18n/locale/ml/components.json
index b0bc6e350..262dec2fe 100644
--- a/app/javascript/dashboard/i18n/locale/ml/components.json
+++ b/app/javascript/dashboard/i18n/locale/ml/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ml/contact.json b/app/javascript/dashboard/i18n/locale/ml/contact.json
index a7f37fb06..ab5e41f06 100644
--- a/app/javascript/dashboard/i18n/locale/ml/contact.json
+++ b/app/javascript/dashboard/i18n/locale/ml/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/ml/helpCenter.json b/app/javascript/dashboard/i18n/locale/ml/helpCenter.json
index 09732a975..b94ea368c 100644
--- a/app/javascript/dashboard/i18n/locale/ml/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/ml/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Uncategorized",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json
index 7a260f18a..09d8ab99a 100644
--- a/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "ദയവായി നിങ്ങളുടെ വെബ്ഹുക്ക് URL നൽകുക",
"ERROR": "ദയവായി സാധുവായ ഒരു യുആർഎൽ നൽകുക"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "രഹസ്യം ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തുക",
+ "COPY_SUCCESS": "രഹസ്യം ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തി",
+ "TOGGLE": "രഹസ്യ ദൃശ്യത ടോഗിൾ ചെയ്യുക",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "വെബ്സൈറ്റ് ഡൊമെയ്ൻ",
"PLACEHOLDER": "നിങ്ങളുടെ വെബ്സൈറ്റ് ഡൊമെയ്ൻ നൽകുക (ഉദാ: punnyalan.com)"
diff --git a/app/javascript/dashboard/i18n/locale/ml/integrations.json b/app/javascript/dashboard/i18n/locale/ml/integrations.json
index eb4af99db..9fca1bdf3 100644
--- a/app/javascript/dashboard/i18n/locale/ml/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ml/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "കസ്റ്റം ടൂൾ വിജയകരമായി ഇല്ലാതാക്കി",
"ERROR_MESSAGE": "കസ്റ്റം ടൂൾ ഇല്ലാതാക്കാൻ പരാജയപ്പെട്ടു"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/ml/macros.json b/app/javascript/dashboard/i18n/locale/ml/macros.json
index 2f1d1cbbf..7ef03bcc2 100644
--- a/app/javascript/dashboard/i18n/locale/ml/macros.json
+++ b/app/javascript/dashboard/i18n/locale/ml/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "സംഭാഷണം ഒച്ചയിലാതാക്കുക",
diff --git a/app/javascript/dashboard/i18n/locale/ml/settings.json b/app/javascript/dashboard/i18n/locale/ml/settings.json
index 40b0cb605..42db3b355 100644
--- a/app/javascript/dashboard/i18n/locale/ml/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ml/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "ഒപ്പ് വിജയകരമായി സംരക്ഷിച്ചു",
"IMAGE_UPLOAD_ERROR": "ചിത്രം അപ്ലോഡ് ചെയ്യാൻ കഴിഞ്ഞില്ല! വീണ്ടും ശ്രമിക്കുക",
"IMAGE_UPLOAD_SUCCESS": "ചിത്രം വിജയകരമായി ചേർത്തു. സിഗ്നേച്ചർ സേവ് ചെയ്യാൻ ദയവായി സേവ് ക്ലിക്ക് ചെയ്യുക",
- "IMAGE_UPLOAD_SIZE_ERROR": "ചിത്രത്തിന്റെ വലുപ്പം {size}MB-ൽ കുറവായിരിക്കണം"
+ "IMAGE_UPLOAD_SIZE_ERROR": "ചിത്രത്തിന്റെ വലുപ്പം {size}MB-ൽ കുറവായിരിക്കണം",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "സന്ദേശ ഒപ്പ്",
diff --git a/app/javascript/dashboard/i18n/locale/ml/signup.json b/app/javascript/dashboard/i18n/locale/ml/signup.json
index 1d757d213..7ca726e57 100644
--- a/app/javascript/dashboard/i18n/locale/ml/signup.json
+++ b/app/javascript/dashboard/i18n/locale/ml/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "സെർവറിലേക്ക് കണക്റ്റുചെയ്യാനായില്ല, ദയവായി പിന്നീട് വീണ്ടും ശ്രമിക്കുക"
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "സ്ഥിരീകരണ ഇമെയിൽ വീണ്ടും അയയ്ക്കുക",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ms/agentBots.json b/app/javascript/dashboard/i18n/locale/ms/agentBots.json
index cd283f015..11144f058 100644
--- a/app/javascript/dashboard/i18n/locale/ms/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ms/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Salin rahsia ke papan klip",
+ "COPY_SUCCESS": "Rahsia disalin ke papan klip",
+ "TOGGLE": "Togol keterlihatan rahsia",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Selesai",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/ms/automation.json b/app/javascript/dashboard/i18n/locale/ms/automation.json
index 0849b9757..98bd3af3f 100644
--- a/app/javascript/dashboard/i18n/locale/ms/automation.json
+++ b/app/javascript/dashboard/i18n/locale/ms/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Nota Peribadi",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/ms/components.json b/app/javascript/dashboard/i18n/locale/ms/components.json
index fd5c6ddca..cae53a75c 100644
--- a/app/javascript/dashboard/i18n/locale/ms/components.json
+++ b/app/javascript/dashboard/i18n/locale/ms/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ms/contact.json b/app/javascript/dashboard/i18n/locale/ms/contact.json
index c9ace9a23..ac848c1e5 100644
--- a/app/javascript/dashboard/i18n/locale/ms/contact.json
+++ b/app/javascript/dashboard/i18n/locale/ms/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/ms/helpCenter.json b/app/javascript/dashboard/i18n/locale/ms/helpCenter.json
index 03672d0d2..ba678333f 100644
--- a/app/javascript/dashboard/i18n/locale/ms/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/ms/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "Lebih banyak sifat",
"UNCATEGORIZED": "Tidak dikategorikan",
- "EDITOR_PLACEHOLDER": "Tulis sesuatu..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Sifat artikel",
diff --git a/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json
index c0b2b38d0..ed2847a1b 100644
--- a/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Sila masukkan URL yang sah"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Salin rahsia ke papan klip",
+ "COPY_SUCCESS": "Rahsia disalin ke papan klip",
+ "TOGGLE": "Togol keterlihatan rahsia",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Website Domain",
"PLACEHOLDER": "Enter your website domain (eg: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/ms/integrations.json b/app/javascript/dashboard/i18n/locale/ms/integrations.json
index 4998b467f..d5d4a2705 100644
--- a/app/javascript/dashboard/i18n/locale/ms/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ms/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Alat tersuai berjaya dipadam",
"ERROR_MESSAGE": "Gagal memadam alat tersuai"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/ms/macros.json b/app/javascript/dashboard/i18n/locale/ms/macros.json
index b7c423925..bb63ace29 100644
--- a/app/javascript/dashboard/i18n/locale/ms/macros.json
+++ b/app/javascript/dashboard/i18n/locale/ms/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mute Conversation",
diff --git a/app/javascript/dashboard/i18n/locale/ms/settings.json b/app/javascript/dashboard/i18n/locale/ms/settings.json
index 4c6c46f22..27a3f423c 100644
--- a/app/javascript/dashboard/i18n/locale/ms/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ms/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Tandatangan berjaya disimpan",
"IMAGE_UPLOAD_ERROR": "Tidak dapat memuat naik imej! Sila cuba lagi",
"IMAGE_UPLOAD_SUCCESS": "Imej berjaya ditambah. Sila klik simpan untuk menyimpan tandatangan",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Tandatangan Mesej",
diff --git a/app/javascript/dashboard/i18n/locale/ms/signup.json b/app/javascript/dashboard/i18n/locale/ms/signup.json
index 1790362d3..d6b60efa7 100644
--- a/app/javascript/dashboard/i18n/locale/ms/signup.json
+++ b/app/javascript/dashboard/i18n/locale/ms/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Masalah untuk hubungi Woot Server, Sila cuba sebentar lagi"
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Hantar semula emel pengesahan",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ne/agentBots.json b/app/javascript/dashboard/i18n/locale/ne/agentBots.json
index dc92016ab..c17ec60d0 100644
--- a/app/javascript/dashboard/i18n/locale/ne/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ne/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/ne/automation.json b/app/javascript/dashboard/i18n/locale/ne/automation.json
index d980098f4..8a1823da4 100644
--- a/app/javascript/dashboard/i18n/locale/ne/automation.json
+++ b/app/javascript/dashboard/i18n/locale/ne/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "निजी नोट",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/ne/components.json b/app/javascript/dashboard/i18n/locale/ne/components.json
index 0a2542a84..a75d35b08 100644
--- a/app/javascript/dashboard/i18n/locale/ne/components.json
+++ b/app/javascript/dashboard/i18n/locale/ne/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ne/contact.json b/app/javascript/dashboard/i18n/locale/ne/contact.json
index e3a3bf445..b7c40ea6f 100644
--- a/app/javascript/dashboard/i18n/locale/ne/contact.json
+++ b/app/javascript/dashboard/i18n/locale/ne/contact.json
@@ -20,6 +20,7 @@
"CALL": "कल गर्नुहोस्",
"CALL_INITIATED": "सम्पर्कलाई कल गर्दै…",
"CALL_FAILED": "फोन कल सुरु गर्न सकिएन। कृपया फेरि प्रयास गर्नुहोस्।",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "भ्वाइस इन्बक्स छान्नुहोस्"
},
diff --git a/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json
index a81973425..d13540014 100644
--- a/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "कृपया तपाईंको वेबहुक URL प्रविष्ट गर्नुहोस्",
"ERROR": "कृपया मान्य URL प्रविष्ट गर्नुहोस्"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "वेबसाइट डोमेन",
"PLACEHOLDER": "तपाईंको वेबसाइट डोमेन प्रविष्ट गर्नुहोस् (जस्तै: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/ne/integrations.json b/app/javascript/dashboard/i18n/locale/ne/integrations.json
index dc7f06c05..4b4969dff 100644
--- a/app/javascript/dashboard/i18n/locale/ne/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ne/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "कस्टम टुल सफलतापूर्वक मेटाइयो",
"ERROR_MESSAGE": "कस्टम टुल मेटाउन असफल भयो"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/ne/macros.json b/app/javascript/dashboard/i18n/locale/ne/macros.json
index e12f0ca73..67a5c5003 100644
--- a/app/javascript/dashboard/i18n/locale/ne/macros.json
+++ b/app/javascript/dashboard/i18n/locale/ne/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mute Conversation",
diff --git a/app/javascript/dashboard/i18n/locale/ne/settings.json b/app/javascript/dashboard/i18n/locale/ne/settings.json
index d05c9f435..4b22f2fcb 100644
--- a/app/javascript/dashboard/i18n/locale/ne/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ne/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "हस्ताक्षर सफलतापूर्वक सुरक्षित भयो",
"IMAGE_UPLOAD_ERROR": "छवि अपलोड गर्न सकिएन! फेरि प्रयास गर्नु",
"IMAGE_UPLOAD_SUCCESS": "छवि सफलतापूर्वक थपियो। कृपया हस्ताक्षर बचत गर्न सेभमा क्लिक गर्नु",
- "IMAGE_UPLOAD_SIZE_ERROR": "छवि आकार {size}MB भन्दा कम हुनुपर्छ"
+ "IMAGE_UPLOAD_SIZE_ERROR": "छवि आकार {size}MB भन्दा कम हुनुपर्छ",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "सन्देश हस्ताक्षर",
diff --git a/app/javascript/dashboard/i18n/locale/ne/signup.json b/app/javascript/dashboard/i18n/locale/ne/signup.json
index 746ca0999..64864751f 100644
--- a/app/javascript/dashboard/i18n/locale/ne/signup.json
+++ b/app/javascript/dashboard/i18n/locale/ne/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later"
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "प्रमाणिकरण इमेल पुन: पठाउनु",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/nl/agentBots.json b/app/javascript/dashboard/i18n/locale/nl/agentBots.json
index 616105130..886cd9966 100644
--- a/app/javascript/dashboard/i18n/locale/nl/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/nl/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Toegangs-token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/nl/automation.json b/app/javascript/dashboard/i18n/locale/nl/automation.json
index 096c2e072..eee48ac42 100644
--- a/app/javascript/dashboard/i18n/locale/nl/automation.json
+++ b/app/javascript/dashboard/i18n/locale/nl/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Privénotitie",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "E-mailadres",
"INBOX": "Postvak In",
diff --git a/app/javascript/dashboard/i18n/locale/nl/components.json b/app/javascript/dashboard/i18n/locale/nl/components.json
index 7f6f763b9..1dcb747e2 100644
--- a/app/javascript/dashboard/i18n/locale/nl/components.json
+++ b/app/javascript/dashboard/i18n/locale/nl/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/nl/contact.json b/app/javascript/dashboard/i18n/locale/nl/contact.json
index f83af005a..3b78b0201 100644
--- a/app/javascript/dashboard/i18n/locale/nl/contact.json
+++ b/app/javascript/dashboard/i18n/locale/nl/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json
index 7fde7c93a..39c33d2cc 100644
--- a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Voer een geldige URL in"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Website domein",
"PLACEHOLDER": "Voer uw website domein in (bv. acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/nl/integrations.json b/app/javascript/dashboard/i18n/locale/nl/integrations.json
index d2237f0b1..184d0b14c 100644
--- a/app/javascript/dashboard/i18n/locale/nl/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/nl/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Openstaande facturering",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/nl/macros.json b/app/javascript/dashboard/i18n/locale/nl/macros.json
index 68c86c814..b19bcf03a 100644
--- a/app/javascript/dashboard/i18n/locale/nl/macros.json
+++ b/app/javascript/dashboard/i18n/locale/nl/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Gesprek dempen",
diff --git a/app/javascript/dashboard/i18n/locale/nl/settings.json b/app/javascript/dashboard/i18n/locale/nl/settings.json
index 6e63dc21f..72430629f 100644
--- a/app/javascript/dashboard/i18n/locale/nl/settings.json
+++ b/app/javascript/dashboard/i18n/locale/nl/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Ondertekening succesvol opgeslagen",
"IMAGE_UPLOAD_ERROR": "Kon afbeelding niet uploaden! Probeer het opnieuw",
"IMAGE_UPLOAD_SUCCESS": "Afbeelding succesvol toegevoegd. Klik op opslaan om de handtekening op te slaan",
- "IMAGE_UPLOAD_SIZE_ERROR": "De grootte van de afbeelding moet kleiner zijn dan {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "De grootte van de afbeelding moet kleiner zijn dan {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Bericht Ondertekening",
diff --git a/app/javascript/dashboard/i18n/locale/nl/signup.json b/app/javascript/dashboard/i18n/locale/nl/signup.json
index b575d4c3f..6bed7f049 100644
--- a/app/javascript/dashboard/i18n/locale/nl/signup.json
+++ b/app/javascript/dashboard/i18n/locale/nl/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Kan geen verbinding maken met Woot Server, probeer het later opnieuw"
},
"SUBMIT": "Account aanmaken",
- "HAVE_AN_ACCOUNT": "Heeft u al een account?"
+ "HAVE_AN_ACCOUNT": "Heeft u al een account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/no/agentBots.json b/app/javascript/dashboard/i18n/locale/no/agentBots.json
index 1f4b57d74..74ad36f8a 100644
--- a/app/javascript/dashboard/i18n/locale/no/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/no/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Tilgangstoken",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/no/automation.json b/app/javascript/dashboard/i18n/locale/no/automation.json
index 4e1b0b39e..a1b19b062 100644
--- a/app/javascript/dashboard/i18n/locale/no/automation.json
+++ b/app/javascript/dashboard/i18n/locale/no/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Privat notat",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "E-post",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/no/components.json b/app/javascript/dashboard/i18n/locale/no/components.json
index d5e551f8a..d8ecb89ab 100644
--- a/app/javascript/dashboard/i18n/locale/no/components.json
+++ b/app/javascript/dashboard/i18n/locale/no/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/no/contact.json b/app/javascript/dashboard/i18n/locale/no/contact.json
index 47ebc64c6..9a7b24cc3 100644
--- a/app/javascript/dashboard/i18n/locale/no/contact.json
+++ b/app/javascript/dashboard/i18n/locale/no/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json
index 4c828ae76..e7737edd3 100644
--- a/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Vennligst skriv inn en gyldig URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Nettstedets domene",
"PLACEHOLDER": "Angi URL på nettsiden (f. eks.: acme.no)"
diff --git a/app/javascript/dashboard/i18n/locale/no/integrations.json b/app/javascript/dashboard/i18n/locale/no/integrations.json
index 80a3090de..1fa6a64b8 100644
--- a/app/javascript/dashboard/i18n/locale/no/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/no/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/no/macros.json b/app/javascript/dashboard/i18n/locale/no/macros.json
index 8ff0ac6ea..fe1e30153 100644
--- a/app/javascript/dashboard/i18n/locale/no/macros.json
+++ b/app/javascript/dashboard/i18n/locale/no/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Demp samtale",
diff --git a/app/javascript/dashboard/i18n/locale/no/settings.json b/app/javascript/dashboard/i18n/locale/no/settings.json
index e246d5abb..37370dee5 100644
--- a/app/javascript/dashboard/i18n/locale/no/settings.json
+++ b/app/javascript/dashboard/i18n/locale/no/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Signature saved successfully",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Message Signature",
diff --git a/app/javascript/dashboard/i18n/locale/no/signup.json b/app/javascript/dashboard/i18n/locale/no/signup.json
index d0d67474b..a86972dec 100644
--- a/app/javascript/dashboard/i18n/locale/no/signup.json
+++ b/app/javascript/dashboard/i18n/locale/no/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Kunne ikke koble til Woot Server, vennligst prøv igjen senere"
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Har du allerede en konto?"
+ "HAVE_AN_ACCOUNT": "Har du allerede en konto?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/pl/agentBots.json b/app/javascript/dashboard/i18n/locale/pl/agentBots.json
index e2cd736f9..3da5c0723 100644
--- a/app/javascript/dashboard/i18n/locale/pl/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/pl/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Nie udało się zaktualizować bota. Proszę spróbować ponownie."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Token dostępu",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/pl/automation.json b/app/javascript/dashboard/i18n/locale/pl/automation.json
index b953f738d..6284f0cb4 100644
--- a/app/javascript/dashboard/i18n/locale/pl/automation.json
+++ b/app/javascript/dashboard/i18n/locale/pl/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Notatka prywatna",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "E-mail",
"INBOX": "Skrzynka odbiorcza",
diff --git a/app/javascript/dashboard/i18n/locale/pl/components.json b/app/javascript/dashboard/i18n/locale/pl/components.json
index 9801c5350..053a2bf54 100644
--- a/app/javascript/dashboard/i18n/locale/pl/components.json
+++ b/app/javascript/dashboard/i18n/locale/pl/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/pl/contact.json b/app/javascript/dashboard/i18n/locale/pl/contact.json
index cd772f762..46be89c4c 100644
--- a/app/javascript/dashboard/i18n/locale/pl/contact.json
+++ b/app/javascript/dashboard/i18n/locale/pl/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json
index ba6a37b5b..086df97f8 100644
--- a/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Wprowadź poprawny adres URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Domena strony internetowej",
"PLACEHOLDER": "Wprowadź domenę strony (np. acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/pl/integrations.json b/app/javascript/dashboard/i18n/locale/pl/integrations.json
index 67990d4b7..bfd34ac2e 100644
--- a/app/javascript/dashboard/i18n/locale/pl/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/pl/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Otwórz fakturę",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/pl/macros.json b/app/javascript/dashboard/i18n/locale/pl/macros.json
index 38dc1c920..c6c6edc4a 100644
--- a/app/javascript/dashboard/i18n/locale/pl/macros.json
+++ b/app/javascript/dashboard/i18n/locale/pl/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Wycisz kontakt",
diff --git a/app/javascript/dashboard/i18n/locale/pl/settings.json b/app/javascript/dashboard/i18n/locale/pl/settings.json
index 42e1ad81c..f79313072 100644
--- a/app/javascript/dashboard/i18n/locale/pl/settings.json
+++ b/app/javascript/dashboard/i18n/locale/pl/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Podpis został pomyślnie zapisany",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Rozmiar obrazu powinien być mniejszy niż {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Rozmiar obrazu powinien być mniejszy niż {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Podpis wiadomości",
diff --git a/app/javascript/dashboard/i18n/locale/pl/signup.json b/app/javascript/dashboard/i18n/locale/pl/signup.json
index 5548df85d..7ae692a82 100644
--- a/app/javascript/dashboard/i18n/locale/pl/signup.json
+++ b/app/javascript/dashboard/i18n/locale/pl/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Nie można połączyć się z serwerem Woot. Spróbuj ponownie później"
},
"SUBMIT": "Utwórz konto",
- "HAVE_AN_ACCOUNT": "Masz już konto?"
+ "HAVE_AN_ACCOUNT": "Masz już konto?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/pt/agentBots.json b/app/javascript/dashboard/i18n/locale/pt/agentBots.json
index b6aab197c..f1b24de61 100644
--- a/app/javascript/dashboard/i18n/locale/pt/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/pt/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Não foi possível atualizar o bot. Por favor, tente novamente."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Token de acesso",
"DESCRIPTION": "Copie o token de acesso e guarde-o de forma segura",
diff --git a/app/javascript/dashboard/i18n/locale/pt/automation.json b/app/javascript/dashboard/i18n/locale/pt/automation.json
index d4560a440..1be6316f0 100644
--- a/app/javascript/dashboard/i18n/locale/pt/automation.json
+++ b/app/javascript/dashboard/i18n/locale/pt/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Atribuir ao agente",
"ASSIGN_TEAM": "Atribuir equipa",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remover equipa atribuída",
"ADD_LABEL": "Adicionar etiqueta",
"REMOVE_LABEL": "Remover um rótulo",
"SEND_EMAIL_TO_TEAM": "Enviar um e-mail para a equipa",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Tipo de mensagem",
+ "PRIVATE_NOTE": "Nota Privada",
"MESSAGE_CONTAINS": "A mensagem contém",
"EMAIL": "E-mail",
"INBOX": "Caixa de entrada",
diff --git a/app/javascript/dashboard/i18n/locale/pt/components.json b/app/javascript/dashboard/i18n/locale/pt/components.json
index 8559d05b7..396df5d48 100644
--- a/app/javascript/dashboard/i18n/locale/pt/components.json
+++ b/app/javascript/dashboard/i18n/locale/pt/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Em Breve!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/pt/contact.json b/app/javascript/dashboard/i18n/locale/pt/contact.json
index 4b171b530..049d442e3 100644
--- a/app/javascript/dashboard/i18n/locale/pt/contact.json
+++ b/app/javascript/dashboard/i18n/locale/pt/contact.json
@@ -20,6 +20,7 @@
"CALL": "Chamada",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json
index 41fc965af..1b64d623b 100644
--- a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Introduza o seu URL do Webhook",
"ERROR": "Por favor, insira um URL válido"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Domínio do site",
"PLACEHOLDER": "Insira o domínio do seu site (ex. acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/pt/integrations.json b/app/javascript/dashboard/i18n/locale/pt/integrations.json
index e255fc467..484a5627d 100644
--- a/app/javascript/dashboard/i18n/locale/pt/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/pt/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Abrir faturação",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Por favor, entre em contato com o administrador para atualização."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/pt/macros.json b/app/javascript/dashboard/i18n/locale/pt/macros.json
index 2676b53d0..257c0bcf0 100644
--- a/app/javascript/dashboard/i18n/locale/pt/macros.json
+++ b/app/javascript/dashboard/i18n/locale/pt/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Atribuir um agente",
"ADD_LABEL": "Adicionar um rótulo",
"REMOVE_LABEL": "Remover um rótulo",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remover equipa atribuída",
"SEND_EMAIL_TRANSCRIPT": "Enviar uma transcrição por e-mail",
"MUTE_CONVERSATION": "Silenciar Conversa",
diff --git a/app/javascript/dashboard/i18n/locale/pt/settings.json b/app/javascript/dashboard/i18n/locale/pt/settings.json
index 34c16c5d4..4533315c0 100644
--- a/app/javascript/dashboard/i18n/locale/pt/settings.json
+++ b/app/javascript/dashboard/i18n/locale/pt/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Assinatura salva com sucesso",
"IMAGE_UPLOAD_ERROR": "Não foi possível carregar a imagem! Tente novamente",
"IMAGE_UPLOAD_SUCCESS": "Imagem adicionada. Clique em salvar para salvar a assinatura",
- "IMAGE_UPLOAD_SIZE_ERROR": "O tamanho da imagem deve ser inferior a {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "O tamanho da imagem deve ser inferior a {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Assinatura da mensagem",
diff --git a/app/javascript/dashboard/i18n/locale/pt/signup.json b/app/javascript/dashboard/i18n/locale/pt/signup.json
index f293b3969..e2a32c45a 100644
--- a/app/javascript/dashboard/i18n/locale/pt/signup.json
+++ b/app/javascript/dashboard/i18n/locale/pt/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Não foi possível conectar ao servidor Woot, por favor tente novamente mais tarde"
},
"SUBMIT": "Criar conta",
- "HAVE_AN_ACCOUNT": "Já tem uma conta?"
+ "HAVE_AN_ACCOUNT": "Já tem uma conta?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Reenviar e-mail de verificação",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/agentBots.json b/app/javascript/dashboard/i18n/locale/pt_BR/agentBots.json
index 8c1663bd9..c97f23a30 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Não foi possível atualizar o robô. Por favor, tente novamente mais tarde."
}
},
+ "SECRET": {
+ "LABEL": "Segredo do Webhook",
+ "COPY": "Copiar segredo para a área de transferência",
+ "COPY_SUCCESS": "Segredo copiado para a área de transferência",
+ "TOGGLE": "Alternar visibilidade do segredo",
+ "CREATED_DESC": "Use o segredo abaixo para verificar as assinaturas do webhook. Copie-o agora, você também poderá encontrá-lo depois nas configurações do robô.",
+ "DONE": "Concluído",
+ "RESET_SUCCESS": "Segredo do webhook regenerado com sucesso",
+ "RESET_ERROR": "Não foi possível regenerar o segredo do webhook. Por favor, tente novamente"
+ },
"ACCESS_TOKEN": {
"TITLE": "Token de acesso",
"DESCRIPTION": "Copie o token de acesso e salve-o de forma segura",
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/automation.json b/app/javascript/dashboard/i18n/locale/pt_BR/automation.json
index 0b45a2c57..6b52ea99a 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/automation.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Atribuir ao Agente",
"ASSIGN_TEAM": "Atribuir um Time",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remover Time Atribuído",
"ADD_LABEL": "Adicionar uma Etiqueta",
"REMOVE_LABEL": "Remover uma Etiqueta",
"SEND_EMAIL_TO_TEAM": "Enviar um e-mail para o Time",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Tipo da Mensagem",
+ "PRIVATE_NOTE": "Mensagem Privada",
"MESSAGE_CONTAINS": "A mensagem contém",
"EMAIL": "E-mail",
"INBOX": "Caixa de Entrada",
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/components.json b/app/javascript/dashboard/i18n/locale/pt_BR/components.json
index 8c46d6e5e..485cf6ad0 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/components.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Em breve!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/contact.json b/app/javascript/dashboard/i18n/locale/pt_BR/contact.json
index 02b8c30c1..76519478d 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/contact.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/contact.json
@@ -20,6 +20,7 @@
"CALL": "Chamada",
"CALL_INITIATED": "Efetuando chamada…",
"CALL_FAILED": "Não foi possível iniciar a chamada. Tente novamente.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Escolha uma caixa de entrada de voz"
},
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/helpCenter.json b/app/javascript/dashboard/i18n/locale/pt_BR/helpCenter.json
index 89da93b62..6affb9cb4 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "Mais propriedades",
"UNCATEGORIZED": "Não categorizado",
- "EDITOR_PLACEHOLDER": "Escreva algo..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Propriedades do artigo",
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json
index 46507d4d8..583ac362c 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Insira o URL do seu webhook",
"ERROR": "Por favor, insira uma URL válida"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Segredo do Webhook",
+ "COPY": "Copiar segredo para a área de transferência",
+ "COPY_SUCCESS": "Segredo copiado para a área de transferência",
+ "TOGGLE": "Alternar visibilidade do segredo",
+ "RESET_SUCCESS": "Segredo do webhook regenerado com sucesso",
+ "RESET_ERROR": "Não foi possível regenerar o segredo do webhook. Por favor, tente novamente"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Domínio do website",
"PLACEHOLDER": "Informe o domínio do seu site (por exemplo: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json b/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json
index 3ffadb1d9..7c5bce11e 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Ferramenta personalizada excluída com sucesso",
"ERROR_MESSAGE": "Falha ao excluir a ferramenta personalizada"
},
+ "PAYWALL": {
+ "TITLE": "Atualize para usar ferramentas com o Capitão",
+ "AVAILABLE_ON": "As ferramentas do Capitão estão disponíveis apenas nos planos Business e Enterprise. Faça upgrade para o plano Business para utilizar esse recurso.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Abrir faturamento",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Ferramentas do Capitão estão disponíveis apenas nos planos pagos.",
+ "UPGRADE_PROMPT": "Por favor, faça o upgrade para um plano pago para utilizar este recurso.",
+ "ASK_ADMIN": "Entre em contato com seu administrador para fazer a atualização."
+ },
"TEST": {
"BUTTON": "Testar conexão",
"SUCCESS": "Endpoint retornou HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/macros.json b/app/javascript/dashboard/i18n/locale/pt_BR/macros.json
index 0e99eb521..b5b235c6e 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/macros.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Atribuir um Agente",
"ADD_LABEL": "Adicionar uma Etiqueta",
"REMOVE_LABEL": "Remover uma Etiqueta",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remover Time Atribuído",
"SEND_EMAIL_TRANSCRIPT": "Enviar uma transcrição por e-mail",
"MUTE_CONVERSATION": "Silenciar Conversa",
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/settings.json b/app/javascript/dashboard/i18n/locale/pt_BR/settings.json
index 381c20429..9d047dd92 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/settings.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Assinatura salva com sucesso",
"IMAGE_UPLOAD_ERROR": "Não foi possível fazer o upload da imagem! Tente novamente",
"IMAGE_UPLOAD_SUCCESS": "Imagem adicionada com sucesso. Por favor clique em salvar para salvar a assinatura",
- "IMAGE_UPLOAD_SIZE_ERROR": "O tamanho da imagem deve ser menor que {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "O tamanho da imagem deve ser menor que {size}MB",
+ "INLINE_IMAGE_WARNING": "Imagens incorporadas coladas foram removidas. Por favor, use o botão enviar imagem para adicionar imagens à sua assinatura."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Assinatura da mensagem",
diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/signup.json b/app/javascript/dashboard/i18n/locale/pt_BR/signup.json
index d859806bd..79e594a5d 100644
--- a/app/javascript/dashboard/i18n/locale/pt_BR/signup.json
+++ b/app/javascript/dashboard/i18n/locale/pt_BR/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Não foi possível conectar ao servidor Woot. Por favor, tente novamente."
},
"SUBMIT": "Criar conta",
- "HAVE_AN_ACCOUNT": "Já possui uma conta?"
+ "HAVE_AN_ACCOUNT": "Já possui uma conta?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Verifique sua caixa de entrada",
+ "DESCRIPTION": "Enviamos um link de verificação para {email}. Clique no link para verificar seu e-mail e começar.",
+ "RESEND": "Reenviar e-mail de verificação",
+ "RESEND_SUCCESS": "E-mail de verificação enviado. Por favor, verifique sua caixa de entrada.",
+ "RESEND_ERROR": "Não foi possível enviar o e-mail de verificação. Por favor, tente novamente."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ro/agentBots.json b/app/javascript/dashboard/i18n/locale/ro/agentBots.json
index 258c290fe..c0f45becd 100644
--- a/app/javascript/dashboard/i18n/locale/ro/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ro/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Token acces",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/ro/automation.json b/app/javascript/dashboard/i18n/locale/ro/automation.json
index a2eba8964..8214fdd1b 100644
--- a/app/javascript/dashboard/i18n/locale/ro/automation.json
+++ b/app/javascript/dashboard/i18n/locale/ro/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Notă privată",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "E-mail",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/ro/components.json b/app/javascript/dashboard/i18n/locale/ro/components.json
index 31b039abf..324ee7cfc 100644
--- a/app/javascript/dashboard/i18n/locale/ro/components.json
+++ b/app/javascript/dashboard/i18n/locale/ro/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ro/contact.json b/app/javascript/dashboard/i18n/locale/ro/contact.json
index 77ad5b119..1b1752132 100644
--- a/app/javascript/dashboard/i18n/locale/ro/contact.json
+++ b/app/javascript/dashboard/i18n/locale/ro/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json
index 02db4aaa9..8ffdaa322 100644
--- a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Te rog introdu un URL valid"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Domeniu website",
"PLACEHOLDER": "Introduceți domeniul website-ului (exemplu: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/ro/integrations.json b/app/javascript/dashboard/i18n/locale/ro/integrations.json
index 717d29899..d9dd64d93 100644
--- a/app/javascript/dashboard/i18n/locale/ro/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ro/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Deschide facturarea",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/ro/macros.json b/app/javascript/dashboard/i18n/locale/ro/macros.json
index da1edfd78..9b77e8250 100644
--- a/app/javascript/dashboard/i18n/locale/ro/macros.json
+++ b/app/javascript/dashboard/i18n/locale/ro/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Silențios conversația",
diff --git a/app/javascript/dashboard/i18n/locale/ro/settings.json b/app/javascript/dashboard/i18n/locale/ro/settings.json
index 14b7b9730..cc6cc718d 100644
--- a/app/javascript/dashboard/i18n/locale/ro/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ro/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Semnătura salvată cu succes",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Dimensiunea imaginii trebuie să fie mai mică de {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Dimensiunea imaginii trebuie să fie mai mică de {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Semnătura mesajului",
diff --git a/app/javascript/dashboard/i18n/locale/ro/signup.json b/app/javascript/dashboard/i18n/locale/ro/signup.json
index 85d124949..c4a8d14db 100644
--- a/app/javascript/dashboard/i18n/locale/ro/signup.json
+++ b/app/javascript/dashboard/i18n/locale/ro/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Nu s-a putut conecta la serverul Woot. Vă rugăm să încercați din nou."
},
"SUBMIT": "Creează cont",
- "HAVE_AN_ACCOUNT": "Ai deja un cont?"
+ "HAVE_AN_ACCOUNT": "Ai deja un cont?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ru/agentBots.json b/app/javascript/dashboard/i18n/locale/ru/agentBots.json
index 9fa37d636..d3f83be6a 100644
--- a/app/javascript/dashboard/i18n/locale/ru/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ru/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Не удалось обновить бота. Пожалуйста, повторите попытку позже."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Токен доступа",
"DESCRIPTION": "Скопируйте токен доступа и безопасно сохраните его",
diff --git a/app/javascript/dashboard/i18n/locale/ru/automation.json b/app/javascript/dashboard/i18n/locale/ru/automation.json
index 644c92c67..6b4d326d6 100644
--- a/app/javascript/dashboard/i18n/locale/ru/automation.json
+++ b/app/javascript/dashboard/i18n/locale/ru/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Назначить агента",
"ASSIGN_TEAM": "Назначить команду",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Удалить назначенную команду",
"ADD_LABEL": "Добавить метку",
"REMOVE_LABEL": "Удалить метку",
"SEND_EMAIL_TO_TEAM": "Отправить Email команде",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Тип сообщения",
+ "PRIVATE_NOTE": "Личная заметка",
"MESSAGE_CONTAINS": "Сообщение содержит",
"EMAIL": "Email",
"INBOX": "Источник",
diff --git a/app/javascript/dashboard/i18n/locale/ru/components.json b/app/javascript/dashboard/i18n/locale/ru/components.json
index fbd315ff8..e6970f6ba 100644
--- a/app/javascript/dashboard/i18n/locale/ru/components.json
+++ b/app/javascript/dashboard/i18n/locale/ru/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Скоро!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ru/contact.json b/app/javascript/dashboard/i18n/locale/ru/contact.json
index 029e658d1..5156a7456 100644
--- a/app/javascript/dashboard/i18n/locale/ru/contact.json
+++ b/app/javascript/dashboard/i18n/locale/ru/contact.json
@@ -20,6 +20,7 @@
"CALL": "Вызов",
"CALL_INITIATED": "Вызов контакта…",
"CALL_FAILED": "Не удалось начать вызов. Повторите попытку.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Выберите голосовую почту"
},
diff --git a/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json
index 167ccc6fe..2c419f614 100644
--- a/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Введите URL-адрес вебхука",
"ERROR": "Пожалуйста, введите правильный URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Домен сайта",
"PLACEHOLDER": "Введите домен вашего сайта (например: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/ru/integrations.json b/app/javascript/dashboard/i18n/locale/ru/integrations.json
index fd6654a7a..2356bfc5e 100644
--- a/app/javascript/dashboard/i18n/locale/ru/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ru/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Пользовательский инструмент успешно удален",
"ERROR_MESSAGE": "Не удалось удалить пользовательский инструмент"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Открыть платеж",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Пожалуйста, обратитесь к вашему администратору для обновления."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/ru/macros.json b/app/javascript/dashboard/i18n/locale/ru/macros.json
index e85de7261..35c479c50 100644
--- a/app/javascript/dashboard/i18n/locale/ru/macros.json
+++ b/app/javascript/dashboard/i18n/locale/ru/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Назначить сотрудника",
"ADD_LABEL": "Добавить метку",
"REMOVE_LABEL": "Удалить метку",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Удалить назначенную команду",
"SEND_EMAIL_TRANSCRIPT": "Отправить историю переписки на email",
"MUTE_CONVERSATION": "Заглушить диалог",
diff --git a/app/javascript/dashboard/i18n/locale/ru/settings.json b/app/javascript/dashboard/i18n/locale/ru/settings.json
index cc7f6e985..5be58d538 100644
--- a/app/javascript/dashboard/i18n/locale/ru/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ru/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Подпись успешно сохранена",
"IMAGE_UPLOAD_ERROR": "Не удалось загрузить изображение! Попробуйте снова",
"IMAGE_UPLOAD_SUCCESS": "Изображение успешно добавлено. Пожалуйста, нажмите сохранить, чтобы сохранить подпись",
- "IMAGE_UPLOAD_SIZE_ERROR": "Размер изображения должен быть меньше {size}МБ"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Размер изображения должен быть меньше {size}МБ",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Подпись сообщения",
diff --git a/app/javascript/dashboard/i18n/locale/ru/signup.json b/app/javascript/dashboard/i18n/locale/ru/signup.json
index b3856ea82..9693adf74 100644
--- a/app/javascript/dashboard/i18n/locale/ru/signup.json
+++ b/app/javascript/dashboard/i18n/locale/ru/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Не удалось подключиться к Woot серверу. Пожалуйста, попробуйте еще раз."
},
"SUBMIT": "Создать новый аккаунт",
- "HAVE_AN_ACCOUNT": "Уже есть аккаунт?"
+ "HAVE_AN_ACCOUNT": "Уже есть аккаунт?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Повторно отправить письмо с подтверждением",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/sh/agentBots.json b/app/javascript/dashboard/i18n/locale/sh/agentBots.json
index dc92016ab..a8758d40b 100644
--- a/app/javascript/dashboard/i18n/locale/sh/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/sh/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Kopiraj tajnu u međuspremnik",
+ "COPY_SUCCESS": "Tajna je kopirana u međuspremnik",
+ "TOGGLE": "Prebaci vidljivost tajne",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Gotovo",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/sh/automation.json b/app/javascript/dashboard/i18n/locale/sh/automation.json
index 22a9735f4..8e46cd539 100644
--- a/app/javascript/dashboard/i18n/locale/sh/automation.json
+++ b/app/javascript/dashboard/i18n/locale/sh/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Privatna beleška",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/sh/components.json b/app/javascript/dashboard/i18n/locale/sh/components.json
index 0a2542a84..a75d35b08 100644
--- a/app/javascript/dashboard/i18n/locale/sh/components.json
+++ b/app/javascript/dashboard/i18n/locale/sh/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/sh/contact.json b/app/javascript/dashboard/i18n/locale/sh/contact.json
index 13214db58..77cc2dee1 100644
--- a/app/javascript/dashboard/i18n/locale/sh/contact.json
+++ b/app/javascript/dashboard/i18n/locale/sh/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json
index b7a406ef9..8296ba002 100644
--- a/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Unesite svoj Webhook URL",
"ERROR": "Molimo unesite valjani URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Kopiraj tajnu u međuspremnik",
+ "COPY_SUCCESS": "Tajna je kopirana u međuspremnik",
+ "TOGGLE": "Prebaci vidljivost tajne",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Website Domain",
"PLACEHOLDER": "Enter your website domain (eg: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/sh/integrations.json b/app/javascript/dashboard/i18n/locale/sh/integrations.json
index 2511c3e4f..8dff3c2b0 100644
--- a/app/javascript/dashboard/i18n/locale/sh/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/sh/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Prilagođeni alat je uspješno izbrisan",
"ERROR_MESSAGE": "Brisanje prilagođenog alata nije uspjelo"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/sh/macros.json b/app/javascript/dashboard/i18n/locale/sh/macros.json
index e12f0ca73..67a5c5003 100644
--- a/app/javascript/dashboard/i18n/locale/sh/macros.json
+++ b/app/javascript/dashboard/i18n/locale/sh/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mute Conversation",
diff --git a/app/javascript/dashboard/i18n/locale/sh/settings.json b/app/javascript/dashboard/i18n/locale/sh/settings.json
index 0bc82b6e2..98ff3cdcf 100644
--- a/app/javascript/dashboard/i18n/locale/sh/settings.json
+++ b/app/javascript/dashboard/i18n/locale/sh/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Potpis je uspješno spremljen",
"IMAGE_UPLOAD_ERROR": "Nije moguće učitati sliku! Pokušajte ponovno",
"IMAGE_UPLOAD_SUCCESS": "Slika je uspješno dodana. Molimo kliknite na spremi kako biste sačuvali potpis",
- "IMAGE_UPLOAD_SIZE_ERROR": "Veličina slike treba biti manja od {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Veličina slike treba biti manja od {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Potpis poruke",
diff --git a/app/javascript/dashboard/i18n/locale/sh/signup.json b/app/javascript/dashboard/i18n/locale/sh/signup.json
index 4a90fd322..238a1f061 100644
--- a/app/javascript/dashboard/i18n/locale/sh/signup.json
+++ b/app/javascript/dashboard/i18n/locale/sh/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/sk/agentBots.json b/app/javascript/dashboard/i18n/locale/sk/agentBots.json
index a0941f1e3..8e51154e5 100644
--- a/app/javascript/dashboard/i18n/locale/sk/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/sk/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Prístupový token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/sk/automation.json b/app/javascript/dashboard/i18n/locale/sk/automation.json
index 9f7b79407..2d4e41b66 100644
--- a/app/javascript/dashboard/i18n/locale/sk/automation.json
+++ b/app/javascript/dashboard/i18n/locale/sk/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Súkromná správa",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Schránka",
diff --git a/app/javascript/dashboard/i18n/locale/sk/components.json b/app/javascript/dashboard/i18n/locale/sk/components.json
index 34f3f7839..1e6f15a8f 100644
--- a/app/javascript/dashboard/i18n/locale/sk/components.json
+++ b/app/javascript/dashboard/i18n/locale/sk/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/sk/contact.json b/app/javascript/dashboard/i18n/locale/sk/contact.json
index a22fa9fde..63dab97d7 100644
--- a/app/javascript/dashboard/i18n/locale/sk/contact.json
+++ b/app/javascript/dashboard/i18n/locale/sk/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/sk/helpCenter.json b/app/javascript/dashboard/i18n/locale/sk/helpCenter.json
index 6822d879e..94adc2dc4 100644
--- a/app/javascript/dashboard/i18n/locale/sk/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/sk/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Uncategorized",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json
index dcf14fa72..5c1ba9d40 100644
--- a/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Prosím zadajte platnú URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Webová doména",
"PLACEHOLDER": "Zadajte doménu svojej webovej stránky (napr.: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/sk/integrations.json b/app/javascript/dashboard/i18n/locale/sk/integrations.json
index d0b03a697..87791f7b3 100644
--- a/app/javascript/dashboard/i18n/locale/sk/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/sk/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/sk/macros.json b/app/javascript/dashboard/i18n/locale/sk/macros.json
index 784ba59a2..220838b7a 100644
--- a/app/javascript/dashboard/i18n/locale/sk/macros.json
+++ b/app/javascript/dashboard/i18n/locale/sk/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Stlmiť konverzáciu",
diff --git a/app/javascript/dashboard/i18n/locale/sk/settings.json b/app/javascript/dashboard/i18n/locale/sk/settings.json
index 2bef21ec6..327247fcd 100644
--- a/app/javascript/dashboard/i18n/locale/sk/settings.json
+++ b/app/javascript/dashboard/i18n/locale/sk/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Signature saved successfully",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Message Signature",
diff --git a/app/javascript/dashboard/i18n/locale/sk/signup.json b/app/javascript/dashboard/i18n/locale/sk/signup.json
index a03da76e4..0739814ff 100644
--- a/app/javascript/dashboard/i18n/locale/sk/signup.json
+++ b/app/javascript/dashboard/i18n/locale/sk/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Už máte účet?"
+ "HAVE_AN_ACCOUNT": "Už máte účet?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/sl/agentBots.json b/app/javascript/dashboard/i18n/locale/sl/agentBots.json
index bc8736c9d..abd03c388 100644
--- a/app/javascript/dashboard/i18n/locale/sl/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/sl/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Bota ni bilo mogoče posodobiti. Prosimo poskusite ponovno."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/sl/automation.json b/app/javascript/dashboard/i18n/locale/sl/automation.json
index 63e6f72b2..5556bff34 100644
--- a/app/javascript/dashboard/i18n/locale/sl/automation.json
+++ b/app/javascript/dashboard/i18n/locale/sl/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Private Note",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "E-pošta",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/sl/components.json b/app/javascript/dashboard/i18n/locale/sl/components.json
index a9c96a78f..e330bd328 100644
--- a/app/javascript/dashboard/i18n/locale/sl/components.json
+++ b/app/javascript/dashboard/i18n/locale/sl/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/sl/contact.json b/app/javascript/dashboard/i18n/locale/sl/contact.json
index 6ef898099..d5f30df00 100644
--- a/app/javascript/dashboard/i18n/locale/sl/contact.json
+++ b/app/javascript/dashboard/i18n/locale/sl/contact.json
@@ -20,6 +20,7 @@
"CALL": "Pokliči",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Klica ni bilo mogoče začeti. Poskusite znova.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Izberi glasovni predal"
},
diff --git a/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json
index e55143bb0..a18a439a1 100644
--- a/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Prosimo, vnesite veljaven URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Domena spletne strani",
"PLACEHOLDER": "Enter your website domain (eg: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/sl/integrations.json b/app/javascript/dashboard/i18n/locale/sl/integrations.json
index 4869babed..6831f7ea7 100644
--- a/app/javascript/dashboard/i18n/locale/sl/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/sl/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/sl/macros.json b/app/javascript/dashboard/i18n/locale/sl/macros.json
index e12f0ca73..67a5c5003 100644
--- a/app/javascript/dashboard/i18n/locale/sl/macros.json
+++ b/app/javascript/dashboard/i18n/locale/sl/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mute Conversation",
diff --git a/app/javascript/dashboard/i18n/locale/sl/settings.json b/app/javascript/dashboard/i18n/locale/sl/settings.json
index a637cb789..6b2d0a255 100644
--- a/app/javascript/dashboard/i18n/locale/sl/settings.json
+++ b/app/javascript/dashboard/i18n/locale/sl/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Podpis je bil uspešno shranjen",
"IMAGE_UPLOAD_ERROR": "Slike ni bilo mogoče naložiti! Poskusi znova",
"IMAGE_UPLOAD_SUCCESS": "Slika je bila uspešno dodana. Za shranitev podpisa kliknite na shrani",
- "IMAGE_UPLOAD_SIZE_ERROR": "Velikost slike mora biti manjša od {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Velikost slike mora biti manjša od {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Podpis sporočila",
diff --git a/app/javascript/dashboard/i18n/locale/sl/signup.json b/app/javascript/dashboard/i18n/locale/sl/signup.json
index da325ebfd..d1ad83f7a 100644
--- a/app/javascript/dashboard/i18n/locale/sl/signup.json
+++ b/app/javascript/dashboard/i18n/locale/sl/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Ni bilo mogoče vzpostaviti povezave s strežnikom. Prosimo poskusite ponovno."
},
"SUBMIT": "Ustvari račun",
- "HAVE_AN_ACCOUNT": "Že imate račun?"
+ "HAVE_AN_ACCOUNT": "Že imate račun?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Ponovno pošlji potrditveni e-poštni naslov",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/sq/agentBots.json b/app/javascript/dashboard/i18n/locale/sq/agentBots.json
index 6a3528425..ebc476d0d 100644
--- a/app/javascript/dashboard/i18n/locale/sq/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/sq/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Kopjo sekretin në kujtesën e përkohshme",
+ "COPY_SUCCESS": "Sekreti u kopjua në kujtesën e përkohshme",
+ "TOGGLE": "Ndrysho dukshmërinë e sekretit",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "U krye",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Kopjoni tokenin e aksesit dhe ruajeni në mënyrë të sigurt",
diff --git a/app/javascript/dashboard/i18n/locale/sq/automation.json b/app/javascript/dashboard/i18n/locale/sq/automation.json
index 212a77339..6aa6af242 100644
--- a/app/javascript/dashboard/i18n/locale/sq/automation.json
+++ b/app/javascript/dashboard/i18n/locale/sq/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Cakto te një agjent",
"ASSIGN_TEAM": "Cakto një ekip",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Hiq ekipin e caktuar",
"ADD_LABEL": "Shto një etiketë",
"REMOVE_LABEL": "Hiq një etiketë",
"SEND_EMAIL_TO_TEAM": "Dërgo një email ekipit",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Lloji i mesazhit",
+ "PRIVATE_NOTE": "Shënim Privat",
"MESSAGE_CONTAINS": "Mesazhi përmban",
"EMAIL": "Email",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/sq/components.json b/app/javascript/dashboard/i18n/locale/sq/components.json
index 5eb3d95f9..2ca971a95 100644
--- a/app/javascript/dashboard/i18n/locale/sq/components.json
+++ b/app/javascript/dashboard/i18n/locale/sq/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Së shpejti!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/sq/contact.json b/app/javascript/dashboard/i18n/locale/sq/contact.json
index 2744786ae..958766792 100644
--- a/app/javascript/dashboard/i18n/locale/sq/contact.json
+++ b/app/javascript/dashboard/i18n/locale/sq/contact.json
@@ -20,6 +20,7 @@
"CALL": "Telefono",
"CALL_INITIATED": "Duke thirrur kontaktin…",
"CALL_FAILED": "Nuk mund të fillohet thirrja. Ju lutemi provoni përsëri.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Zgjidhni një inbox të zërit"
},
diff --git a/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json
index b93cf1ad6..0fc12b73b 100644
--- a/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Ju lutemi shkruani URL-në tuaj të webhook-ut",
"ERROR": "Ju lutem shkruani një URL të vlefshme"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Kopjo sekretin në kujtesën e përkohshme",
+ "COPY_SUCCESS": "Sekreti u kopjua në kujtesën e përkohshme",
+ "TOGGLE": "Ndrysho dukshmërinë e sekretit",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Domeni i faqes së internetit",
"PLACEHOLDER": "Shkruani domenin e faqes suaj (p.sh.: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/sq/integrations.json b/app/javascript/dashboard/i18n/locale/sq/integrations.json
index 7e6525a11..f87439881 100644
--- a/app/javascript/dashboard/i18n/locale/sq/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/sq/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Mjeti i personalizuar u fshi me sukses",
"ERROR_MESSAGE": "Dështoi fshirja e mjetit të personalizuar"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/sq/macros.json b/app/javascript/dashboard/i18n/locale/sq/macros.json
index 91e1f8e71..476271038 100644
--- a/app/javascript/dashboard/i18n/locale/sq/macros.json
+++ b/app/javascript/dashboard/i18n/locale/sq/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Cakto një agjent",
"ADD_LABEL": "Shto një etiketë",
"REMOVE_LABEL": "Hiq një etiketë",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Hiq ekipin e caktuar",
"SEND_EMAIL_TRANSCRIPT": "Dërgo një transkript me email",
"MUTE_CONVERSATION": "Heshto bisedën",
diff --git a/app/javascript/dashboard/i18n/locale/sq/settings.json b/app/javascript/dashboard/i18n/locale/sq/settings.json
index ef40841c0..2cdbd9bc2 100644
--- a/app/javascript/dashboard/i18n/locale/sq/settings.json
+++ b/app/javascript/dashboard/i18n/locale/sq/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Nënshkrimi u ruajt me sukses",
"IMAGE_UPLOAD_ERROR": "Nuk mund të ngarkohet imazhi! Provoni përsëri",
"IMAGE_UPLOAD_SUCCESS": "Imazhi u shtua me sukses. Ju lutemi klikoni ruaj për të ruajtur nënshkrimin",
- "IMAGE_UPLOAD_SIZE_ERROR": "Madhësia e imazhit duhet të jetë më pak se {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Madhësia e imazhit duhet të jetë më pak se {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Nënshkrimi i Mesazhit",
diff --git a/app/javascript/dashboard/i18n/locale/sq/signup.json b/app/javascript/dashboard/i18n/locale/sq/signup.json
index 4a90fd322..7962091fa 100644
--- a/app/javascript/dashboard/i18n/locale/sq/signup.json
+++ b/app/javascript/dashboard/i18n/locale/sq/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Ridispatcho emailin e verifikimit",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/sr/agentBots.json b/app/javascript/dashboard/i18n/locale/sr/agentBots.json
index 018b95ed3..b2a5cc9f3 100644
--- a/app/javascript/dashboard/i18n/locale/sr/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/sr/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Token za pristup",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/sr/automation.json b/app/javascript/dashboard/i18n/locale/sr/automation.json
index ec9544e3e..ef707a764 100644
--- a/app/javascript/dashboard/i18n/locale/sr/automation.json
+++ b/app/javascript/dashboard/i18n/locale/sr/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Privatna beleška",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "E-pošta",
"INBOX": "Prijemno sanduče",
diff --git a/app/javascript/dashboard/i18n/locale/sr/components.json b/app/javascript/dashboard/i18n/locale/sr/components.json
index 6e46cb927..9d0c49978 100644
--- a/app/javascript/dashboard/i18n/locale/sr/components.json
+++ b/app/javascript/dashboard/i18n/locale/sr/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/sr/contact.json b/app/javascript/dashboard/i18n/locale/sr/contact.json
index 071ee8df8..1e6b7c9de 100644
--- a/app/javascript/dashboard/i18n/locale/sr/contact.json
+++ b/app/javascript/dashboard/i18n/locale/sr/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/sr/helpCenter.json b/app/javascript/dashboard/i18n/locale/sr/helpCenter.json
index 271eeb3a6..0617bbc65 100644
--- a/app/javascript/dashboard/i18n/locale/sr/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/sr/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Uncategorized",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json
index 0ff4eed5e..4e7b557d9 100644
--- a/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Molim vas unesite ispravnu adresu"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Domen veb sajta",
"PLACEHOLDER": "Unesite domen vašeg veb sajta (npr.: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/sr/integrations.json b/app/javascript/dashboard/i18n/locale/sr/integrations.json
index 0de1b1d41..263de1216 100644
--- a/app/javascript/dashboard/i18n/locale/sr/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/sr/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/sr/macros.json b/app/javascript/dashboard/i18n/locale/sr/macros.json
index b3d5de505..b51c78700 100644
--- a/app/javascript/dashboard/i18n/locale/sr/macros.json
+++ b/app/javascript/dashboard/i18n/locale/sr/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Utišaj razgovor",
diff --git a/app/javascript/dashboard/i18n/locale/sr/settings.json b/app/javascript/dashboard/i18n/locale/sr/settings.json
index 7ee51eb56..11726e5e5 100644
--- a/app/javascript/dashboard/i18n/locale/sr/settings.json
+++ b/app/javascript/dashboard/i18n/locale/sr/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Potpis je uspešno sačuvan",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Potpis poruke",
diff --git a/app/javascript/dashboard/i18n/locale/sr/signup.json b/app/javascript/dashboard/i18n/locale/sr/signup.json
index 061cfd571..5fae6f6a1 100644
--- a/app/javascript/dashboard/i18n/locale/sr/signup.json
+++ b/app/javascript/dashboard/i18n/locale/sr/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Već imate nalog?"
+ "HAVE_AN_ACCOUNT": "Već imate nalog?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/sv/agentBots.json b/app/javascript/dashboard/i18n/locale/sv/agentBots.json
index 0a7882e4c..3614acafb 100644
--- a/app/javascript/dashboard/i18n/locale/sv/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/sv/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Åtkomsttoken",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/sv/automation.json b/app/javascript/dashboard/i18n/locale/sv/automation.json
index d77252fd7..356f0c313 100644
--- a/app/javascript/dashboard/i18n/locale/sv/automation.json
+++ b/app/javascript/dashboard/i18n/locale/sv/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Privat anteckning",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "E-post",
"INBOX": "Inkorg",
diff --git a/app/javascript/dashboard/i18n/locale/sv/components.json b/app/javascript/dashboard/i18n/locale/sv/components.json
index 5c2ef3d03..b39180a8c 100644
--- a/app/javascript/dashboard/i18n/locale/sv/components.json
+++ b/app/javascript/dashboard/i18n/locale/sv/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/sv/contact.json b/app/javascript/dashboard/i18n/locale/sv/contact.json
index b606f442c..2da38056a 100644
--- a/app/javascript/dashboard/i18n/locale/sv/contact.json
+++ b/app/javascript/dashboard/i18n/locale/sv/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/sv/helpCenter.json b/app/javascript/dashboard/i18n/locale/sv/helpCenter.json
index 0ecf7e809..8420de95c 100644
--- a/app/javascript/dashboard/i18n/locale/sv/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/sv/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Okategoriserade",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json
index 813ea6d53..115dcdf59 100644
--- a/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Ange en giltig URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Webbplatsens domän",
"PLACEHOLDER": "Ange din webbplatsdomän (t.ex. acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/sv/integrations.json b/app/javascript/dashboard/i18n/locale/sv/integrations.json
index 14637807d..d32b4e3b7 100644
--- a/app/javascript/dashboard/i18n/locale/sv/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/sv/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/sv/macros.json b/app/javascript/dashboard/i18n/locale/sv/macros.json
index 6d9fa5ca1..08f2492a0 100644
--- a/app/javascript/dashboard/i18n/locale/sv/macros.json
+++ b/app/javascript/dashboard/i18n/locale/sv/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Tysta konversation",
diff --git a/app/javascript/dashboard/i18n/locale/sv/settings.json b/app/javascript/dashboard/i18n/locale/sv/settings.json
index 1f4ecd714..8ac8bdce3 100644
--- a/app/javascript/dashboard/i18n/locale/sv/settings.json
+++ b/app/javascript/dashboard/i18n/locale/sv/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Signature saved successfully",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Message Signature",
diff --git a/app/javascript/dashboard/i18n/locale/sv/signup.json b/app/javascript/dashboard/i18n/locale/sv/signup.json
index 2dac954ca..b22acb19d 100644
--- a/app/javascript/dashboard/i18n/locale/sv/signup.json
+++ b/app/javascript/dashboard/i18n/locale/sv/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Har du redan ett konto?"
+ "HAVE_AN_ACCOUNT": "Har du redan ett konto?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Skicka verifieringsmail igen",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ta/agentBots.json b/app/javascript/dashboard/i18n/locale/ta/agentBots.json
index 351007fc1..7c9aacb48 100644
--- a/app/javascript/dashboard/i18n/locale/ta/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ta/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "ரகசியம் கிளிப்போர்டுக்கு நகலெடுக்கப்பட்டது",
+ "TOGGLE": "ரகசியத்தை காண்பிக்க/மறைக்கவும்",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "முடிந்தது",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "அணுகுவதற்கான டோக்கன்",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/ta/automation.json b/app/javascript/dashboard/i18n/locale/ta/automation.json
index 10d93edb3..475fbc860 100644
--- a/app/javascript/dashboard/i18n/locale/ta/automation.json
+++ b/app/javascript/dashboard/i18n/locale/ta/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "தனிப்பட்ட குறிப்பு",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "இமெயில்",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/ta/components.json b/app/javascript/dashboard/i18n/locale/ta/components.json
index 975e9be60..25fc68896 100644
--- a/app/javascript/dashboard/i18n/locale/ta/components.json
+++ b/app/javascript/dashboard/i18n/locale/ta/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ta/contact.json b/app/javascript/dashboard/i18n/locale/ta/contact.json
index dac0a58df..dccf6dc8c 100644
--- a/app/javascript/dashboard/i18n/locale/ta/contact.json
+++ b/app/javascript/dashboard/i18n/locale/ta/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/ta/helpCenter.json b/app/javascript/dashboard/i18n/locale/ta/helpCenter.json
index bd683a959..8ef5a191a 100644
--- a/app/javascript/dashboard/i18n/locale/ta/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/ta/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Uncategorized",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json
index 1fb8d94bc..b98daba65 100644
--- a/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "தயவுசெய்து உங்கள் Webhook URL ஐ உள்ளிடவும்",
"ERROR": "சரியான URL ஐ பதிவிடவும்"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "ரகசியம் கிளிப்போர்டுக்கு நகலெடுக்கப்பட்டது",
+ "TOGGLE": "ரகசியத்தை காண்பிக்க/மறைக்கவும்",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "இணையதள களம்",
"PLACEHOLDER": "உங்கள் இணையதள களத்தை உள்ளிடவும் (eg: உதாரணமாக acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/ta/integrations.json b/app/javascript/dashboard/i18n/locale/ta/integrations.json
index 334b64526..0cb31905a 100644
--- a/app/javascript/dashboard/i18n/locale/ta/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ta/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "தனிப்பயன் கருவி வெற்றிகரமாக நீக்கப்பட்டது",
"ERROR_MESSAGE": "தனிப்பயன் கருவியை நீக்க முடியவில்லை"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/ta/macros.json b/app/javascript/dashboard/i18n/locale/ta/macros.json
index 01a116fbe..f1f73e0ed 100644
--- a/app/javascript/dashboard/i18n/locale/ta/macros.json
+++ b/app/javascript/dashboard/i18n/locale/ta/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mute Conversation",
diff --git a/app/javascript/dashboard/i18n/locale/ta/settings.json b/app/javascript/dashboard/i18n/locale/ta/settings.json
index e04011d68..9fb190e01 100644
--- a/app/javascript/dashboard/i18n/locale/ta/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ta/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Signature saved successfully",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Message Signature",
diff --git a/app/javascript/dashboard/i18n/locale/ta/signup.json b/app/javascript/dashboard/i18n/locale/ta/signup.json
index 3249d4a78..2f728fdce 100644
--- a/app/javascript/dashboard/i18n/locale/ta/signup.json
+++ b/app/javascript/dashboard/i18n/locale/ta/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/th/agentBots.json b/app/javascript/dashboard/i18n/locale/th/agentBots.json
index a44bb741c..333a093f1 100644
--- a/app/javascript/dashboard/i18n/locale/th/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/th/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/th/automation.json b/app/javascript/dashboard/i18n/locale/th/automation.json
index e060f7634..d41f0fe4b 100644
--- a/app/javascript/dashboard/i18n/locale/th/automation.json
+++ b/app/javascript/dashboard/i18n/locale/th/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "โน้ตส่วนตัว",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "อีเมล์",
"INBOX": "กล่องข้อความ",
diff --git a/app/javascript/dashboard/i18n/locale/th/components.json b/app/javascript/dashboard/i18n/locale/th/components.json
index 3dc7a528d..56ab9c8a8 100644
--- a/app/javascript/dashboard/i18n/locale/th/components.json
+++ b/app/javascript/dashboard/i18n/locale/th/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/th/contact.json b/app/javascript/dashboard/i18n/locale/th/contact.json
index b0c174fda..09e94d2c8 100644
--- a/app/javascript/dashboard/i18n/locale/th/contact.json
+++ b/app/javascript/dashboard/i18n/locale/th/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/th/helpCenter.json b/app/javascript/dashboard/i18n/locale/th/helpCenter.json
index b4a3b618d..310d6aace 100644
--- a/app/javascript/dashboard/i18n/locale/th/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/th/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Uncategorized",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json
index 03c928ef0..91c808d0e 100644
--- a/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "กรุณากรอกลิ้งที่ถูกต้อง"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "โดเมนเว็บไซต์",
"PLACEHOLDER": "กรอกโดเมนเว็บไซต์ของคุณ (เช่น snowboltz.net)"
diff --git a/app/javascript/dashboard/i18n/locale/th/integrations.json b/app/javascript/dashboard/i18n/locale/th/integrations.json
index e4c3c2241..581de8844 100644
--- a/app/javascript/dashboard/i18n/locale/th/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/th/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/th/macros.json b/app/javascript/dashboard/i18n/locale/th/macros.json
index 9d13659f3..f16ba5820 100644
--- a/app/javascript/dashboard/i18n/locale/th/macros.json
+++ b/app/javascript/dashboard/i18n/locale/th/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "ระงับการสนทนา",
diff --git a/app/javascript/dashboard/i18n/locale/th/settings.json b/app/javascript/dashboard/i18n/locale/th/settings.json
index 3639e9290..317e42587 100644
--- a/app/javascript/dashboard/i18n/locale/th/settings.json
+++ b/app/javascript/dashboard/i18n/locale/th/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "บันทึกลายเซ็นสำเร็จแล้ว",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "ข้อความลายเซ็น",
diff --git a/app/javascript/dashboard/i18n/locale/th/signup.json b/app/javascript/dashboard/i18n/locale/th/signup.json
index 941f9f93a..44344ca01 100644
--- a/app/javascript/dashboard/i18n/locale/th/signup.json
+++ b/app/javascript/dashboard/i18n/locale/th/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "มีบัญชีอยู่แล้ว?"
+ "HAVE_AN_ACCOUNT": "มีบัญชีอยู่แล้ว?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/tl/agentBots.json b/app/javascript/dashboard/i18n/locale/tl/agentBots.json
index dc92016ab..ab0fb0c8a 100644
--- a/app/javascript/dashboard/i18n/locale/tl/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/tl/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Tapos na",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/tl/automation.json b/app/javascript/dashboard/i18n/locale/tl/automation.json
index 22a9735f4..93f281517 100644
--- a/app/javascript/dashboard/i18n/locale/tl/automation.json
+++ b/app/javascript/dashboard/i18n/locale/tl/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Pribadong Tala",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/tl/components.json b/app/javascript/dashboard/i18n/locale/tl/components.json
index 0a2542a84..a75d35b08 100644
--- a/app/javascript/dashboard/i18n/locale/tl/components.json
+++ b/app/javascript/dashboard/i18n/locale/tl/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/tl/contact.json b/app/javascript/dashboard/i18n/locale/tl/contact.json
index 893570978..07f7ba793 100644
--- a/app/javascript/dashboard/i18n/locale/tl/contact.json
+++ b/app/javascript/dashboard/i18n/locale/tl/contact.json
@@ -20,6 +20,7 @@
"CALL": "Tawagan",
"CALL_INITIATED": "Tinutawagan ang kontak…",
"CALL_FAILED": "Hindi masimulan ang tawag. Pakisubukang muli.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Pumili ng voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/tl/helpCenter.json b/app/javascript/dashboard/i18n/locale/tl/helpCenter.json
index 511bbf4c0..708d3fc83 100644
--- a/app/javascript/dashboard/i18n/locale/tl/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/tl/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "Higit pang mga katangian",
"UNCATEGORIZED": "Walang kategorya",
- "EDITOR_PLACEHOLDER": "Sumulat ng kahit ano..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Mga katangian ng artikulo",
diff --git a/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json
index f2cb02466..ba9a104e2 100644
--- a/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Pakilagay ang iyong Webhook URL",
"ERROR": "Mangyaring maglagay ng wastong URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Domain ng Website",
"PLACEHOLDER": "Ilagay ang domain ng iyong website (hal: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/tl/integrations.json b/app/javascript/dashboard/i18n/locale/tl/integrations.json
index 545393d1a..a8fcdbf9f 100644
--- a/app/javascript/dashboard/i18n/locale/tl/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/tl/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Nagkaroon ng error sa pagtanggal ng pasadyang kasangkapan"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/tl/macros.json b/app/javascript/dashboard/i18n/locale/tl/macros.json
index e12f0ca73..67a5c5003 100644
--- a/app/javascript/dashboard/i18n/locale/tl/macros.json
+++ b/app/javascript/dashboard/i18n/locale/tl/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mute Conversation",
diff --git a/app/javascript/dashboard/i18n/locale/tl/settings.json b/app/javascript/dashboard/i18n/locale/tl/settings.json
index 88f705a7b..b02567c3f 100644
--- a/app/javascript/dashboard/i18n/locale/tl/settings.json
+++ b/app/javascript/dashboard/i18n/locale/tl/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Matagumpay na naisave ang lagda",
"IMAGE_UPLOAD_ERROR": "Hindi ma-upload ang larawan! Subukang muli",
"IMAGE_UPLOAD_SUCCESS": "Matagumpay na naidagdag ang larawan. Paki-click ang save upang mai-save ang pirma",
- "IMAGE_UPLOAD_SIZE_ERROR": "Ang laki ng larawan ay dapat mas mababa sa {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Ang laki ng larawan ay dapat mas mababa sa {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Lagda ng Mensahe",
diff --git a/app/javascript/dashboard/i18n/locale/tl/signup.json b/app/javascript/dashboard/i18n/locale/tl/signup.json
index 4a90fd322..65aa0e53a 100644
--- a/app/javascript/dashboard/i18n/locale/tl/signup.json
+++ b/app/javascript/dashboard/i18n/locale/tl/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Muling ipadala ang email ng beripikasyon",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/tr/agentBots.json b/app/javascript/dashboard/i18n/locale/tr/agentBots.json
index 9b44e7b5c..b93bc958a 100644
--- a/app/javascript/dashboard/i18n/locale/tr/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/tr/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Bot güncellenemedi. Lütfen tekrar deneyin."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Erişim Jetonu",
"DESCRIPTION": "Erişim anahtarını kopyalayın ve güvenli bir yerde saklayın",
diff --git a/app/javascript/dashboard/i18n/locale/tr/automation.json b/app/javascript/dashboard/i18n/locale/tr/automation.json
index cb3ffe3cf..e17624c5f 100644
--- a/app/javascript/dashboard/i18n/locale/tr/automation.json
+++ b/app/javascript/dashboard/i18n/locale/tr/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Temsilciye Ata",
"ASSIGN_TEAM": "Bir Ekibe Ata",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Atanan Ekibi Kaldır",
"ADD_LABEL": "Etiket Ekle",
"REMOVE_LABEL": "Etiketi Kaldır",
"SEND_EMAIL_TO_TEAM": "Ekibe E-posta Gönder",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Mesaj Türü",
+ "PRIVATE_NOTE": "Özel Not",
"MESSAGE_CONTAINS": "Mesaj İçerir",
"EMAIL": "E-Posta",
"INBOX": "Gelen Kutusu",
diff --git a/app/javascript/dashboard/i18n/locale/tr/components.json b/app/javascript/dashboard/i18n/locale/tr/components.json
index a671d6c69..f9fcb5680 100644
--- a/app/javascript/dashboard/i18n/locale/tr/components.json
+++ b/app/javascript/dashboard/i18n/locale/tr/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Çok yakında!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/tr/contact.json b/app/javascript/dashboard/i18n/locale/tr/contact.json
index 941fe1f54..6b35d8597 100644
--- a/app/javascript/dashboard/i18n/locale/tr/contact.json
+++ b/app/javascript/dashboard/i18n/locale/tr/contact.json
@@ -20,6 +20,7 @@
"CALL": "Ara",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Sesli gelen kutusu seçin"
},
diff --git a/app/javascript/dashboard/i18n/locale/tr/helpCenter.json b/app/javascript/dashboard/i18n/locale/tr/helpCenter.json
index f75b75326..7e766f2b0 100644
--- a/app/javascript/dashboard/i18n/locale/tr/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/tr/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Kategorize Edilmemiş",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json
index 5b8470469..90b96cead 100644
--- a/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Lütfen geçerli bir adres girin"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Web Sitesi Alan Adı",
"PLACEHOLDER": "Web sitenizin adresini girin"
diff --git a/app/javascript/dashboard/i18n/locale/tr/integrations.json b/app/javascript/dashboard/i18n/locale/tr/integrations.json
index ec8dff5c5..11c3a82bc 100644
--- a/app/javascript/dashboard/i18n/locale/tr/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/tr/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Özel araç başarıyla silindi",
"ERROR_MESSAGE": "Özel araç silinemedi"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Fatura Detayları",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/tr/macros.json b/app/javascript/dashboard/i18n/locale/tr/macros.json
index 3e44974e0..98d09e146 100644
--- a/app/javascript/dashboard/i18n/locale/tr/macros.json
+++ b/app/javascript/dashboard/i18n/locale/tr/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Bir Temsilci Ata",
"ADD_LABEL": "Etiket Ekle",
"REMOVE_LABEL": "Etiketi Kaldır",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Atanan Ekibi Kaldır",
"SEND_EMAIL_TRANSCRIPT": "E-posta Dökümü Gönder",
"MUTE_CONVERSATION": "Konuşmayı Sessize Al",
diff --git a/app/javascript/dashboard/i18n/locale/tr/settings.json b/app/javascript/dashboard/i18n/locale/tr/settings.json
index 3b3ef5367..0be0322e9 100644
--- a/app/javascript/dashboard/i18n/locale/tr/settings.json
+++ b/app/javascript/dashboard/i18n/locale/tr/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "İmza başarıyla kaydedildi",
"IMAGE_UPLOAD_ERROR": "Resim yüklenemedi! Tekrar deneyin",
"IMAGE_UPLOAD_SUCCESS": "Resim başarıyla eklendi. İmzayı kaydetmek için lütfen kaydet'e tıklayın",
- "IMAGE_UPLOAD_SIZE_ERROR": "Resim boyutu {size}MB'dan küçük olmalıdır"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Resim boyutu {size}MB'dan küçük olmalıdır",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "İmzanız",
diff --git a/app/javascript/dashboard/i18n/locale/tr/signup.json b/app/javascript/dashboard/i18n/locale/tr/signup.json
index d85d92db5..136eaea8a 100644
--- a/app/javascript/dashboard/i18n/locale/tr/signup.json
+++ b/app/javascript/dashboard/i18n/locale/tr/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Woot sunucusuna bağlanılamadı. Lütfen tekrar deneyin."
},
"SUBMIT": "Hesap oluştur",
- "HAVE_AN_ACCOUNT": "Hesabın var mı?"
+ "HAVE_AN_ACCOUNT": "Hesabın var mı?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Doğrulama E-Postasını tekrar gönder",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/uk/agentBots.json b/app/javascript/dashboard/i18n/locale/uk/agentBots.json
index f2fae5251..b4e221445 100644
--- a/app/javascript/dashboard/i18n/locale/uk/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/uk/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Не вдалося оновити бота. Будь ласка, спробуйте ще раз."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Ключ доступу",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/uk/automation.json b/app/javascript/dashboard/i18n/locale/uk/automation.json
index 566a65d99..baf7420b2 100644
--- a/app/javascript/dashboard/i18n/locale/uk/automation.json
+++ b/app/javascript/dashboard/i18n/locale/uk/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Особиста нотатка",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Вхідні",
diff --git a/app/javascript/dashboard/i18n/locale/uk/components.json b/app/javascript/dashboard/i18n/locale/uk/components.json
index 6809a24fe..b6be5d520 100644
--- a/app/javascript/dashboard/i18n/locale/uk/components.json
+++ b/app/javascript/dashboard/i18n/locale/uk/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/uk/contact.json b/app/javascript/dashboard/i18n/locale/uk/contact.json
index 10a1a42fd..04d3bbc16 100644
--- a/app/javascript/dashboard/i18n/locale/uk/contact.json
+++ b/app/javascript/dashboard/i18n/locale/uk/contact.json
@@ -20,6 +20,7 @@
"CALL": "Дзвінок",
"CALL_INITIATED": "Викликаємо контакт…",
"CALL_FAILED": "Не можливо розпочати виклик. Будь ласка, спробуйте пізніше.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Оберіть голосову теку"
},
diff --git a/app/javascript/dashboard/i18n/locale/uk/helpCenter.json b/app/javascript/dashboard/i18n/locale/uk/helpCenter.json
index 21e0220f2..eeffbcfe6 100644
--- a/app/javascript/dashboard/i18n/locale/uk/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/uk/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Без категорії",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json
index 79366a564..abacb0688 100644
--- a/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Будь ласка, введіть URL вашого вебхука",
"ERROR": "Будь ласка, введіть правильний URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Домен сайту",
"PLACEHOLDER": "Введіть домен вашого сайту (наприклад: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/uk/integrations.json b/app/javascript/dashboard/i18n/locale/uk/integrations.json
index ba40168ed..c069f5659 100644
--- a/app/javascript/dashboard/i18n/locale/uk/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/uk/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Відкрити рахунок",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Будь ласка, зверніться до адміністратора для оновлення."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/uk/macros.json b/app/javascript/dashboard/i18n/locale/uk/macros.json
index 037531e4f..a8cdba398 100644
--- a/app/javascript/dashboard/i18n/locale/uk/macros.json
+++ b/app/javascript/dashboard/i18n/locale/uk/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Заглушити розмову",
diff --git a/app/javascript/dashboard/i18n/locale/uk/settings.json b/app/javascript/dashboard/i18n/locale/uk/settings.json
index e163ae07f..5fa9d166e 100644
--- a/app/javascript/dashboard/i18n/locale/uk/settings.json
+++ b/app/javascript/dashboard/i18n/locale/uk/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Підпис успішно збережено",
"IMAGE_UPLOAD_ERROR": "Не вдалося завантажити зображення! Повторіть спробу",
"IMAGE_UPLOAD_SUCCESS": "Зображення успішно додано. Будь ласка, натисніть на кнопку Зберегти, щоб зберегти підпис",
- "IMAGE_UPLOAD_SIZE_ERROR": "Зображення має бути менше {size}Мб"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Зображення має бути менше {size}Мб",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Підпис повідомлення",
diff --git a/app/javascript/dashboard/i18n/locale/uk/signup.json b/app/javascript/dashboard/i18n/locale/uk/signup.json
index facf944d6..d273c10eb 100644
--- a/app/javascript/dashboard/i18n/locale/uk/signup.json
+++ b/app/javascript/dashboard/i18n/locale/uk/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Не вдалося підключитися до Woot сервера. Будь ласка, спробуйте ще раз."
},
"SUBMIT": "Створити акаунт",
- "HAVE_AN_ACCOUNT": "Вже маєте обліковий запис?"
+ "HAVE_AN_ACCOUNT": "Вже маєте обліковий запис?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Повторно надіслати листа з підтвердженням",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ur/agentBots.json b/app/javascript/dashboard/i18n/locale/ur/agentBots.json
index e20ab5ba0..609657777 100644
--- a/app/javascript/dashboard/i18n/locale/ur/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ur/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/ur/automation.json b/app/javascript/dashboard/i18n/locale/ur/automation.json
index de73db65d..7dd3ff8fe 100644
--- a/app/javascript/dashboard/i18n/locale/ur/automation.json
+++ b/app/javascript/dashboard/i18n/locale/ur/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Private Note",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "ان باکس",
diff --git a/app/javascript/dashboard/i18n/locale/ur/components.json b/app/javascript/dashboard/i18n/locale/ur/components.json
index 9491f168e..f4e30558b 100644
--- a/app/javascript/dashboard/i18n/locale/ur/components.json
+++ b/app/javascript/dashboard/i18n/locale/ur/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ur/contact.json b/app/javascript/dashboard/i18n/locale/ur/contact.json
index 3cc58afbc..d1e273392 100644
--- a/app/javascript/dashboard/i18n/locale/ur/contact.json
+++ b/app/javascript/dashboard/i18n/locale/ur/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/ur/helpCenter.json b/app/javascript/dashboard/i18n/locale/ur/helpCenter.json
index 9820b7284..59f61ce7c 100644
--- a/app/javascript/dashboard/i18n/locale/ur/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/ur/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Uncategorized",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json
index af89e5e35..d356d9fa1 100644
--- a/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Please enter a valid URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Website Domain",
"PLACEHOLDER": "Enter your website domain (eg: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/ur/integrations.json b/app/javascript/dashboard/i18n/locale/ur/integrations.json
index 985813f05..796290e68 100644
--- a/app/javascript/dashboard/i18n/locale/ur/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ur/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/ur/macros.json b/app/javascript/dashboard/i18n/locale/ur/macros.json
index 28c8be2ac..befac16d7 100644
--- a/app/javascript/dashboard/i18n/locale/ur/macros.json
+++ b/app/javascript/dashboard/i18n/locale/ur/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "خاموش گفتگو",
diff --git a/app/javascript/dashboard/i18n/locale/ur/settings.json b/app/javascript/dashboard/i18n/locale/ur/settings.json
index 677dd3f20..52e44cc3d 100644
--- a/app/javascript/dashboard/i18n/locale/ur/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ur/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Signature saved successfully",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Message Signature",
diff --git a/app/javascript/dashboard/i18n/locale/ur/signup.json b/app/javascript/dashboard/i18n/locale/ur/signup.json
index 4a90fd322..238a1f061 100644
--- a/app/javascript/dashboard/i18n/locale/ur/signup.json
+++ b/app/javascript/dashboard/i18n/locale/ur/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/agentBots.json b/app/javascript/dashboard/i18n/locale/ur_IN/agentBots.json
index dc92016ab..c17ec60d0 100644
--- a/app/javascript/dashboard/i18n/locale/ur_IN/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/ur_IN/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Access Token",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/automation.json b/app/javascript/dashboard/i18n/locale/ur_IN/automation.json
index 22a9735f4..46f4a520e 100644
--- a/app/javascript/dashboard/i18n/locale/ur_IN/automation.json
+++ b/app/javascript/dashboard/i18n/locale/ur_IN/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Private Note",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Inbox",
diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/components.json b/app/javascript/dashboard/i18n/locale/ur_IN/components.json
index 0a2542a84..a75d35b08 100644
--- a/app/javascript/dashboard/i18n/locale/ur_IN/components.json
+++ b/app/javascript/dashboard/i18n/locale/ur_IN/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/contact.json b/app/javascript/dashboard/i18n/locale/ur_IN/contact.json
index 48d45d737..1614f943b 100644
--- a/app/javascript/dashboard/i18n/locale/ur_IN/contact.json
+++ b/app/javascript/dashboard/i18n/locale/ur_IN/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json
index abe021056..800351e62 100644
--- a/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "براہ کرم اپنا Webhook URL درج کریں",
"ERROR": "براہ کرم ایک درست URL درج کریں"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "ویب سائٹ ڈومین",
"PLACEHOLDER": "اپنا ویب سائٹ ڈومین درج کریں (مثلاً: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json b/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json
index 4f124f413..8ef714188 100644
--- a/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/macros.json b/app/javascript/dashboard/i18n/locale/ur_IN/macros.json
index e12f0ca73..67a5c5003 100644
--- a/app/javascript/dashboard/i18n/locale/ur_IN/macros.json
+++ b/app/javascript/dashboard/i18n/locale/ur_IN/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Mute Conversation",
diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/settings.json b/app/javascript/dashboard/i18n/locale/ur_IN/settings.json
index bbcac2dd0..c218b7d37 100644
--- a/app/javascript/dashboard/i18n/locale/ur_IN/settings.json
+++ b/app/javascript/dashboard/i18n/locale/ur_IN/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "دستخط کامیابی سے محفوظ ہو گیا",
"IMAGE_UPLOAD_ERROR": "تصویر اپ لوڈ نہیں ہو سکی! دوبارہ کوشش کریں",
"IMAGE_UPLOAD_SUCCESS": "تصویر کامیابی سے شامل کر دی گئی۔ دستخط محفوظ کرنے کے لیے براہ کرم سیو پر کلک کریں",
- "IMAGE_UPLOAD_SIZE_ERROR": "تصویر کا سائز {size}MB سے کم ہونا چاہیے"
+ "IMAGE_UPLOAD_SIZE_ERROR": "تصویر کا سائز {size}MB سے کم ہونا چاہیے",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "پیغام دستخط",
diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/signup.json b/app/javascript/dashboard/i18n/locale/ur_IN/signup.json
index 4a90fd322..5a3e03396 100644
--- a/app/javascript/dashboard/i18n/locale/ur_IN/signup.json
+++ b/app/javascript/dashboard/i18n/locale/ur_IN/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Already have an account?"
+ "HAVE_AN_ACCOUNT": "Already have an account?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "تصدیقی ای میل دوبارہ بھیجیں",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/vi/agentBots.json b/app/javascript/dashboard/i18n/locale/vi/agentBots.json
index ca79b51f0..4b2372884 100644
--- a/app/javascript/dashboard/i18n/locale/vi/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/vi/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "Could not update bot. Please try again."
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "Token truy cập",
"DESCRIPTION": "Copy the access token and save it securely",
diff --git a/app/javascript/dashboard/i18n/locale/vi/automation.json b/app/javascript/dashboard/i18n/locale/vi/automation.json
index 29fec4d71..40ae9781a 100644
--- a/app/javascript/dashboard/i18n/locale/vi/automation.json
+++ b/app/javascript/dashboard/i18n/locale/vi/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "Assign to Agent",
"ASSIGN_TEAM": "Assign a Team",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
"SEND_EMAIL_TO_TEAM": "Send an Email to Team",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "Message Type",
+ "PRIVATE_NOTE": "Lưu ý riêng",
"MESSAGE_CONTAINS": "Message Contains",
"EMAIL": "Email",
"INBOX": "Hộp thư đến",
diff --git a/app/javascript/dashboard/i18n/locale/vi/components.json b/app/javascript/dashboard/i18n/locale/vi/components.json
index 74e433202..53dfdd0cc 100644
--- a/app/javascript/dashboard/i18n/locale/vi/components.json
+++ b/app/javascript/dashboard/i18n/locale/vi/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "Coming Soon!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/vi/contact.json b/app/javascript/dashboard/i18n/locale/vi/contact.json
index a863a3903..25cc6b2a5 100644
--- a/app/javascript/dashboard/i18n/locale/vi/contact.json
+++ b/app/javascript/dashboard/i18n/locale/vi/contact.json
@@ -20,6 +20,7 @@
"CALL": "Call",
"CALL_INITIATED": "Calling the contact…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "Choose a voice inbox"
},
diff --git a/app/javascript/dashboard/i18n/locale/vi/helpCenter.json b/app/javascript/dashboard/i18n/locale/vi/helpCenter.json
index 1a4505ecf..fa002f780 100644
--- a/app/javascript/dashboard/i18n/locale/vi/helpCenter.json
+++ b/app/javascript/dashboard/i18n/locale/vi/helpCenter.json
@@ -698,7 +698,7 @@
"EDIT_ARTICLE": {
"MORE_PROPERTIES": "More properties",
"UNCATEGORIZED": "Chưa được phân loại",
- "EDITOR_PLACEHOLDER": "Write something..."
+ "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options."
},
"ARTICLE_PROPERTIES": {
"ARTICLE_PROPERTIES": "Article properties",
diff --git a/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json
index 2e6bab384..72df3dad0 100644
--- a/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "Please enter your Webhook URL",
"ERROR": "Vui lòng nhập một URL hợp lệ"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "Domain trang web",
"PLACEHOLDER": "Nhập tên miền trang web của bạn (ví dụ: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/vi/integrations.json b/app/javascript/dashboard/i18n/locale/vi/integrations.json
index 8a594cf51..f54f81203 100644
--- a/app/javascript/dashboard/i18n/locale/vi/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/vi/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "Open billing",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "Please reach out to your administrator for the upgrade."
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/vi/macros.json b/app/javascript/dashboard/i18n/locale/vi/macros.json
index 55a77ea23..e5c69dcec 100644
--- a/app/javascript/dashboard/i18n/locale/vi/macros.json
+++ b/app/javascript/dashboard/i18n/locale/vi/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "Assign an Agent",
"ADD_LABEL": "Add a Label",
"REMOVE_LABEL": "Remove a Label",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "Remove Assigned Team",
"SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript",
"MUTE_CONVERSATION": "Tắt tiếng cuộc trò chuyện",
diff --git a/app/javascript/dashboard/i18n/locale/vi/settings.json b/app/javascript/dashboard/i18n/locale/vi/settings.json
index 964ce4642..4a3fe947c 100644
--- a/app/javascript/dashboard/i18n/locale/vi/settings.json
+++ b/app/javascript/dashboard/i18n/locale/vi/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "Chữ ký được lưu thành công",
"IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again",
"IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature",
- "IMAGE_UPLOAD_SIZE_ERROR": "Kích thước ảnh phải nhỏ hơn {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "Kích thước ảnh phải nhỏ hơn {size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "Chữ ký tin nhắn",
diff --git a/app/javascript/dashboard/i18n/locale/vi/signup.json b/app/javascript/dashboard/i18n/locale/vi/signup.json
index 1938b8170..84356d8e5 100644
--- a/app/javascript/dashboard/i18n/locale/vi/signup.json
+++ b/app/javascript/dashboard/i18n/locale/vi/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "Could not connect to Woot server. Please try again."
},
"SUBMIT": "Create account",
- "HAVE_AN_ACCOUNT": "Đã có tài khoản?"
+ "HAVE_AN_ACCOUNT": "Đã có tài khoản?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "Resend verification email",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/agentBots.json b/app/javascript/dashboard/i18n/locale/zh_CN/agentBots.json
index dc2ef8265..9d90219f8 100644
--- a/app/javascript/dashboard/i18n/locale/zh_CN/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/zh_CN/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "无法更新机器人。请再试一次。"
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "Done",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "访问令牌",
"DESCRIPTION": "复制访问令牌并安全保存",
diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/automation.json b/app/javascript/dashboard/i18n/locale/zh_CN/automation.json
index 4671bd09e..b0122e961 100644
--- a/app/javascript/dashboard/i18n/locale/zh_CN/automation.json
+++ b/app/javascript/dashboard/i18n/locale/zh_CN/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "分配客服",
"ASSIGN_TEAM": "分配团队",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
+ "REMOVE_ASSIGNED_TEAM": "移除已分配的团队",
"ADD_LABEL": "添加标签",
"REMOVE_LABEL": "移除标签",
"SEND_EMAIL_TO_TEAM": "发送电子邮件给团队",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "消息类型",
+ "PRIVATE_NOTE": "私人便笺",
"MESSAGE_CONTAINS": "消息包含",
"EMAIL": "Email",
"INBOX": "收件箱",
diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/components.json b/app/javascript/dashboard/i18n/locale/zh_CN/components.json
index ba1a35d76..1546eb740 100644
--- a/app/javascript/dashboard/i18n/locale/zh_CN/components.json
+++ b/app/javascript/dashboard/i18n/locale/zh_CN/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "即将到来!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/contact.json b/app/javascript/dashboard/i18n/locale/zh_CN/contact.json
index 35120983b..deb7022e3 100644
--- a/app/javascript/dashboard/i18n/locale/zh_CN/contact.json
+++ b/app/javascript/dashboard/i18n/locale/zh_CN/contact.json
@@ -20,6 +20,7 @@
"CALL": "呼叫",
"CALL_INITIATED": "正在接通…",
"CALL_FAILED": "Unable to start the call. Please try again.",
+ "CLICK_TO_EDIT": "Click to edit",
"VOICE_INBOX_PICKER": {
"TITLE": "选择一个语音收件箱"
},
diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json
index ec0ce3c12..e61744e99 100644
--- a/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "请输入您的 Webhook URL",
"ERROR": "请输入一个有效的 URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "Copy secret to clipboard",
+ "COPY_SUCCESS": "Secret copied to clipboard",
+ "TOGGLE": "Toggle secret visibility",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "网站域名",
"PLACEHOLDER": "输入您的网站域名(e.g: acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json b/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json
index ccdf12826..b79d8bae0 100644
--- a/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json
@@ -837,6 +837,18 @@
"SUCCESS_MESSAGE": "Custom tool deleted successfully",
"ERROR_MESSAGE": "Failed to delete custom tool"
},
+ "PAYWALL": {
+ "TITLE": "Upgrade to use tools with Captain",
+ "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "查看计费",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain Tools are only available in the paid plans.",
+ "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.",
+ "ASK_ADMIN": "请联系您的管理员进行升级。"
+ },
"TEST": {
"BUTTON": "Test connection",
"SUCCESS": "Endpoint returned HTTP {status}",
diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/macros.json b/app/javascript/dashboard/i18n/locale/zh_CN/macros.json
index 703cf177f..0cd71d1f5 100644
--- a/app/javascript/dashboard/i18n/locale/zh_CN/macros.json
+++ b/app/javascript/dashboard/i18n/locale/zh_CN/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "分配客服",
"ADD_LABEL": "添加标签",
"REMOVE_LABEL": "移除标签",
+ "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent",
"REMOVE_ASSIGNED_TEAM": "移除已分配的团队",
"SEND_EMAIL_TRANSCRIPT": "通过邮件发送聊天记录",
"MUTE_CONVERSATION": "开始会话",
diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/settings.json b/app/javascript/dashboard/i18n/locale/zh_CN/settings.json
index 1ba9a5662..1ae37314e 100644
--- a/app/javascript/dashboard/i18n/locale/zh_CN/settings.json
+++ b/app/javascript/dashboard/i18n/locale/zh_CN/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "签名保存成功",
"IMAGE_UPLOAD_ERROR": "无法上传图片!请再试一次",
"IMAGE_UPLOAD_SUCCESS": "图片添加成功。请点击保存签名。",
- "IMAGE_UPLOAD_SIZE_ERROR": "图片大小应该小于{size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "图片大小应该小于{size}MB",
+ "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature."
},
"MESSAGE_SIGNATURE": {
"LABEL": "消息签名",
diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/signup.json b/app/javascript/dashboard/i18n/locale/zh_CN/signup.json
index 3e560b230..b2187c20b 100644
--- a/app/javascript/dashboard/i18n/locale/zh_CN/signup.json
+++ b/app/javascript/dashboard/i18n/locale/zh_CN/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "无法与 Woot 服务器建立连接。请重试。"
},
"SUBMIT": "创建新账户",
- "HAVE_AN_ACCOUNT": "已经有帐号?"
+ "HAVE_AN_ACCOUNT": "已经有帐号?",
+ "VERIFY_EMAIL": {
+ "TITLE": "Check your inbox",
+ "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.",
+ "RESEND": "重新发送验证邮件",
+ "RESEND_SUCCESS": "Verification email sent. Please check your inbox.",
+ "RESEND_ERROR": "Could not send verification email. Please try again."
+ }
}
}
diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/agentBots.json b/app/javascript/dashboard/i18n/locale/zh_TW/agentBots.json
index e10cd4c40..31f558e06 100644
--- a/app/javascript/dashboard/i18n/locale/zh_TW/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/zh_TW/agentBots.json
@@ -63,6 +63,16 @@
"ERROR_MESSAGE": "無法更新機器人,請再試一次。"
}
},
+ "SECRET": {
+ "LABEL": "Webhook Secret",
+ "COPY": "複製密鑰至剪貼簿",
+ "COPY_SUCCESS": "密鑰已複製至剪貼簿",
+ "TOGGLE": "切換密鑰顯示",
+ "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.",
+ "DONE": "完成",
+ "RESET_SUCCESS": "Webhook secret regenerated successfully",
+ "RESET_ERROR": "Unable to regenerate webhook secret. Please try again"
+ },
"ACCESS_TOKEN": {
"TITLE": "存取權杖",
"DESCRIPTION": "複製存取權杖並妥善保管",
diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/automation.json b/app/javascript/dashboard/i18n/locale/zh_TW/automation.json
index 250d2a8d2..e8d691f82 100644
--- a/app/javascript/dashboard/i18n/locale/zh_TW/automation.json
+++ b/app/javascript/dashboard/i18n/locale/zh_TW/automation.json
@@ -140,6 +140,8 @@
"ACTIONS": {
"ASSIGN_AGENT": "指派給客服人員",
"ASSIGN_TEAM": "指派團隊",
+ "REMOVE_ASSIGNED_AGENT": "移除已指派的客服人員",
+ "REMOVE_ASSIGNED_TEAM": "移除已指派的團隊",
"ADD_LABEL": "新增標籤",
"REMOVE_LABEL": "移除標籤",
"SEND_EMAIL_TO_TEAM": "傳送電子郵件給團隊",
@@ -169,6 +171,7 @@
},
"ATTRIBUTES": {
"MESSAGE_TYPE": "訊息類型",
+ "PRIVATE_NOTE": "私人筆記",
"MESSAGE_CONTAINS": "訊息包含",
"EMAIL": "電子郵件",
"INBOX": "收件匣",
diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/components.json b/app/javascript/dashboard/i18n/locale/zh_TW/components.json
index e835209ef..14834a200 100644
--- a/app/javascript/dashboard/i18n/locale/zh_TW/components.json
+++ b/app/javascript/dashboard/i18n/locale/zh_TW/components.json
@@ -52,5 +52,17 @@
},
"CHANNEL_SELECTOR": {
"COMING_SOON": "即將推出!"
+ },
+ "SLASH_COMMANDS": {
+ "HEADING_1": "Heading 1",
+ "HEADING_2": "Heading 2",
+ "HEADING_3": "Heading 3",
+ "BOLD": "Bold",
+ "ITALIC": "Italic",
+ "STRIKETHROUGH": "Strikethrough",
+ "CODE": "Code",
+ "BULLET_LIST": "Bullet List",
+ "ORDERED_LIST": "Ordered List",
+ "TABLE": "Table"
}
}
diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/contact.json b/app/javascript/dashboard/i18n/locale/zh_TW/contact.json
index 3025327fa..72c37c875 100644
--- a/app/javascript/dashboard/i18n/locale/zh_TW/contact.json
+++ b/app/javascript/dashboard/i18n/locale/zh_TW/contact.json
@@ -20,6 +20,7 @@
"CALL": "通話",
"CALL_INITIATED": "正在撥打聯絡人電話…",
"CALL_FAILED": "無法撥打電話,請稍後再試。",
+ "CLICK_TO_EDIT": "點擊以編輯",
"VOICE_INBOX_PICKER": {
"TITLE": "選擇語音收件匣"
},
diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json
index d19bd5a21..fa207e9bb 100644
--- a/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json
@@ -86,6 +86,14 @@
"PLACEHOLDER": "請輸入您的 Webhook URL",
"ERROR": "請輸入有效的 URL"
},
+ "CHANNEL_WEBHOOK_SECRET": {
+ "LABEL": "Webhook 密鑰",
+ "COPY": "複製密鑰至剪貼簿",
+ "COPY_SUCCESS": "密鑰已複製至剪貼簿",
+ "TOGGLE": "切換密鑰顯示",
+ "RESET_SUCCESS": "Webhook 密鑰已成功重新產生",
+ "RESET_ERROR": "無法重新產生 Webhook 密鑰,請再試一次"
+ },
"CHANNEL_DOMAIN": {
"LABEL": "網站網域",
"PLACEHOLDER": "輸入您的網站網域(例:acme.com)"
diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json b/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json
index e6b518be4..b45661d38 100644
--- a/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json
@@ -837,18 +837,24 @@
"SUCCESS_MESSAGE": "自訂工具已成功刪除",
"ERROR_MESSAGE": "刪除自訂工具失敗"
},
+ "PAYWALL": {
+ "TITLE": "升級以在 Captain 中使用工具",
+ "AVAILABLE_ON": "Captain 工具僅適用於 Business 與 Enterprise 方案。請升級至 Business 方案以使用此功能。",
+ "UPGRADE_PROMPT": "",
+ "UPGRADE_NOW": "開啟帳單",
+ "CANCEL_ANYTIME": ""
+ },
+ "ENTERPRISE_PAYWALL": {
+ "AVAILABLE_ON": "Captain 工具僅適用於付費方案。",
+ "UPGRADE_PROMPT": "請升級至付費方案以使用此功能。",
+ "ASK_ADMIN": "請聯繫您的管理員進行升級。"
+ },
"TEST": {
"BUTTON": "測試連接",
"SUCCESS": "端點回傳 HTTP {status}",
"ERROR": "連接失敗",
"DISABLED_HINT": "測試功能僅適用於沒有範本或請求內容的端點。"
},
- "TEST": {
- "BUTTON": "Test connection",
- "SUCCESS": "Endpoint returned HTTP {status}",
- "ERROR": "Connection failed",
- "DISABLED_HINT": "Testing is only available for endpoints without templates or request bodies."
- },
"FORM": {
"TITLE": {
"LABEL": "工具名稱",
diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/macros.json b/app/javascript/dashboard/i18n/locale/zh_TW/macros.json
index 970b746a3..e82569fea 100644
--- a/app/javascript/dashboard/i18n/locale/zh_TW/macros.json
+++ b/app/javascript/dashboard/i18n/locale/zh_TW/macros.json
@@ -93,6 +93,7 @@
"ASSIGN_AGENT": "指派客服人員",
"ADD_LABEL": "新增標籤",
"REMOVE_LABEL": "移除標籤",
+ "REMOVE_ASSIGNED_AGENT": "移除已指派的客服人員",
"REMOVE_ASSIGNED_TEAM": "移除已指派的團隊",
"SEND_EMAIL_TRANSCRIPT": "傳送電子郵件副本",
"MUTE_CONVERSATION": "將對話靜音",
diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/settings.json b/app/javascript/dashboard/i18n/locale/zh_TW/settings.json
index 1a42133b4..dcf3ed6a3 100644
--- a/app/javascript/dashboard/i18n/locale/zh_TW/settings.json
+++ b/app/javascript/dashboard/i18n/locale/zh_TW/settings.json
@@ -68,7 +68,8 @@
"API_SUCCESS": "簽名已成功儲存",
"IMAGE_UPLOAD_ERROR": "無法上傳圖片,請再試一次",
"IMAGE_UPLOAD_SUCCESS": "圖片已成功新增。請點擊儲存以保存簽名",
- "IMAGE_UPLOAD_SIZE_ERROR": "圖片大小須小於 {size}MB"
+ "IMAGE_UPLOAD_SIZE_ERROR": "圖片大小須小於 {size}MB",
+ "INLINE_IMAGE_WARNING": "已移除貼上的內嵌圖片。請使用圖片上傳按鈕將圖片加入您的簽名。"
},
"MESSAGE_SIGNATURE": {
"LABEL": "訊息簽名",
diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/signup.json b/app/javascript/dashboard/i18n/locale/zh_TW/signup.json
index c43c72849..367e23a1b 100644
--- a/app/javascript/dashboard/i18n/locale/zh_TW/signup.json
+++ b/app/javascript/dashboard/i18n/locale/zh_TW/signup.json
@@ -45,6 +45,13 @@
"ERROR_MESSAGE": "無法連接伺服器,請再試一次。"
},
"SUBMIT": "建立帳號",
- "HAVE_AN_ACCOUNT": "已經有帳號了嗎?"
+ "HAVE_AN_ACCOUNT": "已經有帳號了嗎?",
+ "VERIFY_EMAIL": {
+ "TITLE": "請查看您的收件匣",
+ "DESCRIPTION": "我們已將驗證連結寄送至 {email}。請點擊連結驗證您的電子郵件並開始使用。",
+ "RESEND": "重新發送驗證信件",
+ "RESEND_SUCCESS": "驗證電子郵件已送出。請查看您的收件匣。",
+ "RESEND_ERROR": "無法送出驗證電子郵件。請再試一次。"
+ }
}
}
diff --git a/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsBulkActionBar.vue b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsBulkActionBar.vue
index e56a2dda7..d19f84d99 100644
--- a/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsBulkActionBar.vue
+++ b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsBulkActionBar.vue
@@ -66,8 +66,7 @@ const selectionModel = computed({
return;
}
- const shouldSelectAll =
- newSet.size === props.visibleContactIds.length && newSet.size > 0;
+ const shouldSelectAll = props.visibleContactIds.every(id => newSet.has(id));
emit('toggleAll', shouldSelectAll);
},
});
diff --git a/app/javascript/dashboard/routes/dashboard/contacts/pages/ContactsIndex.vue b/app/javascript/dashboard/routes/dashboard/contacts/pages/ContactsIndex.vue
index 357758e01..b072fa67d 100644
--- a/app/javascript/dashboard/routes/dashboard/contacts/pages/ContactsIndex.vue
+++ b/app/javascript/dashboard/routes/dashboard/contacts/pages/ContactsIndex.vue
@@ -151,7 +151,13 @@ const openBulkDeleteDialog = () => {
};
const toggleSelectAll = shouldSelect => {
- selectedContactIds.value = shouldSelect ? [...visibleContactIds.value] : [];
+ const currentSelection = new Set(selectedContactIds.value);
+ if (shouldSelect) {
+ visibleContactIds.value.forEach(id => currentSelection.add(id));
+ } else {
+ visibleContactIds.value.forEach(id => currentSelection.delete(id));
+ }
+ selectedContactIds.value = Array.from(currentSelection);
};
const toggleContactSelection = ({ id, value }) => {
@@ -190,16 +196,28 @@ const getCommonFetchParams = (page = 1) => ({
label: activeLabel.value,
});
-const fetchContacts = async (page = 1) => {
- clearSelection();
+const fetchContacts = async (page = 1, options = {}) => {
+ const { clearSelection: shouldClearSelection = true } = options;
+ if (shouldClearSelection) {
+ clearSelection();
+ }
await store.dispatch('contacts/clearContactFilters');
await store.dispatch('contacts/get', getCommonFetchParams(page));
updatePageParam(page);
};
-const fetchSavedOrAppliedFilteredContact = async (payload, page = 1) => {
+const fetchSavedOrAppliedFilteredContact = async (
+ payload,
+ page = 1,
+ options = {}
+) => {
if (!activeSegmentId.value && !hasAppliedFilters.value) return;
- clearSelection();
+
+ const { clearSelection: shouldClearSelection = true } = options;
+ if (shouldClearSelection) {
+ clearSelection();
+ }
+
await store.dispatch('contacts/filter', {
...getCommonFetchParams(page),
queryPayload: payload,
@@ -207,8 +225,12 @@ const fetchSavedOrAppliedFilteredContact = async (payload, page = 1) => {
updatePageParam(page);
};
-const fetchActiveContacts = async (page = 1) => {
- clearSelection();
+const fetchActiveContacts = async (page = 1, options = {}) => {
+ const { clearSelection: shouldClearSelection = true } = options;
+ if (shouldClearSelection) {
+ clearSelection();
+ }
+
await store.dispatch('contacts/clearContactFilters');
await store.dispatch('contacts/active', {
page,
@@ -217,28 +239,36 @@ const fetchActiveContacts = async (page = 1) => {
updatePageParam(page);
};
-const searchContacts = debounce(async (value, page = 1, append = false) => {
- if (!append) {
- clearSelection();
- searchPageNumber.value = 1;
- }
- await store.dispatch('contacts/clearContactFilters');
- searchValue.value = value;
+const searchContacts = debounce(
+ async (value, page = 1, append = false, options = {}) => {
+ const { clearSelection: shouldClearSelection = true } = options;
- if (!value) {
- updatePageParam(page);
- await fetchContacts(page);
- return;
- }
+ if (!append) {
+ searchPageNumber.value = 1;
- updatePageParam(page, value);
- await store.dispatch('contacts/search', {
- ...getCommonFetchParams(page),
- search: encodeURIComponent(value),
- append,
- });
- searchPageNumber.value = page;
-}, DEBOUNCE_DELAY);
+ if (shouldClearSelection) {
+ clearSelection();
+ }
+ }
+ await store.dispatch('contacts/clearContactFilters');
+ searchValue.value = value;
+
+ if (!value) {
+ updatePageParam(page);
+ await fetchContacts(page, { clearSelection: false });
+ return;
+ }
+
+ updatePageParam(page, value);
+ await store.dispatch('contacts/search', {
+ ...getCommonFetchParams(page),
+ search: encodeURIComponent(value),
+ append,
+ });
+ searchPageNumber.value = page;
+ },
+ DEBOUNCE_DELAY
+);
const loadMoreSearchResults = async () => {
if (!hasMore.value || isLoadingMore.value) return;
@@ -256,19 +286,26 @@ const loadMoreSearchResults = async () => {
isLoadingMore.value = false;
};
-const fetchContactsBasedOnContext = async page => {
- clearSelection();
+const fetchContactsBasedOnContext = async (page, options = {}) => {
+ const { clearSelection: shouldClearSelection = true } = options;
+ if (shouldClearSelection) {
+ clearSelection();
+ }
updatePageParam(page, searchValue.value);
if (isFetchingList.value) return;
if (searchQuery.value) {
- await searchContacts(searchQuery.value, page);
+ await searchContacts(searchQuery.value, page, false, {
+ clearSelection: shouldClearSelection,
+ });
return;
}
// Reset the search value when we change the view
searchValue.value = '';
// If we're on the active route, fetch active contacts
if (isActiveView.value) {
- await fetchActiveContacts(page);
+ await fetchActiveContacts(page, {
+ clearSelection: shouldClearSelection,
+ });
return;
}
// If there are applied filters or active segment with query
@@ -278,13 +315,20 @@ const fetchContactsBasedOnContext = async page => {
) {
const queryPayload =
activeSegment.value?.query || filterQueryGenerator(appliedFilters.value);
- await fetchSavedOrAppliedFilteredContact(queryPayload, page);
+ await fetchSavedOrAppliedFilteredContact(queryPayload, page, {
+ clearSelection: shouldClearSelection,
+ });
return;
}
// Default case: fetch regular contacts + label
- await fetchContacts(page);
+ await fetchContacts(page, {
+ clearSelection: shouldClearSelection,
+ });
};
+const onPageChange = page =>
+ fetchContactsBasedOnContext(page, { clearSelection: false });
+
const assignLabels = async labels => {
if (!labels.length || !selectedContactIds.value.length) {
return;
@@ -338,7 +382,9 @@ const handleSort = async ({ sort, order }) => {
});
if (searchQuery.value) {
- await searchContacts(searchValue.value);
+ await searchContacts(searchValue.value, pageNumber.value, false, {
+ clearSelection: false,
+ });
return;
}
@@ -360,17 +406,6 @@ const createContact = async contact => {
await store.dispatch('contacts/create', contact);
};
-watch(
- contacts,
- newContacts => {
- const idsOnPage = newContacts.map(contact => contact.id);
- selectedContactIds.value = selectedContactIds.value.filter(id =>
- idsOnPage.includes(id)
- );
- },
- { deep: true }
-);
-
watch(hasSelection, value => {
if (!value) {
bulkDeleteDialogRef.value?.close?.();
@@ -416,7 +451,9 @@ watch(searchQuery, value => {
onMounted(async () => {
if (!activeSegmentId.value) {
if (searchQuery.value) {
- await searchContacts(searchQuery.value, pageNumber.value);
+ await searchContacts(searchQuery.value, pageNumber.value, false, {
+ clearSelection: false,
+ });
return;
}
if (isActiveView.value) {
@@ -452,8 +489,10 @@ onMounted(async () => {
:use-infinite-scroll="isSearchView"
:has-more="hasMore"
:is-loading-more="isLoadingMore"
- @update:current-page="fetchContactsBasedOnContext"
- @search="searchContacts"
+ @update:current-page="onPageChange"
+ @search="
+ value => searchContacts(value, 1, false, { clearSelection: false })
+ "
@update:sort="handleSort"
@apply-filter="fetchSavedOrAppliedFilteredContact"
@clear-filters="fetchContacts"
@@ -485,6 +524,7 @@ onMounted(async () => {
:button-label="t('CONTACTS_LAYOUT.EMPTY_STATE.BUTTON_LABEL')"
@create="createContact"
/>
+
{
{{ emptyStateMessage }}
+
{
add_label: resolveLabels(labels.value, params),
remove_label: resolveLabels(labels.value, params),
assign_agent: resolveAgents(agents.value, params),
+ remove_assigned_agent: null,
mute_conversation: null,
snooze_conversation: null,
resolve_conversation: null,
diff --git a/app/javascript/dashboard/routes/dashboard/conversation/contact/ContactInfo.vue b/app/javascript/dashboard/routes/dashboard/conversation/contact/ContactInfo.vue
index 3899d1ddf..2b6001729 100644
--- a/app/javascript/dashboard/routes/dashboard/conversation/contact/ContactInfo.vue
+++ b/app/javascript/dashboard/routes/dashboard/conversation/contact/ContactInfo.vue
@@ -1,6 +1,10 @@
@@ -194,10 +254,26 @@ export default {
+
{{ contact.name }}
+
onFieldUpdate('email', value)"
/>
onFieldUpdate('phone_number', value)"
/>
+ updateContactField({
+ additional_attributes: {
+ ...additionalAttributes,
+ company_name: value,
+ },
+ })
+ "
/>
{
+ this.$refs.editInput?.focus();
+ });
+ },
+ saveEdit() {
+ if (!this.isEditing) return;
+ this.isEditing = false;
+ const trimmed = this.editValue.trim();
+ if (trimmed !== (this.value || '')) {
+ this.$emit('update', trimmed);
+ }
+ },
+ cancelEdit() {
+ this.isEditing = false;
+ },
},
};
-
+
diff --git a/app/javascript/dashboard/routes/dashboard/helpcenter/pages/PortalsArticlesEditPage.vue b/app/javascript/dashboard/routes/dashboard/helpcenter/pages/PortalsArticlesEditPage.vue
index 809fd5d29..36508ded5 100644
--- a/app/javascript/dashboard/routes/dashboard/helpcenter/pages/PortalsArticlesEditPage.vue
+++ b/app/javascript/dashboard/routes/dashboard/helpcenter/pages/PortalsArticlesEditPage.vue
@@ -40,11 +40,10 @@ const articleLink = computed(() => {
);
});
-const saveArticle = async ({ ...values }, isAsync = false) => {
- const actionToDispatch = isAsync ? 'articles/updateAsync' : 'articles/update';
+const saveArticle = async ({ ...values }) => {
isUpdating.value = true;
try {
- await store.dispatch(actionToDispatch, {
+ await store.dispatch('articles/update', {
portalSlug,
articleId: articleSlug,
...values,
@@ -62,10 +61,6 @@ const saveArticle = async ({ ...values }, isAsync = false) => {
}
};
-const saveArticleAsync = async ({ ...values }) => {
- saveArticle({ ...values }, true);
-};
-
const isCategoryArticles = computed(() => {
return (
route.name === 'portals_categories_articles_index' ||
@@ -112,7 +107,6 @@ onMounted(fetchArticleDetails);
:is-updating="isUpdating"
:is-saved="isSaved"
@save-article="saveArticle"
- @save-article-async="saveArticleAsync"
@preview-article="previewArticle"
@go-back="goBackToArticles"
/>
diff --git a/app/javascript/dashboard/routes/dashboard/settings/automation/constants.js b/app/javascript/dashboard/routes/dashboard/settings/automation/constants.js
index 24947c63b..c7f4529b8 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/automation/constants.js
+++ b/app/javascript/dashboard/routes/dashboard/settings/automation/constants.js
@@ -90,6 +90,14 @@ export const AUTOMATIONS = {
key: 'assign_team',
name: 'ASSIGN_TEAM',
},
+ {
+ key: 'remove_assigned_agent',
+ name: 'REMOVE_ASSIGNED_AGENT',
+ },
+ {
+ key: 'remove_assigned_team',
+ name: 'REMOVE_ASSIGNED_TEAM',
+ },
{
key: 'add_label',
name: 'ADD_LABEL',
@@ -218,6 +226,14 @@ export const AUTOMATIONS = {
key: 'assign_team',
name: 'ASSIGN_TEAM',
},
+ {
+ key: 'remove_assigned_agent',
+ name: 'REMOVE_ASSIGNED_AGENT',
+ },
+ {
+ key: 'remove_assigned_team',
+ name: 'REMOVE_ASSIGNED_TEAM',
+ },
{
key: 'assign_agent',
name: 'ASSIGN_AGENT',
@@ -350,6 +366,14 @@ export const AUTOMATIONS = {
key: 'assign_team',
name: 'ASSIGN_TEAM',
},
+ {
+ key: 'remove_assigned_agent',
+ name: 'REMOVE_ASSIGNED_AGENT',
+ },
+ {
+ key: 'remove_assigned_team',
+ name: 'REMOVE_ASSIGNED_TEAM',
+ },
{
key: 'assign_agent',
name: 'ASSIGN_AGENT',
@@ -476,6 +500,14 @@ export const AUTOMATIONS = {
key: 'assign_team',
name: 'ASSIGN_TEAM',
},
+ {
+ key: 'remove_assigned_agent',
+ name: 'REMOVE_ASSIGNED_AGENT',
+ },
+ {
+ key: 'remove_assigned_team',
+ name: 'REMOVE_ASSIGNED_TEAM',
+ },
{
key: 'assign_agent',
name: 'ASSIGN_AGENT',
@@ -592,6 +624,14 @@ export const AUTOMATIONS = {
key: 'assign_team',
name: 'ASSIGN_TEAM',
},
+ {
+ key: 'remove_assigned_agent',
+ name: 'REMOVE_ASSIGNED_AGENT',
+ },
+ {
+ key: 'remove_assigned_team',
+ name: 'REMOVE_ASSIGNED_TEAM',
+ },
{
key: 'send_email_to_team',
name: 'SEND_EMAIL_TO_TEAM',
@@ -650,6 +690,16 @@ export const AUTOMATION_ACTION_TYPES = [
label: 'ASSIGN_TEAM',
inputType: 'search_select',
},
+ {
+ key: 'remove_assigned_agent',
+ label: 'REMOVE_ASSIGNED_AGENT',
+ inputType: null,
+ },
+ {
+ key: 'remove_assigned_team',
+ label: 'REMOVE_ASSIGNED_TEAM',
+ inputType: null,
+ },
{
key: 'add_label',
label: 'ADD_LABEL',
diff --git a/app/javascript/dashboard/routes/dashboard/settings/macros/constants.js b/app/javascript/dashboard/routes/dashboard/settings/macros/constants.js
index e8ee4fdef..8a0088d06 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/macros/constants.js
+++ b/app/javascript/dashboard/routes/dashboard/settings/macros/constants.js
@@ -19,6 +19,11 @@ export const MACRO_ACTION_TYPES = [
label: 'REMOVE_LABEL',
inputType: 'multi_select',
},
+ {
+ key: 'remove_assigned_agent',
+ label: 'REMOVE_ASSIGNED_AGENT',
+ inputType: null,
+ },
{
key: 'remove_assigned_team',
label: 'REMOVE_ASSIGNED_TEAM',
diff --git a/app/javascript/dashboard/routes/dashboard/settings/macros/macroHelper.js b/app/javascript/dashboard/routes/dashboard/settings/macros/macroHelper.js
index 3fc204ac0..c498ac4e3 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/macros/macroHelper.js
+++ b/app/javascript/dashboard/routes/dashboard/settings/macros/macroHelper.js
@@ -17,6 +17,7 @@ export const resolveActionName = key => {
export const resolveTeamIds = (teams, ids) => {
return ids
.map(id => {
+ if (id === 'nil') return 'None';
const team = teams.find(i => i.id === id);
return team ? team.name : '';
})
@@ -35,6 +36,8 @@ export const resolveLabels = (labels, ids) => {
export const resolveAgents = (agents, ids) => {
return ids
.map(id => {
+ if (id === 'nil') return 'None';
+ if (id === 'self') return 'Self';
const agent = agents.find(i => i.id === id);
return agent ? agent.name : '';
})
diff --git a/app/javascript/dashboard/store/modules/contacts/actions.js b/app/javascript/dashboard/store/modules/contacts/actions.js
index d7f87b776..d0029207e 100644
--- a/app/javascript/dashboard/store/modules/contacts/actions.js
+++ b/app/javascript/dashboard/store/modules/contacts/actions.js
@@ -36,7 +36,11 @@ const buildContactFormData = contactParams => {
export const handleContactOperationErrors = error => {
if (error.response?.status === 422) {
- throw new DuplicateContactException(error.response.data.attributes);
+ const exception = new DuplicateContactException(
+ error.response.data.attributes
+ );
+ exception.message = error.response.data.message || exception.message;
+ throw exception;
} else if (error.response?.data?.message) {
throw new ExceptionWithMessage(error.response.data.message);
} else {
diff --git a/app/javascript/dashboard/store/modules/conversations/actions.js b/app/javascript/dashboard/store/modules/conversations/actions.js
index c6a197d85..7ee2561c1 100644
--- a/app/javascript/dashboard/store/modules/conversations/actions.js
+++ b/app/javascript/dashboard/store/modules/conversations/actions.js
@@ -6,6 +6,7 @@ import { createPendingMessage } from 'dashboard/helper/commons';
import {
buildConversationList,
isOnMentionsView,
+ isOnParticipatingView,
isOnUnattendedView,
isOnFoldersView,
} from './helpers/actionHelpers';
@@ -371,6 +372,7 @@ const actions = {
!hasAppliedFilters &&
!isOnFoldersView(rootState) &&
!isOnMentionsView(rootState) &&
+ !isOnParticipatingView(rootState) &&
!isOnUnattendedView(rootState) &&
isMatchingInboxFilter
) {
@@ -395,6 +397,7 @@ const actions = {
const {
meta: { sender },
} = conversation;
+
commit(types.UPDATE_CONVERSATION, conversation);
dispatch('conversationLabels/setConversationLabel', {
diff --git a/app/javascript/dashboard/store/modules/conversations/getters.js b/app/javascript/dashboard/store/modules/conversations/getters.js
index 9f5744fbb..333009707 100644
--- a/app/javascript/dashboard/store/modules/conversations/getters.js
+++ b/app/javascript/dashboard/store/modules/conversations/getters.js
@@ -102,6 +102,19 @@ const getters = {
return isUnAssigned && shouldFilter;
});
},
+ getParticipatingChats: (_state, _, __, rootGetters) => activeFilters => {
+ const currentUserId = rootGetters.getCurrentUser?.id;
+ const getWatchers = rootGetters['conversationWatchers/getByConversationId'];
+ return _state.allConversations.filter(conversation => {
+ const watchers = getWatchers(conversation.id);
+ // Watchers are only loaded for the conversation open in the detail
+ // panel. If loaded and current user is not in them, filter it out.
+ if (watchers && !watchers.some(w => w.id === currentUserId)) {
+ return false;
+ }
+ return applyPageFilters(conversation, activeFilters);
+ });
+ },
getAllStatusChats: (_state, _, __, rootGetters) => activeFilters => {
const currentUser = rootGetters.getCurrentUser;
const currentUserId = rootGetters.getCurrentUser.id;
diff --git a/app/javascript/dashboard/store/modules/conversations/helpers/actionHelpers.js b/app/javascript/dashboard/store/modules/conversations/helpers/actionHelpers.js
index f1c594b26..8c5575c3a 100644
--- a/app/javascript/dashboard/store/modules/conversations/helpers/actionHelpers.js
+++ b/app/javascript/dashboard/store/modules/conversations/helpers/actionHelpers.js
@@ -30,6 +30,14 @@ export const isOnUnattendedView = ({ route: { name: routeName } }) => {
return UNATTENDED_ROUTES.includes(routeName);
};
+export const isOnParticipatingView = ({ route: { name: routeName } }) => {
+ const PARTICIPATING_ROUTES = [
+ 'conversation_participating',
+ 'conversation_through_participating',
+ ];
+ return PARTICIPATING_ROUTES.includes(routeName);
+};
+
export const isOnFoldersView = ({ route: { name: routeName } }) => {
const FOLDER_ROUTES = [
'folder_conversations',
diff --git a/app/javascript/dashboard/store/modules/conversations/helpers/specs/actionHelpers.spec.js b/app/javascript/dashboard/store/modules/conversations/helpers/specs/actionHelpers.spec.js
index 2dcf0b26b..e37a5b225 100644
--- a/app/javascript/dashboard/store/modules/conversations/helpers/specs/actionHelpers.spec.js
+++ b/app/javascript/dashboard/store/modules/conversations/helpers/specs/actionHelpers.spec.js
@@ -1,4 +1,8 @@
-import { isOnMentionsView, isOnFoldersView } from '../actionHelpers';
+import {
+ isOnMentionsView,
+ isOnFoldersView,
+ isOnParticipatingView,
+} from '../actionHelpers';
describe('#isOnMentionsView', () => {
it('return valid responses when passing the state', () => {
@@ -24,3 +28,19 @@ describe('#isOnFoldersView', () => {
);
});
});
+
+describe('#isOnParticipatingView', () => {
+ it('return valid responses when passing the state', () => {
+ expect(
+ isOnParticipatingView({ route: { name: 'conversation_participating' } })
+ ).toBe(true);
+ expect(
+ isOnParticipatingView({
+ route: { name: 'conversation_through_participating' },
+ })
+ ).toBe(true);
+ expect(
+ isOnParticipatingView({ route: { name: 'conversation_messages' } })
+ ).toBe(false);
+ });
+});
diff --git a/app/javascript/dashboard/store/modules/conversations/index.js b/app/javascript/dashboard/store/modules/conversations/index.js
index d7137694e..bffc2204a 100644
--- a/app/javascript/dashboard/store/modules/conversations/index.js
+++ b/app/javascript/dashboard/store/modules/conversations/index.js
@@ -258,7 +258,11 @@ export const mutations = {
emitter.emit(BUS_EVENTS.SCROLL_TO_MESSAGE);
}
} else {
- _state.allConversations.push(conversation);
+ const { conversationType } = _state.conversationFilters || {};
+ const { MENTION, PARTICIPATING } = wootConstants.CONVERSATION_TYPE;
+ if (![MENTION, PARTICIPATING].includes(conversationType)) {
+ _state.allConversations.push(conversation);
+ }
}
},
diff --git a/app/javascript/dashboard/store/modules/helpCenterArticles/actions.js b/app/javascript/dashboard/store/modules/helpCenterArticles/actions.js
index 143192a3c..13a2b4899 100644
--- a/app/javascript/dashboard/store/modules/helpCenterArticles/actions.js
+++ b/app/javascript/dashboard/store/modules/helpCenterArticles/actions.js
@@ -69,30 +69,9 @@ export const actions = {
}
},
- updateAsync: async ({ commit }, { portalSlug, articleId, ...articleObj }) => {
- commit(types.UPDATE_ARTICLE_FLAG, {
- uiFlags: { isUpdating: true },
- articleId,
- });
-
- try {
- await articlesAPI.updateArticle({ portalSlug, articleId, articleObj });
- return articleId;
- } catch (error) {
- return throwErrorMessage(error);
- } finally {
- commit(types.UPDATE_ARTICLE_FLAG, {
- uiFlags: { isUpdating: false },
- articleId,
- });
- }
- },
-
update: async ({ commit }, { portalSlug, articleId, ...articleObj }) => {
commit(types.UPDATE_ARTICLE_FLAG, {
- uiFlags: {
- isUpdating: true,
- },
+ uiFlags: { isUpdating: true },
articleId,
});
@@ -110,9 +89,7 @@ export const actions = {
return throwErrorMessage(error);
} finally {
commit(types.UPDATE_ARTICLE_FLAG, {
- uiFlags: {
- isUpdating: false,
- },
+ uiFlags: { isUpdating: false },
articleId,
});
}
diff --git a/app/javascript/dashboard/store/modules/helpCenterArticles/mutations.js b/app/javascript/dashboard/store/modules/helpCenterArticles/mutations.js
index 7d18d28b0..bf220c2aa 100644
--- a/app/javascript/dashboard/store/modules/helpCenterArticles/mutations.js
+++ b/app/javascript/dashboard/store/modules/helpCenterArticles/mutations.js
@@ -79,14 +79,12 @@ export const mutations = {
[types.UPDATE_ARTICLE]: ($state, updatedArticle) => {
const articleId = updatedArticle.id;
if ($state.articles.byId[articleId]) {
- // Preserve the original position
- const originalPosition = $state.articles.byId[articleId].position;
+ const existing = $state.articles.byId[articleId];
- // Update the article, keeping the original position
- // This is not moved out of the original position when we update the article
$state.articles.byId[articleId] = {
+ ...existing,
...updatedArticle,
- position: originalPosition,
+ position: existing.position,
};
}
},
diff --git a/app/javascript/dashboard/store/modules/specs/conversations/getters.spec.js b/app/javascript/dashboard/store/modules/specs/conversations/getters.spec.js
index 7b6c38456..69bf9c2ac 100644
--- a/app/javascript/dashboard/store/modules/specs/conversations/getters.spec.js
+++ b/app/javascript/dashboard/store/modules/specs/conversations/getters.spec.js
@@ -183,6 +183,73 @@ describe('#getters', () => {
]);
});
});
+ describe('#getParticipatingChats', () => {
+ const conversationList = [
+ { id: 1, inbox_id: 2, status: 1, meta: { assignee: { id: 1 } } },
+ { id: 2, inbox_id: 2, status: 1, meta: {} },
+ { id: 3, inbox_id: 3, status: 1, meta: { assignee: { id: 2 } } },
+ ];
+
+ it('returns all conversations when watchers are not loaded', () => {
+ const state = {
+ allConversations: conversationList,
+ participatingConversationIds: {},
+ };
+ const rootGetters = {
+ getCurrentUser: { id: 1 },
+ 'conversationWatchers/getByConversationId': () => undefined,
+ };
+ const result = getters.getParticipatingChats(
+ state,
+ {},
+ {},
+ rootGetters
+ )({ status: 1 });
+ expect(result).toEqual(conversationList);
+ });
+
+ it('filters out conversation when watchers loaded and user not participating', () => {
+ const state = {
+ allConversations: conversationList,
+ participatingConversationIds: {},
+ };
+ const rootGetters = {
+ getCurrentUser: { id: 1 },
+ 'conversationWatchers/getByConversationId': id => {
+ if (id === 2) return [{ id: 3 }];
+ return undefined;
+ },
+ };
+ const result = getters.getParticipatingChats(
+ state,
+ {},
+ {},
+ rootGetters
+ )({ status: 1 });
+ expect(result).toEqual([conversationList[0], conversationList[2]]);
+ });
+
+ it('keeps conversation when watchers loaded and user is participating', () => {
+ const state = {
+ allConversations: conversationList,
+ participatingConversationIds: {},
+ };
+ const rootGetters = {
+ getCurrentUser: { id: 1 },
+ 'conversationWatchers/getByConversationId': id => {
+ if (id === 1) return [{ id: 1 }, { id: 2 }];
+ return undefined;
+ },
+ };
+ const result = getters.getParticipatingChats(
+ state,
+ {},
+ {},
+ rootGetters
+ )({ status: 1 });
+ expect(result).toEqual(conversationList);
+ });
+ });
describe('#getConversationById', () => {
it('get conversations based on id', () => {
const state = {
diff --git a/app/javascript/dashboard/store/modules/specs/conversations/mutations.spec.js b/app/javascript/dashboard/store/modules/specs/conversations/mutations.spec.js
index bd048dbba..fc1c61b35 100644
--- a/app/javascript/dashboard/store/modules/specs/conversations/mutations.spec.js
+++ b/app/javascript/dashboard/store/modules/specs/conversations/mutations.spec.js
@@ -786,9 +786,55 @@ describe('#mutations', () => {
});
});
- it('should add conversation if not found', () => {
+ it('should add conversation if not found on normal view', () => {
const state = {
allConversations: [],
+ conversationFilters: {},
+ };
+
+ const conversation = {
+ id: 1,
+ status: 'open',
+ };
+
+ mutations[types.UPDATE_CONVERSATION](state, conversation);
+ expect(state.allConversations).toEqual([conversation]);
+ });
+
+ it('should not add conversation if not found on participating view', () => {
+ const state = {
+ allConversations: [],
+ conversationFilters: { conversationType: 'participating' },
+ };
+
+ const conversation = {
+ id: 1,
+ status: 'open',
+ };
+
+ mutations[types.UPDATE_CONVERSATION](state, conversation);
+ expect(state.allConversations).toEqual([]);
+ });
+
+ it('should not add conversation if not found on mention view', () => {
+ const state = {
+ allConversations: [],
+ conversationFilters: { conversationType: 'mention' },
+ };
+
+ const conversation = {
+ id: 1,
+ status: 'open',
+ };
+
+ mutations[types.UPDATE_CONVERSATION](state, conversation);
+ expect(state.allConversations).toEqual([]);
+ });
+
+ it('should add conversation if not found on unattended view', () => {
+ const state = {
+ allConversations: [],
+ conversationFilters: { conversationType: 'unattended' },
};
const conversation = {
diff --git a/app/javascript/shared/helpers/CustomErrors.js b/app/javascript/shared/helpers/CustomErrors.js
index 4f31eb291..ef5947189 100644
--- a/app/javascript/shared/helpers/CustomErrors.js
+++ b/app/javascript/shared/helpers/CustomErrors.js
@@ -1,10 +1,19 @@
/* eslint-disable max-classes-per-file */
export class DuplicateContactException extends Error {
+ static DEFAULT_MESSAGE = 'DUPLICATE_CONTACT';
+
constructor(data) {
- super('DUPLICATE_CONTACT');
+ super(DuplicateContactException.DEFAULT_MESSAGE);
this.data = data;
this.name = 'DuplicateContactException';
}
+
+ /** Server or client may assign `message` after construction; otherwise still DEFAULT_MESSAGE. */
+ get contactErrorDetail() {
+ return this.message === DuplicateContactException.DEFAULT_MESSAGE
+ ? null
+ : this.message;
+ }
}
export class ExceptionWithMessage extends Error {
constructor(data) {
diff --git a/app/models/automation_rule.rb b/app/models/automation_rule.rb
index 3ab23530d..ceac24dfb 100644
--- a/app/models/automation_rule.rb
+++ b/app/models/automation_rule.rb
@@ -40,9 +40,10 @@ class AutomationRule < ApplicationRecord
end
def actions_attributes
- %w[send_message add_label remove_label send_email_to_team assign_team assign_agent send_webhook_event mute_conversation
- send_attachment change_status resolve_conversation open_conversation pending_conversation snooze_conversation change_priority
- send_email_transcript add_private_note].freeze
+ %w[send_message add_label remove_label send_email_to_team assign_team assign_agent remove_assigned_agent
+ remove_assigned_team send_webhook_event mute_conversation send_attachment change_status resolve_conversation
+ open_conversation pending_conversation snooze_conversation change_priority send_email_transcript
+ add_private_note].freeze
end
def file_base_data
diff --git a/app/models/concerns/push_data_helper.rb b/app/models/concerns/push_data_helper.rb
index 47a1e4e84..3bd35f1fe 100644
--- a/app/models/concerns/push_data_helper.rb
+++ b/app/models/concerns/push_data_helper.rb
@@ -10,6 +10,6 @@ module PushDataHelper
end
def webhook_data
- Conversations::EventDataPresenter.new(self).push_data
+ Conversations::EventDataPresenter.new(self).webhook_data
end
end
diff --git a/app/models/macro.rb b/app/models/macro.rb
index 1fe8192dc..fc25beeac 100644
--- a/app/models/macro.rb
+++ b/app/models/macro.rb
@@ -30,9 +30,9 @@ class Macro < ApplicationRecord
validate :json_actions_format
- ACTIONS_ATTRS = %w[send_message add_label assign_team assign_agent mute_conversation change_status remove_label remove_assigned_team
- resolve_conversation snooze_conversation change_priority send_email_transcript send_attachment
- add_private_note send_webhook_event].freeze
+ ACTIONS_ATTRS = %w[send_message add_label assign_team assign_agent mute_conversation change_status remove_label remove_assigned_agent
+ remove_assigned_team resolve_conversation snooze_conversation change_priority send_email_transcript
+ send_attachment add_private_note send_webhook_event].freeze
def set_visibility(user, params)
self.visibility = params[:visibility]
diff --git a/app/models/message.rb b/app/models/message.rb
index ccbb250c3..f25d2e112 100644
--- a/app/models/message.rb
+++ b/app/models/message.rb
@@ -170,6 +170,13 @@ class Message < ApplicationRecord
data
end
+ def webhook_push_event_data
+ push_event_data.merge(
+ content: Messages::WebhookContentNormalizer.normalize(content),
+ processed_message_content: Messages::WebhookContentNormalizer.normalize(processed_message_content)
+ )
+ end
+
def webhook_data
data = {
account: account.webhook_data,
diff --git a/app/presenters/conversations/event_data_presenter.rb b/app/presenters/conversations/event_data_presenter.rb
index 0c04455a1..ae0e69608 100644
--- a/app/presenters/conversations/event_data_presenter.rb
+++ b/app/presenters/conversations/event_data_presenter.rb
@@ -21,12 +21,21 @@ class Conversations::EventDataPresenter < SimpleDelegator
}
end
+ # Like #push_data but with message text normalized for external integrations (webhooks).
+ def webhook_data
+ push_data.merge(messages: webhook_push_messages)
+ end
+
private
def push_messages
[messages.where(account_id: account_id).chat.last&.push_event_data].compact
end
+ def webhook_push_messages
+ [messages.where(account_id: account_id).chat.last&.webhook_push_event_data].compact
+ end
+
def push_meta
{
sender: contact.push_event_data,
diff --git a/app/presenters/message_content_presenter.rb b/app/presenters/message_content_presenter.rb
index 3832e6a10..75ed34854 100644
--- a/app/presenters/message_content_presenter.rb
+++ b/app/presenters/message_content_presenter.rb
@@ -8,7 +8,7 @@ class MessageContentPresenter < SimpleDelegator
end
def webhook_content
- content_with_survey_link
+ Messages::WebhookContentNormalizer.normalize(content_with_survey_link)
end
private
diff --git a/app/services/action_service.rb b/app/services/action_service.rb
index 86e2810cf..27f513f24 100644
--- a/app/services/action_service.rb
+++ b/app/services/action_service.rb
@@ -43,10 +43,10 @@ class ActionService
def assign_agent(agent_ids = [])
return @conversation.update!(assignee_id: nil) if agent_ids[0] == 'nil'
+ agent_ids = [last_responding_agent_id] if agent_ids[0] == 'last_responding_agent'
return unless agent_belongs_to_inbox?(agent_ids)
@agent = @account.users.find_by(id: agent_ids)
-
return unless @agent.present? && @agent.confirmed?
@conversation.update!(assignee_id: @agent.id)
@@ -60,8 +60,7 @@ class ActionService
end
def assign_team(team_ids = [])
- # FIXME: The explicit checks for zero or nil (string) is bad. Move
- # this to a separate unassign action.
+ # Keep nil/0 handling for existing automation and macro payloads.
should_unassign = team_ids.blank? || %w[nil 0].include?(team_ids[0].to_s)
return @conversation.update!(team_id: nil) if should_unassign
@@ -72,6 +71,10 @@ class ActionService
@conversation.update!(team_id: team_ids[0])
end
+ def remove_assigned_agent(_params)
+ @conversation.update!(assignee_id: nil)
+ end
+
def remove_assigned_team(_params)
@conversation.update!(team_id: nil)
end
@@ -92,6 +95,10 @@ class ActionService
private
+ def last_responding_agent_id
+ @conversation.messages.outgoing.where(sender_type: 'User', private: false).last&.sender_id
+ end
+
def agent_belongs_to_inbox?(agent_ids)
member_ids = @conversation.inbox.members.pluck(:user_id)
assignable_agent_ids = member_ids + @account.administrators.ids
diff --git a/app/services/messages/webhook_content_normalizer.rb b/app/services/messages/webhook_content_normalizer.rb
new file mode 100644
index 000000000..b45f83ad0
--- /dev/null
+++ b/app/services/messages/webhook_content_normalizer.rb
@@ -0,0 +1,10 @@
+# Strips CommonMark hard line breaks from stored markdown source (backslash before newline).
+# ProseMirror / the dashboard editor emits this form so soft breaks survive as markdown;
+# webhook consumers expect plain newlines without a visible backslash (e.g. WhatsApp gateways).
+class Messages::WebhookContentNormalizer
+ def self.normalize(text)
+ return text if text.blank?
+
+ text.gsub(/\\\r?\n/, "\n")
+ end
+end
diff --git a/app/services/whatsapp/incoming_message_base_service.rb b/app/services/whatsapp/incoming_message_base_service.rb
index a8ad176b6..5449c4740 100644
--- a/app/services/whatsapp/incoming_message_base_service.rb
+++ b/app/services/whatsapp/incoming_message_base_service.rb
@@ -37,6 +37,7 @@ class Whatsapp::IncomingMessageBaseService
set_contact
return unless @contact
+ return if @contact.blocked? && !outgoing_echo
ActiveRecord::Base.transaction do
set_conversation
diff --git a/app/views/public/api/v1/portals/articles/show.html.erb b/app/views/public/api/v1/portals/articles/show.html.erb
index 5ca116f89..784817c9c 100644
--- a/app/views/public/api/v1/portals/articles/show.html.erb
+++ b/app/views/public/api/v1/portals/articles/show.html.erb
@@ -36,7 +36,7 @@
<% end %>
-
+
<%= @parsed_content %>
@@ -45,4 +45,41 @@
.article-content li > p {
margin: 0;
}
+ .article-content .tableWrapper {
+ overflow-x: auto;
+ margin-bottom: 1rem;
+ }
+ .article-content table {
+ min-width: 100%;
+ border: 1px solid;
+ border-radius: 8px;
+ border-spacing: 0;
+ border-collapse: separate;
+ margin: 0;
+ }
+ .article-content th,
+ .article-content td {
+ border-bottom: 1px solid;
+ border-inline-end: 1px solid;
+ border-color: inherit;
+ padding: 0.5rem 0.75rem;
+ text-align: start;
+ vertical-align: top;
+ }
+ .article-content th:last-child,
+ .article-content td:last-child {
+ border-inline-end: none;
+ }
+ .article-content th {
+ font-weight: 600;
+ }
+ .article-content th:first-child {
+ border-start-start-radius: 7px;
+ }
+ .article-content th:last-child {
+ border-start-end-radius: 7px;
+ }
+ .article-content tr:last-child td {
+ border-bottom: none;
+ }
diff --git a/config/app.yml b/config/app.yml
index 8926a53ad..5adfc1486 100644
--- a/config/app.yml
+++ b/config/app.yml
@@ -1,5 +1,5 @@
shared: &shared
- version: '4.12.1'
+ version: '4.13.0'
development:
<<: *shared
diff --git a/config/llm_models.json b/config/llm_models.json
new file mode 100644
index 000000000..e2fe0e938
--- /dev/null
+++ b/config/llm_models.json
@@ -0,0 +1,24264 @@
+[
+ {
+ "id": "claude-3-5-haiku-20241022",
+ "name": "Claude Haiku 3.5",
+ "provider": "anthropic",
+ "family": "claude-haiku",
+ "created_at": "2024-10-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": "2024-07-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.8,
+ "output_per_million": 4,
+ "cached_input_per_million": 0.08
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-10-22",
+ "cost": {
+ "input": 0.8,
+ "output": 4,
+ "cache_read": 0.08,
+ "cache_write": 1
+ },
+ "limit": {
+ "context": 200000,
+ "output": 8192
+ },
+ "knowledge": "2024-07-31"
+ }
+ },
+ {
+ "id": "claude-3-5-haiku-latest",
+ "name": "Claude Haiku 3.5 (latest)",
+ "provider": "anthropic",
+ "family": "claude-haiku",
+ "created_at": "2024-10-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": "2024-07-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.8,
+ "output_per_million": 4,
+ "cached_input_per_million": 0.08
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-10-22",
+ "cost": {
+ "input": 0.8,
+ "output": 4,
+ "cache_read": 0.08,
+ "cache_write": 1
+ },
+ "limit": {
+ "context": 200000,
+ "output": 8192
+ },
+ "knowledge": "2024-07-31"
+ }
+ },
+ {
+ "id": "claude-3-5-sonnet-20240620",
+ "name": "Claude Sonnet 3.5",
+ "provider": "anthropic",
+ "family": "claude-sonnet",
+ "created_at": "2024-06-20 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": "2024-04-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-06-20",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 8192
+ },
+ "knowledge": "2024-04-30"
+ }
+ },
+ {
+ "id": "claude-3-5-sonnet-20241022",
+ "name": "Claude Sonnet 3.5 v2",
+ "provider": "anthropic",
+ "family": "claude-sonnet",
+ "created_at": "2024-10-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": "2024-04-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-10-22",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 8192
+ },
+ "knowledge": "2024-04-30"
+ }
+ },
+ {
+ "id": "claude-3-7-sonnet-20250219",
+ "name": "Claude Sonnet 3.7",
+ "provider": "anthropic",
+ "family": "claude-sonnet",
+ "created_at": "2025-02-19 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2024-10-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-02-19",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2024-10-31"
+ }
+ },
+ {
+ "id": "claude-3-haiku-20240307",
+ "name": "Claude Haiku 3",
+ "provider": "anthropic",
+ "family": "claude-haiku",
+ "created_at": "2024-03-13 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": "2023-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.25,
+ "output_per_million": 1.25,
+ "cached_input_per_million": 0.03
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-03-13",
+ "cost": {
+ "input": 0.25,
+ "output": 1.25,
+ "cache_read": 0.03,
+ "cache_write": 0.3
+ },
+ "limit": {
+ "context": 200000,
+ "output": 4096
+ },
+ "knowledge": "2023-08-31"
+ }
+ },
+ {
+ "id": "claude-3-opus-20240229",
+ "name": "Claude Opus 3",
+ "provider": "anthropic",
+ "family": "claude-opus",
+ "created_at": "2024-02-29 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": "2023-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 75,
+ "cached_input_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-02-29",
+ "cost": {
+ "input": 15,
+ "output": 75,
+ "cache_read": 1.5,
+ "cache_write": 18.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 4096
+ },
+ "knowledge": "2023-08-31"
+ }
+ },
+ {
+ "id": "claude-3-sonnet-20240229",
+ "name": "Claude Sonnet 3",
+ "provider": "anthropic",
+ "family": "claude-sonnet",
+ "created_at": "2024-03-04 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": "2023-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-03-04",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 0.3
+ },
+ "limit": {
+ "context": 200000,
+ "output": 4096
+ },
+ "knowledge": "2023-08-31"
+ }
+ },
+ {
+ "id": "claude-haiku-4-5",
+ "name": "Claude Haiku 4.5 (latest)",
+ "provider": "anthropic",
+ "family": "claude-haiku",
+ "created_at": "2025-10-15 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-02-28",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1,
+ "output_per_million": 5,
+ "cached_input_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-10-15",
+ "cost": {
+ "input": 1,
+ "output": 5,
+ "cache_read": 0.1,
+ "cache_write": 1.25
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-02-28"
+ }
+ },
+ {
+ "id": "claude-haiku-4-5-20251001",
+ "name": "Claude Haiku 4.5",
+ "provider": "anthropic",
+ "family": "claude-haiku",
+ "created_at": "2025-10-15 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-02-28",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1,
+ "output_per_million": 5,
+ "cached_input_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-10-15",
+ "cost": {
+ "input": 1,
+ "output": 5,
+ "cache_read": 0.1,
+ "cache_write": 1.25
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-02-28"
+ }
+ },
+ {
+ "id": "claude-opus-4-0",
+ "name": "Claude Opus 4 (latest)",
+ "provider": "anthropic",
+ "family": "claude-opus",
+ "created_at": "2025-05-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 32000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 75,
+ "cached_input_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-22",
+ "cost": {
+ "input": 15,
+ "output": 75,
+ "cache_read": 1.5,
+ "cache_write": 18.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 32000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "claude-opus-4-1",
+ "name": "Claude Opus 4.1 (latest)",
+ "provider": "anthropic",
+ "family": "claude-opus",
+ "created_at": "2025-08-05 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 32000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 75,
+ "cached_input_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-05",
+ "cost": {
+ "input": 15,
+ "output": 75,
+ "cache_read": 1.5,
+ "cache_write": 18.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 32000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "claude-opus-4-1-20250805",
+ "name": "Claude Opus 4.1",
+ "provider": "anthropic",
+ "family": "claude-opus",
+ "created_at": "2025-08-05 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 32000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 75,
+ "cached_input_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-05",
+ "cost": {
+ "input": 15,
+ "output": 75,
+ "cache_read": 1.5,
+ "cache_write": 18.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 32000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "claude-opus-4-20250514",
+ "name": "Claude Opus 4",
+ "provider": "anthropic",
+ "family": "claude-opus",
+ "created_at": "2025-05-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 32000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 75,
+ "cached_input_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-22",
+ "cost": {
+ "input": 15,
+ "output": 75,
+ "cache_read": 1.5,
+ "cache_write": 18.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 32000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "claude-opus-4-5",
+ "name": "Claude Opus 4.5 (latest)",
+ "provider": "anthropic",
+ "family": "claude-opus",
+ "created_at": "2025-11-24 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5,
+ "output_per_million": 25,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-11-24",
+ "cost": {
+ "input": 5,
+ "output": 25,
+ "cache_read": 0.5,
+ "cache_write": 6.25
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "claude-opus-4-5-20251101",
+ "name": "Claude Opus 4.5",
+ "provider": "anthropic",
+ "family": "claude-opus",
+ "created_at": "2025-11-01 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5,
+ "output_per_million": 25,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-11-01",
+ "cost": {
+ "input": 5,
+ "output": 25,
+ "cache_read": 0.5,
+ "cache_write": 6.25
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "claude-opus-4-6",
+ "name": "Claude Opus 4.6",
+ "provider": "anthropic",
+ "family": "claude-opus",
+ "created_at": "2026-02-05 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5,
+ "output_per_million": 25,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-13",
+ "cost": {
+ "input": 5,
+ "output": 25,
+ "cache_read": 0.5,
+ "cache_write": 6.25
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 128000
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "claude-sonnet-4-0",
+ "name": "Claude Sonnet 4 (latest)",
+ "provider": "anthropic",
+ "family": "claude-sonnet",
+ "created_at": "2025-05-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-22",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "claude-sonnet-4-20250514",
+ "name": "Claude Sonnet 4",
+ "provider": "anthropic",
+ "family": "claude-sonnet",
+ "created_at": "2025-05-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-22",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "claude-sonnet-4-5",
+ "name": "Claude Sonnet 4.5 (latest)",
+ "provider": "anthropic",
+ "family": "claude-sonnet",
+ "created_at": "2025-09-29 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-07-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-29",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-07-31"
+ }
+ },
+ {
+ "id": "claude-sonnet-4-5-20250929",
+ "name": "Claude Sonnet 4.5",
+ "provider": "anthropic",
+ "family": "claude-sonnet",
+ "created_at": "2025-09-29 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-07-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-29",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-07-31"
+ }
+ },
+ {
+ "id": "claude-sonnet-4-6",
+ "name": "Claude Sonnet 4.6",
+ "provider": "anthropic",
+ "family": "claude-sonnet",
+ "created_at": "2026-02-17 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "anthropic",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-13",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 64000
+ },
+ "knowledge": "2025-08"
+ }
+ },
+ {
+ "id": "amazon.nova-2-lite-v1:0",
+ "name": "Nova 2 Lite",
+ "provider": "bedrock",
+ "family": "nova",
+ "created_at": "2024-12-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.33,
+ "output_per_million": 2.75
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-12-01",
+ "cost": {
+ "input": 0.33,
+ "output": 2.75
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ }
+ }
+ },
+ {
+ "id": "amazon.nova-lite-v1:0",
+ "name": "Nova Lite",
+ "provider": "bedrock",
+ "family": "nova-lite",
+ "created_at": "2024-12-03 00:00:00 +0530",
+ "context_window": 300000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.06,
+ "output_per_million": 0.24,
+ "cached_input_per_million": 0.015
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-12-03",
+ "cost": {
+ "input": 0.06,
+ "output": 0.24,
+ "cache_read": 0.015
+ },
+ "limit": {
+ "context": 300000,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "amazon.nova-micro-v1:0",
+ "name": "Nova Micro",
+ "provider": "bedrock",
+ "family": "nova-micro",
+ "created_at": "2024-12-03 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.035,
+ "output_per_million": 0.14,
+ "cached_input_per_million": 0.00875
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-12-03",
+ "cost": {
+ "input": 0.035,
+ "output": 0.14,
+ "cache_read": 0.00875
+ },
+ "limit": {
+ "context": 128000,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "amazon.nova-premier-v1:0",
+ "name": "Nova Premier",
+ "provider": "bedrock",
+ "family": "nova",
+ "created_at": "2024-12-03 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.5,
+ "output_per_million": 12.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-12-03",
+ "cost": {
+ "input": 2.5,
+ "output": 12.5
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 16384
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "amazon.nova-pro-v1:0",
+ "name": "Nova Pro",
+ "provider": "bedrock",
+ "family": "nova-pro",
+ "created_at": "2024-12-03 00:00:00 +0530",
+ "context_window": 300000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.8,
+ "output_per_million": 3.2,
+ "cached_input_per_million": 0.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-12-03",
+ "cost": {
+ "input": 0.8,
+ "output": 3.2,
+ "cache_read": 0.2
+ },
+ "limit": {
+ "context": 300000,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "anthropic.claude-3-5-haiku-20241022-v1:0",
+ "name": "Claude Haiku 3.5",
+ "provider": "bedrock",
+ "family": "claude-haiku",
+ "created_at": "2024-10-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.8,
+ "output_per_million": 4,
+ "cached_input_per_million": 0.08
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-10-22",
+ "cost": {
+ "input": 0.8,
+ "output": 4,
+ "cache_read": 0.08,
+ "cache_write": 1
+ },
+ "limit": {
+ "context": 200000,
+ "output": 8192
+ },
+ "knowledge": "2024-07"
+ }
+ },
+ {
+ "id": "anthropic.claude-3-5-sonnet-20240620-v1:0",
+ "name": "Claude Sonnet 3.5",
+ "provider": "bedrock",
+ "family": "claude-sonnet",
+ "created_at": "2024-06-20 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-06-20",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 8192
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "anthropic.claude-3-5-sonnet-20241022-v2:0",
+ "name": "Claude Sonnet 3.5 v2",
+ "provider": "bedrock",
+ "family": "claude-sonnet",
+ "created_at": "2024-10-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-10-22",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 8192
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "anthropic.claude-3-7-sonnet-20250219-v1:0",
+ "name": "Claude Sonnet 3.7",
+ "provider": "bedrock",
+ "family": "claude-sonnet",
+ "created_at": "2025-02-19 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-02-19",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 8192
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "anthropic.claude-3-haiku-20240307-v1:0",
+ "name": "Claude Haiku 3",
+ "provider": "bedrock",
+ "family": "claude-haiku",
+ "created_at": "2024-03-13 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.25,
+ "output_per_million": 1.25
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-03-13",
+ "cost": {
+ "input": 0.25,
+ "output": 1.25
+ },
+ "limit": {
+ "context": 200000,
+ "output": 4096
+ },
+ "knowledge": "2024-02"
+ }
+ },
+ {
+ "id": "anthropic.claude-haiku-4-5-20251001-v1:0",
+ "name": "Claude Haiku 4.5",
+ "provider": "bedrock",
+ "family": "claude-haiku",
+ "created_at": "2025-10-15 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-02-28",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1,
+ "output_per_million": 5,
+ "cached_input_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-10-15",
+ "cost": {
+ "input": 1,
+ "output": 5,
+ "cache_read": 0.1,
+ "cache_write": 1.25
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-02-28"
+ }
+ },
+ {
+ "id": "anthropic.claude-opus-4-1-20250805-v1:0",
+ "name": "Claude Opus 4.1",
+ "provider": "bedrock",
+ "family": "claude-opus",
+ "created_at": "2025-08-05 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 32000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 75,
+ "cached_input_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-05",
+ "cost": {
+ "input": 15,
+ "output": 75,
+ "cache_read": 1.5,
+ "cache_write": 18.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 32000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "anthropic.claude-opus-4-20250514-v1:0",
+ "name": "Claude Opus 4",
+ "provider": "bedrock",
+ "family": "claude-opus",
+ "created_at": "2025-05-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 32000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 75,
+ "cached_input_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-22",
+ "cost": {
+ "input": 15,
+ "output": 75,
+ "cache_read": 1.5,
+ "cache_write": 18.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 32000
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "anthropic.claude-opus-4-5-20251101-v1:0",
+ "name": "Claude Opus 4.5",
+ "provider": "bedrock",
+ "family": "claude-opus",
+ "created_at": "2025-11-24 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5,
+ "output_per_million": 25,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-01",
+ "cost": {
+ "input": 5,
+ "output": 25,
+ "cache_read": 0.5,
+ "cache_write": 6.25
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "anthropic.claude-opus-4-6-v1",
+ "name": "Claude Opus 4.6",
+ "provider": "bedrock",
+ "family": "claude-opus",
+ "created_at": "2026-02-05 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5,
+ "output_per_million": 25,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-18",
+ "cost": {
+ "input": 5,
+ "output": 25,
+ "cache_read": 0.5,
+ "cache_write": 6.25
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 128000
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "anthropic.claude-sonnet-4-20250514-v1:0",
+ "name": "Claude Sonnet 4",
+ "provider": "bedrock",
+ "family": "claude-sonnet",
+ "created_at": "2025-05-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-22",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "anthropic.claude-sonnet-4-5-20250929-v1:0",
+ "name": "Claude Sonnet 4.5",
+ "provider": "bedrock",
+ "family": "claude-sonnet",
+ "created_at": "2025-09-29 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-07-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-29",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-07-31"
+ }
+ },
+ {
+ "id": "anthropic.claude-sonnet-4-6",
+ "name": "Claude Sonnet 4.6",
+ "provider": "bedrock",
+ "family": "claude-sonnet",
+ "created_at": "2026-02-17 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-18",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 64000
+ },
+ "knowledge": "2025-08"
+ }
+ },
+ {
+ "id": "deepseek.r1-v1:0",
+ "name": "DeepSeek-R1",
+ "provider": "bedrock",
+ "family": "deepseek-thinking",
+ "created_at": "2025-01-20 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.35,
+ "output_per_million": 5.4
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-05-29",
+ "cost": {
+ "input": 1.35,
+ "output": 5.4
+ },
+ "limit": {
+ "context": 128000,
+ "output": 32768
+ },
+ "knowledge": "2024-07"
+ }
+ },
+ {
+ "id": "deepseek.v3-v1:0",
+ "name": "DeepSeek-V3.1",
+ "provider": "bedrock",
+ "family": "deepseek",
+ "created_at": "2025-09-18 00:00:00 +0530",
+ "context_window": 163840,
+ "max_output_tokens": 81920,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.58,
+ "output_per_million": 1.68
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-18",
+ "cost": {
+ "input": 0.58,
+ "output": 1.68
+ },
+ "limit": {
+ "context": 163840,
+ "output": 81920
+ },
+ "knowledge": "2024-07"
+ }
+ },
+ {
+ "id": "deepseek.v3.2",
+ "name": "DeepSeek-V3.2",
+ "provider": "bedrock",
+ "family": "deepseek",
+ "created_at": "2026-02-06 00:00:00 +0530",
+ "context_window": 163840,
+ "max_output_tokens": 81920,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.62,
+ "output_per_million": 1.85
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-02-06",
+ "cost": {
+ "input": 0.62,
+ "output": 1.85
+ },
+ "limit": {
+ "context": 163840,
+ "output": 81920
+ },
+ "knowledge": "2024-07"
+ }
+ },
+ {
+ "id": "eu.anthropic.claude-haiku-4-5-20251001-v1:0",
+ "name": "Claude Haiku 4.5 (EU)",
+ "provider": "bedrock",
+ "family": "claude-haiku",
+ "created_at": "2025-10-15 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-02-28",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1,
+ "output_per_million": 5,
+ "cached_input_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-10-15",
+ "cost": {
+ "input": 1,
+ "output": 5,
+ "cache_read": 0.1,
+ "cache_write": 1.25
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-02-28"
+ }
+ },
+ {
+ "id": "eu.anthropic.claude-opus-4-5-20251101-v1:0",
+ "name": "Claude Opus 4.5 (EU)",
+ "provider": "bedrock",
+ "family": "claude-opus",
+ "created_at": "2025-11-24 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5,
+ "output_per_million": 25,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-01",
+ "cost": {
+ "input": 5,
+ "output": 25,
+ "cache_read": 0.5,
+ "cache_write": 6.25
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "eu.anthropic.claude-opus-4-6-v1",
+ "name": "Claude Opus 4.6 (EU)",
+ "provider": "bedrock",
+ "family": "claude-opus",
+ "created_at": "2026-02-05 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5,
+ "output_per_million": 25,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-18",
+ "cost": {
+ "input": 5,
+ "output": 25,
+ "cache_read": 0.5,
+ "cache_write": 6.25
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 128000
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "eu.anthropic.claude-sonnet-4-20250514-v1:0",
+ "name": "Claude Sonnet 4 (EU)",
+ "provider": "bedrock",
+ "family": "claude-sonnet",
+ "created_at": "2025-05-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-22",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "eu.anthropic.claude-sonnet-4-5-20250929-v1:0",
+ "name": "Claude Sonnet 4.5 (EU)",
+ "provider": "bedrock",
+ "family": "claude-sonnet",
+ "created_at": "2025-09-29 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-07-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-29",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-07-31"
+ }
+ },
+ {
+ "id": "eu.anthropic.claude-sonnet-4-6",
+ "name": "Claude Sonnet 4.6 (EU)",
+ "provider": "bedrock",
+ "family": "claude-sonnet",
+ "created_at": "2026-02-17 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-18",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 64000
+ },
+ "knowledge": "2025-08"
+ }
+ },
+ {
+ "id": "global.anthropic.claude-haiku-4-5-20251001-v1:0",
+ "name": "Claude Haiku 4.5 (Global)",
+ "provider": "bedrock",
+ "family": "claude-haiku",
+ "created_at": "2025-10-15 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-02-28",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1,
+ "output_per_million": 5,
+ "cached_input_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-10-15",
+ "cost": {
+ "input": 1,
+ "output": 5,
+ "cache_read": 0.1,
+ "cache_write": 1.25
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-02-28"
+ }
+ },
+ {
+ "id": "global.anthropic.claude-opus-4-5-20251101-v1:0",
+ "name": "Claude Opus 4.5 (Global)",
+ "provider": "bedrock",
+ "family": "claude-opus",
+ "created_at": "2025-11-24 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5,
+ "output_per_million": 25,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-01",
+ "cost": {
+ "input": 5,
+ "output": 25,
+ "cache_read": 0.5,
+ "cache_write": 6.25
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "global.anthropic.claude-opus-4-6-v1",
+ "name": "Claude Opus 4.6 (Global)",
+ "provider": "bedrock",
+ "family": "claude-opus",
+ "created_at": "2026-02-05 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5,
+ "output_per_million": 25,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-18",
+ "cost": {
+ "input": 5,
+ "output": 25,
+ "cache_read": 0.5,
+ "cache_write": 6.25
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 128000
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "global.anthropic.claude-sonnet-4-20250514-v1:0",
+ "name": "Claude Sonnet 4 (Global)",
+ "provider": "bedrock",
+ "family": "claude-sonnet",
+ "created_at": "2025-05-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-22",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "global.anthropic.claude-sonnet-4-5-20250929-v1:0",
+ "name": "Claude Sonnet 4.5 (Global)",
+ "provider": "bedrock",
+ "family": "claude-sonnet",
+ "created_at": "2025-09-29 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-07-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-29",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-07-31"
+ }
+ },
+ {
+ "id": "global.anthropic.claude-sonnet-4-6",
+ "name": "Claude Sonnet 4.6 (Global)",
+ "provider": "bedrock",
+ "family": "claude-sonnet",
+ "created_at": "2026-02-17 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-18",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 64000
+ },
+ "knowledge": "2025-08"
+ }
+ },
+ {
+ "id": "google.gemma-3-12b-it",
+ "name": "Google Gemma 3 12B",
+ "provider": "bedrock",
+ "family": "gemma",
+ "created_at": "2024-12-01 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.049999999999999996,
+ "output_per_million": 0.09999999999999999
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-12-01",
+ "cost": {
+ "input": 0.049999999999999996,
+ "output": 0.09999999999999999
+ },
+ "limit": {
+ "context": 131072,
+ "output": 8192
+ },
+ "knowledge": "2024-12"
+ }
+ },
+ {
+ "id": "google.gemma-3-27b-it",
+ "name": "Google Gemma 3 27B Instruct",
+ "provider": "bedrock",
+ "family": "gemma",
+ "created_at": "2025-07-27 00:00:00 +0530",
+ "context_window": 202752,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.12,
+ "output_per_million": 0.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-07-27",
+ "cost": {
+ "input": 0.12,
+ "output": 0.2
+ },
+ "limit": {
+ "context": 202752,
+ "output": 8192
+ },
+ "knowledge": "2025-07"
+ }
+ },
+ {
+ "id": "google.gemma-3-4b-it",
+ "name": "Gemma 3 4B IT",
+ "provider": "bedrock",
+ "family": "gemma",
+ "created_at": "2024-12-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.04,
+ "output_per_million": 0.08
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-12-01",
+ "cost": {
+ "input": 0.04,
+ "output": 0.08
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ }
+ }
+ },
+ {
+ "id": "meta.llama3-1-405b-instruct-v1:0",
+ "name": "Llama 3.1 405B Instruct",
+ "provider": "bedrock",
+ "family": "llama",
+ "created_at": "2024-07-23 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.4,
+ "output_per_million": 2.4
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-07-23",
+ "cost": {
+ "input": 2.4,
+ "output": 2.4
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "meta.llama3-1-70b-instruct-v1:0",
+ "name": "Llama 3.1 70B Instruct",
+ "provider": "bedrock",
+ "family": "llama",
+ "created_at": "2024-07-23 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.72,
+ "output_per_million": 0.72
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-07-23",
+ "cost": {
+ "input": 0.72,
+ "output": 0.72
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "meta.llama3-1-8b-instruct-v1:0",
+ "name": "Llama 3.1 8B Instruct",
+ "provider": "bedrock",
+ "family": "llama",
+ "created_at": "2024-07-23 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.22,
+ "output_per_million": 0.22
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-07-23",
+ "cost": {
+ "input": 0.22,
+ "output": 0.22
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "meta.llama3-2-11b-instruct-v1:0",
+ "name": "Llama 3.2 11B Instruct",
+ "provider": "bedrock",
+ "family": "llama",
+ "created_at": "2024-09-25 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.16,
+ "output_per_million": 0.16
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-09-25",
+ "cost": {
+ "input": 0.16,
+ "output": 0.16
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "meta.llama3-2-1b-instruct-v1:0",
+ "name": "Llama 3.2 1B Instruct",
+ "provider": "bedrock",
+ "family": "llama",
+ "created_at": "2024-09-25 00:00:00 +0530",
+ "context_window": 131000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-09-25",
+ "cost": {
+ "input": 0.1,
+ "output": 0.1
+ },
+ "limit": {
+ "context": 131000,
+ "output": 4096
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "meta.llama3-2-3b-instruct-v1:0",
+ "name": "Llama 3.2 3B Instruct",
+ "provider": "bedrock",
+ "family": "llama",
+ "created_at": "2024-09-25 00:00:00 +0530",
+ "context_window": 131000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.15
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-09-25",
+ "cost": {
+ "input": 0.15,
+ "output": 0.15
+ },
+ "limit": {
+ "context": 131000,
+ "output": 4096
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "meta.llama3-2-90b-instruct-v1:0",
+ "name": "Llama 3.2 90B Instruct",
+ "provider": "bedrock",
+ "family": "llama",
+ "created_at": "2024-09-25 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.72,
+ "output_per_million": 0.72
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-09-25",
+ "cost": {
+ "input": 0.72,
+ "output": 0.72
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "meta.llama3-3-70b-instruct-v1:0",
+ "name": "Llama 3.3 70B Instruct",
+ "provider": "bedrock",
+ "family": "llama",
+ "created_at": "2024-12-06 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.72,
+ "output_per_million": 0.72
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-12-06",
+ "cost": {
+ "input": 0.72,
+ "output": 0.72
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "meta.llama4-maverick-17b-instruct-v1:0",
+ "name": "Llama 4 Maverick 17B Instruct",
+ "provider": "bedrock",
+ "family": "llama",
+ "created_at": "2025-04-05 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.24,
+ "output_per_million": 0.97
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-04-05",
+ "cost": {
+ "input": 0.24,
+ "output": 0.97
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 16384
+ },
+ "knowledge": "2024-08"
+ }
+ },
+ {
+ "id": "meta.llama4-scout-17b-instruct-v1:0",
+ "name": "Llama 4 Scout 17B Instruct",
+ "provider": "bedrock",
+ "family": "llama",
+ "created_at": "2025-04-05 00:00:00 +0530",
+ "context_window": 3500000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.17,
+ "output_per_million": 0.66
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-04-05",
+ "cost": {
+ "input": 0.17,
+ "output": 0.66
+ },
+ "limit": {
+ "context": 3500000,
+ "output": 16384
+ },
+ "knowledge": "2024-08"
+ }
+ },
+ {
+ "id": "minimax.minimax-m2",
+ "name": "MiniMax M2",
+ "provider": "bedrock",
+ "family": "minimax",
+ "created_at": "2025-10-27 00:00:00 +0530",
+ "context_window": 204608,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 1.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-10-27",
+ "cost": {
+ "input": 0.3,
+ "output": 1.2
+ },
+ "limit": {
+ "context": 204608,
+ "output": 128000
+ }
+ }
+ },
+ {
+ "id": "minimax.minimax-m2.1",
+ "name": "MiniMax M2.1",
+ "provider": "bedrock",
+ "family": "minimax",
+ "created_at": "2025-12-23 00:00:00 +0530",
+ "context_window": 204800,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 1.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-12-23",
+ "cost": {
+ "input": 0.3,
+ "output": 1.2
+ },
+ "limit": {
+ "context": 204800,
+ "output": 131072
+ }
+ }
+ },
+ {
+ "id": "minimax.minimax-m2.5",
+ "name": "MiniMax M2.5",
+ "provider": "bedrock",
+ "family": "minimax",
+ "created_at": "2026-03-18 00:00:00 +0530",
+ "context_window": 196608,
+ "max_output_tokens": 98304,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 1.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-03-18",
+ "cost": {
+ "input": 0.3,
+ "output": 1.2
+ },
+ "limit": {
+ "context": 196608,
+ "output": 98304
+ }
+ }
+ },
+ {
+ "id": "mistral.devstral-2-123b",
+ "name": "Devstral 2 123B",
+ "provider": "bedrock",
+ "family": "devstral",
+ "created_at": "2026-02-17 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-02-17",
+ "cost": {
+ "input": 0.4,
+ "output": 2
+ },
+ "limit": {
+ "context": 256000,
+ "output": 8192
+ }
+ }
+ },
+ {
+ "id": "mistral.magistral-small-2509",
+ "name": "Magistral Small 1.2",
+ "provider": "bedrock",
+ "family": "magistral",
+ "created_at": "2025-12-02 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 40000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-12-02",
+ "cost": {
+ "input": 0.5,
+ "output": 1.5
+ },
+ "limit": {
+ "context": 128000,
+ "output": 40000
+ }
+ }
+ },
+ {
+ "id": "mistral.ministral-3-14b-instruct",
+ "name": "Ministral 14B 3.0",
+ "provider": "bedrock",
+ "family": "ministral",
+ "created_at": "2024-12-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.2,
+ "output_per_million": 0.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-12-01",
+ "cost": {
+ "input": 0.2,
+ "output": 0.2
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ }
+ }
+ },
+ {
+ "id": "mistral.ministral-3-3b-instruct",
+ "name": "Ministral 3 3B",
+ "provider": "bedrock",
+ "family": "ministral",
+ "created_at": "2025-12-02 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-12-02",
+ "cost": {
+ "input": 0.1,
+ "output": 0.1
+ },
+ "limit": {
+ "context": 256000,
+ "output": 8192
+ }
+ }
+ },
+ {
+ "id": "mistral.ministral-3-8b-instruct",
+ "name": "Ministral 3 8B",
+ "provider": "bedrock",
+ "family": "ministral",
+ "created_at": "2024-12-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.15
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-12-01",
+ "cost": {
+ "input": 0.15,
+ "output": 0.15
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ }
+ }
+ },
+ {
+ "id": "mistral.mistral-large-3-675b-instruct",
+ "name": "Mistral Large 3",
+ "provider": "bedrock",
+ "family": "mistral",
+ "created_at": "2025-12-02 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-12-02",
+ "cost": {
+ "input": 0.5,
+ "output": 1.5
+ },
+ "limit": {
+ "context": 256000,
+ "output": 8192
+ }
+ }
+ },
+ {
+ "id": "mistral.pixtral-large-2502-v1:0",
+ "name": "Pixtral Large (25.02)",
+ "provider": "bedrock",
+ "family": "mistral",
+ "created_at": "2025-04-08 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-04-08",
+ "cost": {
+ "input": 2,
+ "output": 6
+ },
+ "limit": {
+ "context": 128000,
+ "output": 8192
+ }
+ }
+ },
+ {
+ "id": "mistral.voxtral-mini-3b-2507",
+ "name": "Voxtral Mini 3B 2507",
+ "provider": "bedrock",
+ "family": "mistral",
+ "created_at": "2024-12-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "audio",
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.04,
+ "output_per_million": 0.04
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-12-01",
+ "cost": {
+ "input": 0.04,
+ "output": 0.04
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ }
+ }
+ },
+ {
+ "id": "mistral.voxtral-small-24b-2507",
+ "name": "Voxtral Small 24B 2507",
+ "provider": "bedrock",
+ "family": "mistral",
+ "created_at": "2025-07-01 00:00:00 +0530",
+ "context_window": 32000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.35
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-07-01",
+ "cost": {
+ "input": 0.15,
+ "output": 0.35
+ },
+ "limit": {
+ "context": 32000,
+ "output": 8192
+ }
+ }
+ },
+ {
+ "id": "moonshot.kimi-k2-thinking",
+ "name": "Kimi K2 Thinking",
+ "provider": "bedrock",
+ "family": "kimi-thinking",
+ "created_at": "2025-12-02 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 256000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 2.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-12-02",
+ "interleaved": true,
+ "cost": {
+ "input": 0.6,
+ "output": 2.5
+ },
+ "limit": {
+ "context": 256000,
+ "output": 256000
+ }
+ }
+ },
+ {
+ "id": "moonshotai.kimi-k2.5",
+ "name": "Kimi K2.5",
+ "provider": "bedrock",
+ "family": "kimi",
+ "created_at": "2026-02-06 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 256000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-02-06",
+ "interleaved": true,
+ "cost": {
+ "input": 0.6,
+ "output": 3
+ },
+ "limit": {
+ "context": 256000,
+ "output": 256000
+ }
+ }
+ },
+ {
+ "id": "nvidia.nemotron-nano-12b-v2",
+ "name": "NVIDIA Nemotron Nano 12B v2 VL BF16",
+ "provider": "bedrock",
+ "family": "nemotron",
+ "created_at": "2024-12-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.2,
+ "output_per_million": 0.6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-12-01",
+ "cost": {
+ "input": 0.2,
+ "output": 0.6
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ }
+ }
+ },
+ {
+ "id": "nvidia.nemotron-nano-3-30b",
+ "name": "NVIDIA Nemotron Nano 3 30B",
+ "provider": "bedrock",
+ "family": "nemotron",
+ "created_at": "2025-12-23 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.06,
+ "output_per_million": 0.24
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-12-23",
+ "cost": {
+ "input": 0.06,
+ "output": 0.24
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ }
+ }
+ },
+ {
+ "id": "nvidia.nemotron-nano-9b-v2",
+ "name": "NVIDIA Nemotron Nano 9B v2",
+ "provider": "bedrock",
+ "family": "nemotron",
+ "created_at": "2024-12-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.06,
+ "output_per_million": 0.23
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-12-01",
+ "cost": {
+ "input": 0.06,
+ "output": 0.23
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ }
+ }
+ },
+ {
+ "id": "nvidia.nemotron-super-3-120b",
+ "name": "NVIDIA Nemotron 3 Super 120B A12B",
+ "provider": "bedrock",
+ "family": "nemotron",
+ "created_at": "2026-03-11 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.65
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-03-11",
+ "cost": {
+ "input": 0.15,
+ "output": 0.65
+ },
+ "limit": {
+ "context": 262144,
+ "output": 131072
+ }
+ }
+ },
+ {
+ "id": "openai.gpt-oss-120b-1:0",
+ "name": "gpt-oss-120b",
+ "provider": "bedrock",
+ "family": "gpt-oss",
+ "created_at": "2024-12-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-12-01",
+ "cost": {
+ "input": 0.15,
+ "output": 0.6
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ }
+ }
+ },
+ {
+ "id": "openai.gpt-oss-20b-1:0",
+ "name": "gpt-oss-20b",
+ "provider": "bedrock",
+ "family": "gpt-oss",
+ "created_at": "2024-12-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.07,
+ "output_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-12-01",
+ "cost": {
+ "input": 0.07,
+ "output": 0.3
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ }
+ }
+ },
+ {
+ "id": "openai.gpt-oss-safeguard-120b",
+ "name": "GPT OSS Safeguard 120B",
+ "provider": "bedrock",
+ "family": "gpt-oss",
+ "created_at": "2024-12-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-12-01",
+ "cost": {
+ "input": 0.15,
+ "output": 0.6
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ }
+ }
+ },
+ {
+ "id": "openai.gpt-oss-safeguard-20b",
+ "name": "GPT OSS Safeguard 20B",
+ "provider": "bedrock",
+ "family": "gpt-oss",
+ "created_at": "2024-12-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.07,
+ "output_per_million": 0.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-12-01",
+ "cost": {
+ "input": 0.07,
+ "output": 0.2
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ }
+ }
+ },
+ {
+ "id": "qwen.qwen3-235b-a22b-2507-v1:0",
+ "name": "Qwen3 235B A22B 2507",
+ "provider": "bedrock",
+ "family": "qwen",
+ "created_at": "2025-09-18 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.22,
+ "output_per_million": 0.88
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-18",
+ "cost": {
+ "input": 0.22,
+ "output": 0.88
+ },
+ "limit": {
+ "context": 262144,
+ "output": 131072
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "qwen.qwen3-32b-v1:0",
+ "name": "Qwen3 32B (dense)",
+ "provider": "bedrock",
+ "family": "qwen",
+ "created_at": "2025-09-18 00:00:00 +0530",
+ "context_window": 16384,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-18",
+ "cost": {
+ "input": 0.15,
+ "output": 0.6
+ },
+ "limit": {
+ "context": 16384,
+ "output": 16384
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "qwen.qwen3-coder-30b-a3b-v1:0",
+ "name": "Qwen3 Coder 30B A3B Instruct",
+ "provider": "bedrock",
+ "family": "qwen",
+ "created_at": "2025-09-18 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-18",
+ "cost": {
+ "input": 0.15,
+ "output": 0.6
+ },
+ "limit": {
+ "context": 262144,
+ "output": 131072
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "qwen.qwen3-coder-480b-a35b-v1:0",
+ "name": "Qwen3 Coder 480B A35B Instruct",
+ "provider": "bedrock",
+ "family": "qwen",
+ "created_at": "2025-09-18 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.22,
+ "output_per_million": 1.8
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-18",
+ "cost": {
+ "input": 0.22,
+ "output": 1.8
+ },
+ "limit": {
+ "context": 131072,
+ "output": 65536
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "qwen.qwen3-coder-next",
+ "name": "Qwen3 Coder Next",
+ "provider": "bedrock",
+ "family": "qwen",
+ "created_at": "2026-02-06 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.22,
+ "output_per_million": 1.8
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-02-06",
+ "cost": {
+ "input": 0.22,
+ "output": 1.8
+ },
+ "limit": {
+ "context": 131072,
+ "output": 65536
+ }
+ }
+ },
+ {
+ "id": "qwen.qwen3-next-80b-a3b",
+ "name": "Qwen/Qwen3-Next-80B-A3B-Instruct",
+ "provider": "bedrock",
+ "family": "qwen",
+ "created_at": "2025-09-18 00:00:00 +0530",
+ "context_window": 262000,
+ "max_output_tokens": 262000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.14,
+ "output_per_million": 1.4
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-11-25",
+ "cost": {
+ "input": 0.14,
+ "output": 1.4
+ },
+ "limit": {
+ "context": 262000,
+ "output": 262000
+ }
+ }
+ },
+ {
+ "id": "qwen.qwen3-vl-235b-a22b",
+ "name": "Qwen/Qwen3-VL-235B-A22B-Instruct",
+ "provider": "bedrock",
+ "family": "qwen",
+ "created_at": "2025-10-04 00:00:00 +0530",
+ "context_window": 262000,
+ "max_output_tokens": 262000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-11-25",
+ "cost": {
+ "input": 0.3,
+ "output": 1.5
+ },
+ "limit": {
+ "context": 262000,
+ "output": 262000
+ }
+ }
+ },
+ {
+ "id": "us.anthropic.claude-haiku-4-5-20251001-v1:0",
+ "name": "Claude Haiku 4.5 (US)",
+ "provider": "bedrock",
+ "family": "claude-haiku",
+ "created_at": "2025-10-15 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-02-28",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1,
+ "output_per_million": 5,
+ "cached_input_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-10-15",
+ "cost": {
+ "input": 1,
+ "output": 5,
+ "cache_read": 0.1,
+ "cache_write": 1.25
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-02-28"
+ }
+ },
+ {
+ "id": "us.anthropic.claude-opus-4-1-20250805-v1:0",
+ "name": "Claude Opus 4.1 (US)",
+ "provider": "bedrock",
+ "family": "claude-opus",
+ "created_at": "2025-08-05 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 32000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 75,
+ "cached_input_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-05",
+ "cost": {
+ "input": 15,
+ "output": 75,
+ "cache_read": 1.5,
+ "cache_write": 18.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 32000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "us.anthropic.claude-opus-4-20250514-v1:0",
+ "name": "Claude Opus 4 (US)",
+ "provider": "bedrock",
+ "family": "claude-opus",
+ "created_at": "2025-05-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 32000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 75,
+ "cached_input_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-22",
+ "cost": {
+ "input": 15,
+ "output": 75,
+ "cache_read": 1.5,
+ "cache_write": 18.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 32000
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "us.anthropic.claude-opus-4-5-20251101-v1:0",
+ "name": "Claude Opus 4.5 (US)",
+ "provider": "bedrock",
+ "family": "claude-opus",
+ "created_at": "2025-11-24 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5,
+ "output_per_million": 25,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-01",
+ "cost": {
+ "input": 5,
+ "output": 25,
+ "cache_read": 0.5,
+ "cache_write": 6.25
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "us.anthropic.claude-opus-4-6-v1",
+ "name": "Claude Opus 4.6 (US)",
+ "provider": "bedrock",
+ "family": "claude-opus",
+ "created_at": "2026-02-05 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5,
+ "output_per_million": 25,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-18",
+ "cost": {
+ "input": 5,
+ "output": 25,
+ "cache_read": 0.5,
+ "cache_write": 6.25
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 128000
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "us.anthropic.claude-sonnet-4-20250514-v1:0",
+ "name": "Claude Sonnet 4 (US)",
+ "provider": "bedrock",
+ "family": "claude-sonnet",
+ "created_at": "2025-05-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-22",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
+ "name": "Claude Sonnet 4.5 (US)",
+ "provider": "bedrock",
+ "family": "claude-sonnet",
+ "created_at": "2025-09-29 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-07-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-29",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-07-31"
+ }
+ },
+ {
+ "id": "us.anthropic.claude-sonnet-4-6",
+ "name": "Claude Sonnet 4.6 (US)",
+ "provider": "bedrock",
+ "family": "claude-sonnet",
+ "created_at": "2026-02-17 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-18",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 64000
+ },
+ "knowledge": "2025-08"
+ }
+ },
+ {
+ "id": "writer.palmyra-x4-v1:0",
+ "name": "Palmyra X4",
+ "provider": "bedrock",
+ "family": "palmyra",
+ "created_at": "2025-04-28 00:00:00 +0530",
+ "context_window": 122880,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.5,
+ "output_per_million": 10
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-04-28",
+ "cost": {
+ "input": 2.5,
+ "output": 10
+ },
+ "limit": {
+ "context": 122880,
+ "output": 8192
+ }
+ }
+ },
+ {
+ "id": "writer.palmyra-x5-v1:0",
+ "name": "Palmyra X5",
+ "provider": "bedrock",
+ "family": "palmyra",
+ "created_at": "2025-04-28 00:00:00 +0530",
+ "context_window": 1040000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-04-28",
+ "cost": {
+ "input": 0.6,
+ "output": 6
+ },
+ "limit": {
+ "context": 1040000,
+ "output": 8192
+ }
+ }
+ },
+ {
+ "id": "zai.glm-4.7",
+ "name": "GLM-4.7",
+ "provider": "bedrock",
+ "family": "glm",
+ "created_at": "2025-12-22 00:00:00 +0530",
+ "context_window": 204800,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 2.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-12-22",
+ "interleaved": {
+ "field": "reasoning_content"
+ },
+ "cost": {
+ "input": 0.6,
+ "output": 2.2
+ },
+ "limit": {
+ "context": 204800,
+ "output": 131072
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "zai.glm-4.7-flash",
+ "name": "GLM-4.7-Flash",
+ "provider": "bedrock",
+ "family": "glm-flash",
+ "created_at": "2026-01-19 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.07,
+ "output_per_million": 0.4
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-19",
+ "cost": {
+ "input": 0.07,
+ "output": 0.4
+ },
+ "limit": {
+ "context": 200000,
+ "output": 131072
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "zai.glm-5",
+ "name": "GLM-5",
+ "provider": "bedrock",
+ "family": "glm",
+ "created_at": "2026-03-18 00:00:00 +0530",
+ "context_window": 202752,
+ "max_output_tokens": 101376,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1,
+ "output_per_million": 3.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "amazon-bedrock",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-03-18",
+ "interleaved": {
+ "field": "reasoning_content"
+ },
+ "cost": {
+ "input": 1,
+ "output": 3.2
+ },
+ "limit": {
+ "context": 202752,
+ "output": 101376
+ }
+ }
+ },
+ {
+ "id": "deepseek-chat",
+ "name": "DeepSeek Chat",
+ "provider": "deepseek",
+ "family": "deepseek",
+ "created_at": "2025-12-01 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.28,
+ "output_per_million": 0.42,
+ "cached_input_per_million": 0.028
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "deepseek",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-02-28",
+ "cost": {
+ "input": 0.28,
+ "output": 0.42,
+ "cache_read": 0.028
+ },
+ "limit": {
+ "context": 131072,
+ "output": 8192
+ },
+ "knowledge": "2025-09"
+ }
+ },
+ {
+ "id": "deepseek-reasoner",
+ "name": "DeepSeek Reasoner",
+ "provider": "deepseek",
+ "family": "deepseek-thinking",
+ "created_at": "2025-12-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.28,
+ "output_per_million": 0.42,
+ "cached_input_per_million": 0.028
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "deepseek",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-02-28",
+ "interleaved": {
+ "field": "reasoning_content"
+ },
+ "cost": {
+ "input": 0.28,
+ "output": 0.42,
+ "cache_read": 0.028
+ },
+ "limit": {
+ "context": 128000,
+ "output": 64000
+ },
+ "knowledge": "2025-09"
+ }
+ },
+ {
+ "id": "gemini-1.5-flash",
+ "name": "Gemini 1.5 Flash",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2024-05-14 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.075,
+ "output_per_million": 0.3,
+ "cached_input_per_million": 0.01875
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-05-14",
+ "cost": {
+ "input": 0.075,
+ "output": 0.3,
+ "cache_read": 0.01875
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 8192
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "gemini-1.5-flash-8b",
+ "name": "Gemini 1.5 Flash-8B",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2024-10-03 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.0375,
+ "output_per_million": 0.15,
+ "cached_input_per_million": 0.01
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-10-03",
+ "cost": {
+ "input": 0.0375,
+ "output": 0.15,
+ "cache_read": 0.01
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 8192
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "gemini-1.5-pro",
+ "name": "Gemini 1.5 Pro",
+ "provider": "gemini",
+ "family": "gemini-pro",
+ "created_at": "2024-02-15 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 5,
+ "cached_input_per_million": 0.3125
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-02-15",
+ "cost": {
+ "input": 1.25,
+ "output": 5,
+ "cache_read": 0.3125
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 8192
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "gemini-2.0-flash",
+ "name": "Gemini 2.0 Flash",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2024-12-11 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.4,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-12-11",
+ "cost": {
+ "input": 0.1,
+ "output": 0.4,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 8192
+ },
+ "knowledge": "2024-06"
+ }
+ },
+ {
+ "id": "gemini-2.0-flash-lite",
+ "name": "Gemini 2.0 Flash Lite",
+ "provider": "gemini",
+ "family": "gemini-flash-lite",
+ "created_at": "2024-12-11 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.075,
+ "output_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-12-11",
+ "cost": {
+ "input": 0.075,
+ "output": 0.3
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 8192
+ },
+ "knowledge": "2024-06"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash",
+ "name": "Gemini 2.5 Flash",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2025-03-20 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 2.5,
+ "cached_input_per_million": 0.075
+ }
+ },
+ "audio_tokens": {
+ "standard": {
+ "input_per_million": 1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-06-05",
+ "cost": {
+ "input": 0.3,
+ "output": 2.5,
+ "cache_read": 0.075,
+ "input_audio": 1
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash-image",
+ "name": "Gemini 2.5 Flash Image",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2025-08-26 00:00:00 +0530",
+ "context_window": 32768,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text",
+ "image"
+ ]
+ },
+ "capabilities": [
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 30,
+ "cached_input_per_million": 0.075
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-26",
+ "cost": {
+ "input": 0.3,
+ "output": 30,
+ "cache_read": 0.075
+ },
+ "limit": {
+ "context": 32768,
+ "output": 32768
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash-image-preview",
+ "name": "Gemini 2.5 Flash Image (Preview)",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2025-08-26 00:00:00 +0530",
+ "context_window": 32768,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text",
+ "image"
+ ]
+ },
+ "capabilities": [
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 30,
+ "cached_input_per_million": 0.075
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-26",
+ "cost": {
+ "input": 0.3,
+ "output": 30,
+ "cache_read": 0.075
+ },
+ "limit": {
+ "context": 32768,
+ "output": 32768
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash-lite",
+ "name": "Gemini 2.5 Flash Lite",
+ "provider": "gemini",
+ "family": "gemini-flash-lite",
+ "created_at": "2025-06-17 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.4,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-06-17",
+ "cost": {
+ "input": 0.1,
+ "output": 0.4,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash-lite-preview-06-17",
+ "name": "Gemini 2.5 Flash Lite Preview 06-17",
+ "provider": "gemini",
+ "family": "gemini-flash-lite",
+ "created_at": "2025-06-17 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.4,
+ "cached_input_per_million": 0.025
+ }
+ },
+ "audio_tokens": {
+ "standard": {
+ "input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-06-17",
+ "cost": {
+ "input": 0.1,
+ "output": 0.4,
+ "cache_read": 0.025,
+ "input_audio": 0.3
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash-lite-preview-09-2025",
+ "name": "Gemini 2.5 Flash Lite Preview 09-25",
+ "provider": "gemini",
+ "family": "gemini-flash-lite",
+ "created_at": "2025-09-25 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.4,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-25",
+ "cost": {
+ "input": 0.1,
+ "output": 0.4,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash-preview-04-17",
+ "name": "Gemini 2.5 Flash Preview 04-17",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2025-04-17 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6,
+ "cached_input_per_million": 0.0375
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-04-17",
+ "cost": {
+ "input": 0.15,
+ "output": 0.6,
+ "cache_read": 0.0375
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash-preview-05-20",
+ "name": "Gemini 2.5 Flash Preview 05-20",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2025-05-20 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6,
+ "cached_input_per_million": 0.0375
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-20",
+ "cost": {
+ "input": 0.15,
+ "output": 0.6,
+ "cache_read": 0.0375
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash-preview-09-2025",
+ "name": "Gemini 2.5 Flash Preview 09-25",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2025-09-25 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 2.5,
+ "cached_input_per_million": 0.075
+ }
+ },
+ "audio_tokens": {
+ "standard": {
+ "input_per_million": 1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-25",
+ "cost": {
+ "input": 0.3,
+ "output": 2.5,
+ "cache_read": 0.075,
+ "input_audio": 1
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash-preview-tts",
+ "name": "Gemini 2.5 Flash Preview TTS",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2025-05-01 00:00:00 +0530",
+ "context_window": 8000,
+ "max_output_tokens": 16000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "audio"
+ ]
+ },
+ "capabilities": [],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 10
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": false,
+ "last_updated": "2025-05-01",
+ "cost": {
+ "input": 0.5,
+ "output": 10
+ },
+ "limit": {
+ "context": 8000,
+ "output": 16000
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-pro",
+ "name": "Gemini 2.5 Pro",
+ "provider": "gemini",
+ "family": "gemini-pro",
+ "created_at": "2025-03-20 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.31
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-06-05",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.31
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-pro-preview-05-06",
+ "name": "Gemini 2.5 Pro Preview 05-06",
+ "provider": "gemini",
+ "family": "gemini-pro",
+ "created_at": "2025-05-06 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.31
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-06",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.31
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-pro-preview-06-05",
+ "name": "Gemini 2.5 Pro Preview 06-05",
+ "provider": "gemini",
+ "family": "gemini-pro",
+ "created_at": "2025-06-05 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.31
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-06-05",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.31
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-pro-preview-tts",
+ "name": "Gemini 2.5 Pro Preview TTS",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2025-05-01 00:00:00 +0530",
+ "context_window": 8000,
+ "max_output_tokens": 16000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "audio"
+ ]
+ },
+ "capabilities": [],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1,
+ "output_per_million": 20
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": false,
+ "last_updated": "2025-05-01",
+ "cost": {
+ "input": 1,
+ "output": 20
+ },
+ "limit": {
+ "context": 8000,
+ "output": 16000
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-3-flash-preview",
+ "name": "Gemini 3 Flash Preview",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2025-12-17 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video",
+ "audio",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 3,
+ "cached_input_per_million": 0.05
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-12-17",
+ "cost": {
+ "input": 0.5,
+ "output": 3,
+ "cache_read": 0.05,
+ "context_over_200k": {
+ "input": 0.5,
+ "output": 3,
+ "cache_read": 0.05
+ }
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-3-pro-preview",
+ "name": "Gemini 3 Pro Preview",
+ "provider": "gemini",
+ "family": "gemini-pro",
+ "created_at": "2025-11-18 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video",
+ "audio",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 12,
+ "cached_input_per_million": 0.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-11-18",
+ "cost": {
+ "input": 2,
+ "output": 12,
+ "cache_read": 0.2,
+ "context_over_200k": {
+ "input": 4,
+ "output": 18,
+ "cache_read": 0.4
+ }
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 64000
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-3.1-flash-image-preview",
+ "name": "Gemini 3.1 Flash Image (Preview)",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2026-02-26 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text",
+ "image"
+ ]
+ },
+ "capabilities": [
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.25,
+ "output_per_million": 60
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-02-26",
+ "cost": {
+ "input": 0.25,
+ "output": 60
+ },
+ "limit": {
+ "context": 131072,
+ "output": 32768
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-3.1-flash-lite-preview",
+ "name": "Gemini 3.1 Flash Lite Preview",
+ "provider": "gemini",
+ "family": "gemini-flash-lite",
+ "created_at": "2026-03-03 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video",
+ "audio",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.25,
+ "output_per_million": 1.5,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-03",
+ "cost": {
+ "input": 0.25,
+ "output": 1.5,
+ "cache_read": 0.025,
+ "cache_write": 1
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-3.1-pro-preview",
+ "name": "Gemini 3.1 Pro Preview",
+ "provider": "gemini",
+ "family": "gemini-pro",
+ "created_at": "2026-02-19 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video",
+ "audio",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 12,
+ "cached_input_per_million": 0.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-02-19",
+ "cost": {
+ "input": 2,
+ "output": 12,
+ "cache_read": 0.2,
+ "context_over_200k": {
+ "input": 4,
+ "output": 18,
+ "cache_read": 0.4
+ }
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-3.1-pro-preview-customtools",
+ "name": "Gemini 3.1 Pro Preview Custom Tools",
+ "provider": "gemini",
+ "family": "gemini-pro",
+ "created_at": "2026-02-19 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video",
+ "audio",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 12,
+ "cached_input_per_million": 0.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-02-19",
+ "cost": {
+ "input": 2,
+ "output": 12,
+ "cache_read": 0.2,
+ "context_over_200k": {
+ "input": 4,
+ "output": 18,
+ "cache_read": 0.4
+ }
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-embedding-001",
+ "name": "Gemini Embedding 001",
+ "provider": "gemini",
+ "family": "gemini",
+ "created_at": "2025-05-20 00:00:00 +0530",
+ "context_window": 2048,
+ "max_output_tokens": 3072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": false,
+ "last_updated": "2025-05-20",
+ "cost": {
+ "input": 0.15,
+ "output": 0
+ },
+ "limit": {
+ "context": 2048,
+ "output": 3072
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "gemini-flash-latest",
+ "name": "Gemini Flash Latest",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2025-09-25 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 2.5,
+ "cached_input_per_million": 0.075
+ }
+ },
+ "audio_tokens": {
+ "standard": {
+ "input_per_million": 1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-25",
+ "cost": {
+ "input": 0.3,
+ "output": 2.5,
+ "cache_read": 0.075,
+ "input_audio": 1
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-flash-lite-latest",
+ "name": "Gemini Flash-Lite Latest",
+ "provider": "gemini",
+ "family": "gemini-flash-lite",
+ "created_at": "2025-09-25 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.4,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-25",
+ "cost": {
+ "input": 0.1,
+ "output": 0.4,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-live-2.5-flash",
+ "name": "Gemini Live 2.5 Flash",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2025-09-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 8000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 2
+ }
+ },
+ "audio_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 12
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-01",
+ "cost": {
+ "input": 0.5,
+ "output": 2,
+ "input_audio": 3,
+ "output_audio": 12
+ },
+ "limit": {
+ "context": 128000,
+ "output": 8000
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-live-2.5-flash-preview-native-audio",
+ "name": "Gemini Live 2.5 Flash Preview Native Audio",
+ "provider": "gemini",
+ "family": "gemini-flash",
+ "created_at": "2025-06-17 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio",
+ "video"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 2
+ }
+ },
+ "audio_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 12
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": false,
+ "last_updated": "2025-09-18",
+ "cost": {
+ "input": 0.5,
+ "output": 2,
+ "input_audio": 3,
+ "output_audio": 12
+ },
+ "limit": {
+ "context": 131072,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemma-3-12b-it",
+ "name": "Gemma 3 12B",
+ "provider": "gemini",
+ "family": "gemma",
+ "created_at": "2025-03-13 00:00:00 +0530",
+ "context_window": 32768,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-03-13",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 32768,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "gemma-3-27b-it",
+ "name": "Gemma 3 27B",
+ "provider": "gemini",
+ "family": "gemma",
+ "created_at": "2025-03-12 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-03-12",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 131072,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "gemma-3-4b-it",
+ "name": "Gemma 3 4B",
+ "provider": "gemini",
+ "family": "gemma",
+ "created_at": "2025-03-13 00:00:00 +0530",
+ "context_window": 32768,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-03-13",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 32768,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "gemma-3n-e2b-it",
+ "name": "Gemma 3n 2B",
+ "provider": "gemini",
+ "family": "gemma",
+ "created_at": "2025-07-09 00:00:00 +0530",
+ "context_window": 8192,
+ "max_output_tokens": 2000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-07-09",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 8192,
+ "output": 2000
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "gemma-3n-e4b-it",
+ "name": "Gemma 3n 4B",
+ "provider": "gemini",
+ "family": "gemma",
+ "created_at": "2025-05-20 00:00:00 +0530",
+ "context_window": 8192,
+ "max_output_tokens": 2000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-20",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 8192,
+ "output": 2000
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "gemma-4-26b-it",
+ "name": "Gemma 4 26B",
+ "provider": "gemini",
+ "family": "gemma",
+ "created_at": "2026-04-02 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-04-02",
+ "limit": {
+ "context": 256000,
+ "output": 8192
+ }
+ }
+ },
+ {
+ "id": "gemma-4-31b-it",
+ "name": "Gemma 4 31B",
+ "provider": "gemini",
+ "family": "gemma",
+ "created_at": "2026-04-02 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-04-02",
+ "limit": {
+ "context": 256000,
+ "output": 8192
+ }
+ }
+ },
+ {
+ "id": "codestral-latest",
+ "name": "Codestral (latest)",
+ "provider": "mistral",
+ "family": "codestral",
+ "created_at": "2024-05-29 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 0.9
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-01-04",
+ "cost": {
+ "input": 0.3,
+ "output": 0.9
+ },
+ "limit": {
+ "context": 256000,
+ "output": 4096
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "devstral-2512",
+ "name": "Devstral 2",
+ "provider": "mistral",
+ "family": "devstral",
+ "created_at": "2025-12-09 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-12-09",
+ "cost": {
+ "input": 0.4,
+ "output": 2
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2025-12"
+ }
+ },
+ {
+ "id": "devstral-medium-2507",
+ "name": "Devstral Medium",
+ "provider": "mistral",
+ "family": "devstral",
+ "created_at": "2025-07-10 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-10",
+ "cost": {
+ "input": 0.4,
+ "output": 2
+ },
+ "limit": {
+ "context": 128000,
+ "output": 128000
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "devstral-medium-latest",
+ "name": "Devstral 2 (latest)",
+ "provider": "mistral",
+ "family": "devstral",
+ "created_at": "2025-12-02 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-12-02",
+ "cost": {
+ "input": 0.4,
+ "output": 2
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2025-12"
+ }
+ },
+ {
+ "id": "devstral-small-2505",
+ "name": "Devstral Small 2505",
+ "provider": "mistral",
+ "family": "devstral",
+ "created_at": "2025-05-07 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-05-07",
+ "cost": {
+ "input": 0.1,
+ "output": 0.3
+ },
+ "limit": {
+ "context": 128000,
+ "output": 128000
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "devstral-small-2507",
+ "name": "Devstral Small",
+ "provider": "mistral",
+ "family": "devstral",
+ "created_at": "2025-07-10 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-10",
+ "cost": {
+ "input": 0.1,
+ "output": 0.3
+ },
+ "limit": {
+ "context": 128000,
+ "output": 128000
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "labs-devstral-small-2512",
+ "name": "Devstral Small 2",
+ "provider": "mistral",
+ "family": "devstral",
+ "created_at": "2025-12-09 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 256000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-12-09",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 256000,
+ "output": 256000
+ },
+ "knowledge": "2025-12"
+ }
+ },
+ {
+ "id": "magistral-medium-latest",
+ "name": "Magistral Medium (latest)",
+ "provider": "mistral",
+ "family": "magistral-medium",
+ "created_at": "2025-03-17 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-03-20",
+ "cost": {
+ "input": 2,
+ "output": 5
+ },
+ "limit": {
+ "context": 128000,
+ "output": 16384
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "magistral-small",
+ "name": "Magistral Small",
+ "provider": "mistral",
+ "family": "magistral-small",
+ "created_at": "2025-03-17 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-03-17",
+ "cost": {
+ "input": 0.5,
+ "output": 1.5
+ },
+ "limit": {
+ "context": 128000,
+ "output": 128000
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "ministral-3b-latest",
+ "name": "Ministral 3B (latest)",
+ "provider": "mistral",
+ "family": "ministral",
+ "created_at": "2024-10-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.04,
+ "output_per_million": 0.04
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-10-04",
+ "cost": {
+ "input": 0.04,
+ "output": 0.04
+ },
+ "limit": {
+ "context": 128000,
+ "output": 128000
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "ministral-8b-latest",
+ "name": "Ministral 8B (latest)",
+ "provider": "mistral",
+ "family": "ministral",
+ "created_at": "2024-10-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-10-04",
+ "cost": {
+ "input": 0.1,
+ "output": 0.1
+ },
+ "limit": {
+ "context": 128000,
+ "output": 128000
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "mistral-embed",
+ "name": "Mistral Embed",
+ "provider": "mistral",
+ "family": "mistral-embed",
+ "created_at": "2023-12-11 00:00:00 +0530",
+ "context_window": 8000,
+ "max_output_tokens": 3072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": false,
+ "last_updated": "2023-12-11",
+ "cost": {
+ "input": 0.1,
+ "output": 0
+ },
+ "limit": {
+ "context": 8000,
+ "output": 3072
+ }
+ }
+ },
+ {
+ "id": "mistral-large-2411",
+ "name": "Mistral Large 2.1",
+ "provider": "mistral",
+ "family": "mistral-large",
+ "created_at": "2024-11-01 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-11-04",
+ "cost": {
+ "input": 2,
+ "output": 6
+ },
+ "limit": {
+ "context": 131072,
+ "output": 16384
+ },
+ "knowledge": "2024-11"
+ }
+ },
+ {
+ "id": "mistral-large-2512",
+ "name": "Mistral Large 3",
+ "provider": "mistral",
+ "family": "mistral-large",
+ "created_at": "2024-11-01 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-12-02",
+ "cost": {
+ "input": 0.5,
+ "output": 1.5
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2024-11"
+ }
+ },
+ {
+ "id": "mistral-large-latest",
+ "name": "Mistral Large (latest)",
+ "provider": "mistral",
+ "family": "mistral-large",
+ "created_at": "2024-11-01 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-12-02",
+ "cost": {
+ "input": 0.5,
+ "output": 1.5
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2024-11"
+ }
+ },
+ {
+ "id": "mistral-medium-2505",
+ "name": "Mistral Medium 3",
+ "provider": "mistral",
+ "family": "mistral-medium",
+ "created_at": "2025-05-07 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-07",
+ "cost": {
+ "input": 0.4,
+ "output": 2
+ },
+ "limit": {
+ "context": 131072,
+ "output": 131072
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "mistral-medium-2508",
+ "name": "Mistral Medium 3.1",
+ "provider": "mistral",
+ "family": "mistral-medium",
+ "created_at": "2025-08-12 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-12",
+ "cost": {
+ "input": 0.4,
+ "output": 2
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "mistral-medium-latest",
+ "name": "Mistral Medium (latest)",
+ "provider": "mistral",
+ "family": "mistral-medium",
+ "created_at": "2025-05-07 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-05-10",
+ "cost": {
+ "input": 0.4,
+ "output": 2
+ },
+ "limit": {
+ "context": 128000,
+ "output": 16384
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "mistral-nemo",
+ "name": "Mistral Nemo",
+ "provider": "mistral",
+ "family": "mistral-nemo",
+ "created_at": "2024-07-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.15
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-07-01",
+ "cost": {
+ "input": 0.15,
+ "output": 0.15
+ },
+ "limit": {
+ "context": 128000,
+ "output": 128000
+ },
+ "knowledge": "2024-07"
+ }
+ },
+ {
+ "id": "mistral-small-2506",
+ "name": "Mistral Small 3.2",
+ "provider": "mistral",
+ "family": "mistral-small",
+ "created_at": "2025-06-20 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-06-20",
+ "cost": {
+ "input": 0.1,
+ "output": 0.3
+ },
+ "limit": {
+ "context": 128000,
+ "output": 16384
+ },
+ "knowledge": "2025-03"
+ }
+ },
+ {
+ "id": "mistral-small-2603",
+ "name": "Mistral Small 4",
+ "provider": "mistral",
+ "family": "mistral-small",
+ "created_at": "2026-03-16 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 256000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-16",
+ "cost": {
+ "input": 0.15,
+ "output": 0.6
+ },
+ "limit": {
+ "context": 256000,
+ "output": 256000
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "mistral-small-latest",
+ "name": "Mistral Small (latest)",
+ "provider": "mistral",
+ "family": "mistral-small",
+ "created_at": "2026-03-16 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 256000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-16",
+ "cost": {
+ "input": 0.15,
+ "output": 0.6
+ },
+ "limit": {
+ "context": 256000,
+ "output": 256000
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "open-mistral-7b",
+ "name": "Mistral 7B",
+ "provider": "mistral",
+ "family": "mistral",
+ "created_at": "2023-09-27 00:00:00 +0530",
+ "context_window": 8000,
+ "max_output_tokens": 8000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.25,
+ "output_per_million": 0.25
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2023-09-27",
+ "cost": {
+ "input": 0.25,
+ "output": 0.25
+ },
+ "limit": {
+ "context": 8000,
+ "output": 8000
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "open-mixtral-8x22b",
+ "name": "Mixtral 8x22B",
+ "provider": "mistral",
+ "family": "mixtral",
+ "created_at": "2024-04-17 00:00:00 +0530",
+ "context_window": 64000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-04-17",
+ "cost": {
+ "input": 2,
+ "output": 6
+ },
+ "limit": {
+ "context": 64000,
+ "output": 64000
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "open-mixtral-8x7b",
+ "name": "Mixtral 8x7B",
+ "provider": "mistral",
+ "family": "mixtral",
+ "created_at": "2023-12-11 00:00:00 +0530",
+ "context_window": 32000,
+ "max_output_tokens": 32000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.7,
+ "output_per_million": 0.7
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2023-12-11",
+ "cost": {
+ "input": 0.7,
+ "output": 0.7
+ },
+ "limit": {
+ "context": 32000,
+ "output": 32000
+ },
+ "knowledge": "2024-01"
+ }
+ },
+ {
+ "id": "pixtral-12b",
+ "name": "Pixtral 12B",
+ "provider": "mistral",
+ "family": "pixtral",
+ "created_at": "2024-09-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.15
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-09-01",
+ "cost": {
+ "input": 0.15,
+ "output": 0.15
+ },
+ "limit": {
+ "context": 128000,
+ "output": 128000
+ },
+ "knowledge": "2024-09"
+ }
+ },
+ {
+ "id": "pixtral-large-latest",
+ "name": "Pixtral Large (latest)",
+ "provider": "mistral",
+ "family": "pixtral",
+ "created_at": "2024-11-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "mistral",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-11-04",
+ "cost": {
+ "input": 2,
+ "output": 6
+ },
+ "limit": {
+ "context": 128000,
+ "output": 128000
+ },
+ "knowledge": "2024-11"
+ }
+ },
+ {
+ "id": "babbage-002",
+ "name": "Babbage 002",
+ "provider": "openai",
+ "family": "babbage",
+ "created_at": "2023-08-21 21:46:55 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 0.4
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "chatgpt-image-latest",
+ "name": "chatgpt-image-latest",
+ "provider": "openai",
+ "family": "gpt-image",
+ "created_at": "2025-12-16 00:00:00 +0530",
+ "context_window": 0,
+ "max_output_tokens": 0,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text",
+ "image"
+ ]
+ },
+ "capabilities": [
+ "vision",
+ "streaming"
+ ],
+ "pricing": {},
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-12-16",
+ "limit": {
+ "context": 0,
+ "input": 0,
+ "output": 0
+ }
+ }
+ },
+ {
+ "id": "codex-mini-latest",
+ "name": "Codex Mini",
+ "provider": "openai",
+ "family": "gpt-codex-mini",
+ "created_at": "2025-05-16 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 100000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.5,
+ "output_per_million": 6,
+ "cached_input_per_million": 0.375
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-05-16",
+ "cost": {
+ "input": 1.5,
+ "output": 6,
+ "cache_read": 0.375
+ },
+ "limit": {
+ "context": 200000,
+ "output": 100000
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "computer-use-preview",
+ "name": "Computer Use Preview",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2024-12-20 06:17:57 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "computer-use-preview-2025-03-11",
+ "name": "Computer Use Preview 20250311",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-03-08 01:20:21 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "dall-e-2",
+ "name": "DALL-E-2",
+ "provider": "openai",
+ "family": "dall_e",
+ "created_at": "2023-11-01 05:52:57 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text",
+ "image"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "dall-e-3",
+ "name": "DALL-E-3",
+ "provider": "openai",
+ "family": "dall_e",
+ "created_at": "2023-11-01 02:16:29 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text",
+ "image"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "davinci-002",
+ "name": "Davinci 002",
+ "provider": "openai",
+ "family": "davinci",
+ "created_at": "2023-08-21 21:41:41 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.0,
+ "output_per_million": 2.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-3.5-turbo",
+ "name": "GPT-3.5-turbo",
+ "provider": "openai",
+ "family": "gpt",
+ "created_at": "2023-03-01 00:00:00 +0530",
+ "context_window": 16385,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": "2021-09-01",
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5,
+ "cached_input_per_million": 1.25
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "openai",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2023-11-06",
+ "cost": {
+ "input": 0.5,
+ "output": 1.5,
+ "cache_read": 1.25
+ },
+ "limit": {
+ "context": 16385,
+ "output": 4096
+ },
+ "knowledge": "2021-09-01"
+ }
+ },
+ {
+ "id": "gpt-3.5-turbo-0125",
+ "name": "GPT-3.5 Turbo 0125",
+ "provider": "openai",
+ "family": "gpt35_turbo",
+ "created_at": "2024-01-24 03:49:18 +0530",
+ "context_window": 16385,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-3.5-turbo-1106",
+ "name": "GPT-3.5 Turbo 1106",
+ "provider": "openai",
+ "family": "gpt35_turbo",
+ "created_at": "2023-11-03 02:45:48 +0530",
+ "context_window": 16385,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-3.5-turbo-16k",
+ "name": "GPT-3.5 Turbo 16k",
+ "provider": "openai",
+ "family": "gpt35_turbo",
+ "created_at": "2023-05-11 04:05:02 +0530",
+ "context_window": 16385,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "openai-internal"
+ }
+ },
+ {
+ "id": "gpt-3.5-turbo-instruct",
+ "name": "GPT-3.5 Turbo Instruct",
+ "provider": "openai",
+ "family": "gpt35_turbo",
+ "created_at": "2023-08-24 23:53:47 +0530",
+ "context_window": 16385,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-3.5-turbo-instruct-0914",
+ "name": "GPT-3.5 Turbo Instruct 0914",
+ "provider": "openai",
+ "family": "gpt35_turbo",
+ "created_at": "2023-09-08 03:04:32 +0530",
+ "context_window": 16385,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4",
+ "name": "GPT-4",
+ "provider": "openai",
+ "family": "gpt",
+ "created_at": "2023-11-06 00:00:00 +0530",
+ "context_window": 8192,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 30,
+ "output_per_million": 60
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "openai",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-04-09",
+ "cost": {
+ "input": 30,
+ "output": 60
+ },
+ "limit": {
+ "context": 8192,
+ "output": 8192
+ },
+ "knowledge": "2023-11"
+ }
+ },
+ {
+ "id": "gpt-4-0613",
+ "name": "GPT-4 0613",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2023-06-12 22:24:56 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "openai"
+ }
+ },
+ {
+ "id": "gpt-4-turbo",
+ "name": "GPT-4 Turbo",
+ "provider": "openai",
+ "family": "gpt",
+ "created_at": "2023-11-06 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 10,
+ "output_per_million": 30
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-04-09",
+ "cost": {
+ "input": 10,
+ "output": 30
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "gpt-4-turbo-2024-04-09",
+ "name": "GPT-4 Turbo 20240409",
+ "provider": "openai",
+ "family": "gpt4_turbo",
+ "created_at": "2024-04-09 00:11:17 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 10.0,
+ "output_per_million": 30.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4.1",
+ "name": "GPT-4.1",
+ "provider": "openai",
+ "family": "gpt",
+ "created_at": "2025-04-14 00:00:00 +0530",
+ "context_window": 1047576,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 8,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-04-14",
+ "cost": {
+ "input": 2,
+ "output": 8,
+ "cache_read": 0.5
+ },
+ "limit": {
+ "context": 1047576,
+ "output": 32768
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "gpt-4.1-2025-04-14",
+ "name": "GPT-4.1 20250414",
+ "provider": "openai",
+ "family": "gpt41",
+ "created_at": "2025-04-11 01:39:06 +0530",
+ "context_window": 1047576,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.0,
+ "output_per_million": 8.0,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4.1-mini",
+ "name": "GPT-4.1 mini",
+ "provider": "openai",
+ "family": "gpt-mini",
+ "created_at": "2025-04-14 00:00:00 +0530",
+ "context_window": 1047576,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 1.6,
+ "cached_input_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-04-14",
+ "cost": {
+ "input": 0.4,
+ "output": 1.6,
+ "cache_read": 0.1
+ },
+ "limit": {
+ "context": 1047576,
+ "output": 32768
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "gpt-4.1-mini-2025-04-14",
+ "name": "GPT-4.1 Mini 20250414",
+ "provider": "openai",
+ "family": "gpt41_mini",
+ "created_at": "2025-04-11 02:09:07 +0530",
+ "context_window": 1047576,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 1.6,
+ "cached_input_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4.1-nano",
+ "name": "GPT-4.1 nano",
+ "provider": "openai",
+ "family": "gpt-nano",
+ "created_at": "2025-04-14 00:00:00 +0530",
+ "context_window": 1047576,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.4,
+ "cached_input_per_million": 0.03
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-04-14",
+ "cost": {
+ "input": 0.1,
+ "output": 0.4,
+ "cache_read": 0.03
+ },
+ "limit": {
+ "context": 1047576,
+ "output": 32768
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "gpt-4.1-nano-2025-04-14",
+ "name": "GPT-4.1 Nano 20250414",
+ "provider": "openai",
+ "family": "gpt41_nano",
+ "created_at": "2025-04-11 03:07:05 +0530",
+ "context_window": 1047576,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.4
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o",
+ "name": "GPT-4o",
+ "provider": "openai",
+ "family": "gpt",
+ "created_at": "2024-05-13 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.5,
+ "output_per_million": 10,
+ "cached_input_per_million": 1.25
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-08-06",
+ "cost": {
+ "input": 2.5,
+ "output": 10,
+ "cache_read": 1.25
+ },
+ "limit": {
+ "context": 128000,
+ "output": 16384
+ },
+ "knowledge": "2023-09"
+ }
+ },
+ {
+ "id": "gpt-4o-2024-05-13",
+ "name": "GPT-4o (2024-05-13)",
+ "provider": "openai",
+ "family": "gpt",
+ "created_at": "2024-05-13 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5,
+ "output_per_million": 15
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-05-13",
+ "cost": {
+ "input": 5,
+ "output": 15
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ },
+ "knowledge": "2023-09"
+ }
+ },
+ {
+ "id": "gpt-4o-2024-08-06",
+ "name": "GPT-4o (2024-08-06)",
+ "provider": "openai",
+ "family": "gpt",
+ "created_at": "2024-08-06 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.5,
+ "output_per_million": 10,
+ "cached_input_per_million": 1.25
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-08-06",
+ "cost": {
+ "input": 2.5,
+ "output": 10,
+ "cache_read": 1.25
+ },
+ "limit": {
+ "context": 128000,
+ "output": 16384
+ },
+ "knowledge": "2023-09"
+ }
+ },
+ {
+ "id": "gpt-4o-2024-11-20",
+ "name": "GPT-4o (2024-11-20)",
+ "provider": "openai",
+ "family": "gpt",
+ "created_at": "2024-11-20 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.5,
+ "output_per_million": 10,
+ "cached_input_per_million": 1.25
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-11-20",
+ "cost": {
+ "input": 2.5,
+ "output": 10,
+ "cache_read": 1.25
+ },
+ "limit": {
+ "context": 128000,
+ "output": 16384
+ },
+ "knowledge": "2023-09"
+ }
+ },
+ {
+ "id": "gpt-4o-audio-preview",
+ "name": "GPT-4o-Audio Preview",
+ "provider": "openai",
+ "family": "gpt4o_audio",
+ "created_at": "2024-09-27 23:37:23 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "speech_generation",
+ "transcription"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.5,
+ "output_per_million": 10.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-audio-preview-2024-12-17",
+ "name": "GPT-4o-Audio Preview 20241217",
+ "provider": "openai",
+ "family": "gpt4o_audio",
+ "created_at": "2024-12-13 01:40:39 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "speech_generation",
+ "transcription"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.5,
+ "output_per_million": 10.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-audio-preview-2025-06-03",
+ "name": "GPT-4o-Audio Preview 20250603",
+ "provider": "openai",
+ "family": "gpt4o_audio",
+ "created_at": "2025-06-03 05:24:58 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "speech_generation",
+ "transcription"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.5,
+ "output_per_million": 10.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-mini",
+ "name": "GPT-4o mini",
+ "provider": "openai",
+ "family": "gpt-mini",
+ "created_at": "2024-07-18 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6,
+ "cached_input_per_million": 0.08
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-07-18",
+ "cost": {
+ "input": 0.15,
+ "output": 0.6,
+ "cache_read": 0.08
+ },
+ "limit": {
+ "context": 128000,
+ "output": 16384
+ },
+ "knowledge": "2023-09"
+ }
+ },
+ {
+ "id": "gpt-4o-mini-2024-07-18",
+ "name": "GPT-4o-Mini 20240718",
+ "provider": "openai",
+ "family": "gpt4o_mini",
+ "created_at": "2024-07-17 05:01:57 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-mini-audio-preview",
+ "name": "GPT-4o-Mini Audio Preview",
+ "provider": "openai",
+ "family": "gpt4o_mini_audio",
+ "created_at": "2024-12-17 03:47:04 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "speech_generation",
+ "transcription"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-mini-audio-preview-2024-12-17",
+ "name": "GPT-4o-Mini Audio Preview 20241217",
+ "provider": "openai",
+ "family": "gpt4o_mini_audio",
+ "created_at": "2024-12-14 00:22:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "speech_generation",
+ "transcription"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-mini-realtime-preview",
+ "name": "GPT-4o-Mini Realtime Preview",
+ "provider": "openai",
+ "family": "gpt4o_mini_realtime",
+ "created_at": "2024-12-17 03:46:20 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 2.4
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-mini-realtime-preview-2024-12-17",
+ "name": "GPT-4o-Mini Realtime Preview 20241217",
+ "provider": "openai",
+ "family": "gpt4o_mini_realtime",
+ "created_at": "2024-12-13 23:26:41 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 2.4
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-mini-search-preview",
+ "name": "GPT-4o-Mini Search Preview",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-03-08 05:16:01 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-mini-search-preview-2025-03-11",
+ "name": "GPT-4o-Mini Search Preview 20250311",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-03-08 05:10:58 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-mini-transcribe",
+ "name": "GPT-4o-Mini Transcribe",
+ "provider": "openai",
+ "family": "gpt4o_mini_transcribe",
+ "created_at": "2025-03-16 01:26:36 +0530",
+ "context_window": 16000,
+ "max_output_tokens": 2000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 5.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-mini-transcribe-2025-03-20",
+ "name": "GPT-4o-Mini Transcribe 20250320",
+ "provider": "openai",
+ "family": "gpt4o_mini_transcribe",
+ "created_at": "2025-12-13 12:52:25 +0530",
+ "context_window": 16000,
+ "max_output_tokens": 2000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 5.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-mini-transcribe-2025-12-15",
+ "name": "GPT-4o-Mini Transcribe 20251215",
+ "provider": "openai",
+ "family": "gpt4o_mini_transcribe",
+ "created_at": "2025-12-13 12:50:07 +0530",
+ "context_window": 16000,
+ "max_output_tokens": 2000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 5.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-mini-tts",
+ "name": "GPT-4o-Mini Tts",
+ "provider": "openai",
+ "family": "gpt4o_mini_tts",
+ "created_at": "2025-03-19 22:35:59 +0530",
+ "context_window": null,
+ "max_output_tokens": null,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 12.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-mini-tts-2025-03-20",
+ "name": "GPT-4o-Mini Tts 20250320",
+ "provider": "openai",
+ "family": "gpt4o_mini_tts",
+ "created_at": "2025-12-13 12:55:31 +0530",
+ "context_window": null,
+ "max_output_tokens": null,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 12.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-mini-tts-2025-12-15",
+ "name": "GPT-4o-Mini Tts 20251215",
+ "provider": "openai",
+ "family": "gpt4o_mini_tts",
+ "created_at": "2025-12-13 12:57:17 +0530",
+ "context_window": null,
+ "max_output_tokens": null,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 12.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-realtime-preview",
+ "name": "GPT-4o-Realtime Preview",
+ "provider": "openai",
+ "family": "gpt4o_realtime",
+ "created_at": "2024-09-30 07:03:18 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5.0,
+ "output_per_million": 20.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-realtime-preview-2024-12-17",
+ "name": "GPT-4o-Realtime Preview 20241217",
+ "provider": "openai",
+ "family": "gpt4o_realtime",
+ "created_at": "2024-12-12 01:00:30 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5.0,
+ "output_per_million": 20.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-realtime-preview-2025-06-03",
+ "name": "GPT-4o-Realtime Preview 20250603",
+ "provider": "openai",
+ "family": "gpt4o_realtime",
+ "created_at": "2025-06-03 05:13:58 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5.0,
+ "output_per_million": 20.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-search-preview",
+ "name": "GPT-4o Search Preview",
+ "provider": "openai",
+ "family": "gpt4o_search",
+ "created_at": "2026-02-24 09:28:54 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.5,
+ "output_per_million": 10.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-search-preview-2025-03-11",
+ "name": "GPT-4o Search Preview 20250311",
+ "provider": "openai",
+ "family": "gpt4o_search",
+ "created_at": "2026-02-24 09:30:21 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.5,
+ "output_per_million": 10.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-transcribe",
+ "name": "GPT-4o-Transcribe",
+ "provider": "openai",
+ "family": "gpt4o_transcribe",
+ "created_at": "2025-03-16 01:24:23 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.5,
+ "output_per_million": 10.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-4o-transcribe-diarize",
+ "name": "GPT-4o-Transcribe Diarize",
+ "provider": "openai",
+ "family": "gpt4o_transcribe",
+ "created_at": "2025-06-25 02:31:27 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.5,
+ "output_per_million": 10.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-5",
+ "name": "GPT-5",
+ "provider": "openai",
+ "family": "gpt",
+ "created_at": "2025-08-07 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-08-07",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.125
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 128000
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "gpt-5-2025-08-07",
+ "name": "GPT-5 20250807",
+ "provider": "openai",
+ "family": "gpt5",
+ "created_at": "2025-08-02 00:39:20 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 400000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10.0,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-5-chat-latest",
+ "name": "GPT-5 Chat (latest)",
+ "provider": "openai",
+ "family": "gpt-codex",
+ "created_at": "2025-08-07 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming",
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-07",
+ "cost": {
+ "input": 1.25,
+ "output": 10
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 128000
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "gpt-5-codex",
+ "name": "GPT-5-Codex",
+ "provider": "openai",
+ "family": "gpt-codex",
+ "created_at": "2025-09-15 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": false,
+ "last_updated": "2025-09-15",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.125
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 128000
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "gpt-5-mini",
+ "name": "GPT-5 Mini",
+ "provider": "openai",
+ "family": "gpt-mini",
+ "created_at": "2025-08-07 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-05-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.25,
+ "output_per_million": 2,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-08-07",
+ "cost": {
+ "input": 0.25,
+ "output": 2,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 128000
+ },
+ "knowledge": "2024-05-30"
+ }
+ },
+ {
+ "id": "gpt-5-mini-2025-08-07",
+ "name": "GPT-5 Mini 20250807",
+ "provider": "openai",
+ "family": "gpt5",
+ "created_at": "2025-08-06 02:01:07 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 400000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10.0,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-5-nano",
+ "name": "GPT-5 Nano",
+ "provider": "openai",
+ "family": "gpt-nano",
+ "created_at": "2025-08-07 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-05-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.05,
+ "output_per_million": 0.4,
+ "cached_input_per_million": 0.005
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-08-07",
+ "cost": {
+ "input": 0.05,
+ "output": 0.4,
+ "cache_read": 0.005
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 128000
+ },
+ "knowledge": "2024-05-30"
+ }
+ },
+ {
+ "id": "gpt-5-nano-2025-08-07",
+ "name": "GPT-5 Nano 20250807",
+ "provider": "openai",
+ "family": "gpt5",
+ "created_at": "2025-08-06 02:08:23 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 400000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10.0,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-5-pro",
+ "name": "GPT-5 Pro",
+ "provider": "openai",
+ "family": "gpt-pro",
+ "created_at": "2025-10-06 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 272000,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 120
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-10-06",
+ "cost": {
+ "input": 15,
+ "output": 120
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 272000
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "gpt-5-pro-2025-10-06",
+ "name": "GPT-5 Pro 20251006",
+ "provider": "openai",
+ "family": "gpt5",
+ "created_at": "2025-10-03 11:05:07 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 400000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10.0,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-5-search-api",
+ "name": "GPT-5 Search Api",
+ "provider": "openai",
+ "family": "gpt5",
+ "created_at": "2025-10-03 23:33:49 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 400000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10.0,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-5-search-api-2025-10-14",
+ "name": "GPT-5 Search Api 20251014",
+ "provider": "openai",
+ "family": "gpt5",
+ "created_at": "2025-10-10 02:36:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 400000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10.0,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-5.1",
+ "name": "GPT-5.1",
+ "provider": "openai",
+ "family": "gpt",
+ "created_at": "2025-11-13 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.13
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-11-13",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.13
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 128000
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "gpt-5.1-2025-11-13",
+ "name": "GPT-5.1 20251113",
+ "provider": "openai",
+ "family": "gpt5",
+ "created_at": "2025-11-11 00:15:53 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 400000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10.0,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-5.1-chat-latest",
+ "name": "GPT-5.1 Chat",
+ "provider": "openai",
+ "family": "gpt-codex",
+ "created_at": "2025-11-13 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-11-13",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.125
+ },
+ "limit": {
+ "context": 128000,
+ "output": 16384
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "gpt-5.1-codex",
+ "name": "GPT-5.1 Codex",
+ "provider": "openai",
+ "family": "gpt-codex",
+ "created_at": "2025-11-13 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-11-13",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.125
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 128000
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "gpt-5.1-codex-max",
+ "name": "GPT-5.1 Codex Max",
+ "provider": "openai",
+ "family": "gpt-codex",
+ "created_at": "2025-11-13 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-11-13",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.125
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 128000
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "gpt-5.1-codex-mini",
+ "name": "GPT-5.1 Codex mini",
+ "provider": "openai",
+ "family": "gpt-codex",
+ "created_at": "2025-11-13 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.25,
+ "output_per_million": 2,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-11-13",
+ "cost": {
+ "input": 0.25,
+ "output": 2,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 128000
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "gpt-5.2",
+ "name": "GPT-5.2",
+ "provider": "openai",
+ "family": "gpt",
+ "created_at": "2025-12-11 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.75,
+ "output_per_million": 14,
+ "cached_input_per_million": 0.175
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-12-11",
+ "cost": {
+ "input": 1.75,
+ "output": 14,
+ "cache_read": 0.175
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "gpt-5.2-2025-12-11",
+ "name": "GPT-5.2 20251211",
+ "provider": "openai",
+ "family": "gpt5",
+ "created_at": "2025-12-10 02:13:48 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 400000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10.0,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-5.2-chat-latest",
+ "name": "GPT-5.2 Chat",
+ "provider": "openai",
+ "family": "gpt-codex",
+ "created_at": "2025-12-11 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.75,
+ "output_per_million": 14,
+ "cached_input_per_million": 0.175
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-12-11",
+ "cost": {
+ "input": 1.75,
+ "output": 14,
+ "cache_read": 0.175
+ },
+ "limit": {
+ "context": 128000,
+ "output": 16384
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "gpt-5.2-codex",
+ "name": "GPT-5.2 Codex",
+ "provider": "openai",
+ "family": "gpt-codex",
+ "created_at": "2025-12-11 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.75,
+ "output_per_million": 14,
+ "cached_input_per_million": 0.175
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-12-11",
+ "cost": {
+ "input": 1.75,
+ "output": 14,
+ "cache_read": 0.175
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "gpt-5.2-pro",
+ "name": "GPT-5.2 Pro",
+ "provider": "openai",
+ "family": "gpt-pro",
+ "created_at": "2025-12-11 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision",
+ "streaming",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 21,
+ "output_per_million": 168
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-12-11",
+ "cost": {
+ "input": 21,
+ "output": 168
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "gpt-5.2-pro-2025-12-11",
+ "name": "GPT-5.2 Pro 20251211",
+ "provider": "openai",
+ "family": "gpt5",
+ "created_at": "2025-12-10 10:49:19 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 400000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10.0,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-5.3-chat-latest",
+ "name": "GPT-5.3 Chat (latest)",
+ "provider": "openai",
+ "family": "gpt",
+ "created_at": "2026-03-03 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision",
+ "streaming",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.75,
+ "output_per_million": 14,
+ "cached_input_per_million": 0.175
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-03",
+ "cost": {
+ "input": 1.75,
+ "output": 14,
+ "cache_read": 0.175
+ },
+ "limit": {
+ "context": 128000,
+ "output": 16384
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "gpt-5.3-codex",
+ "name": "GPT-5.3 Codex",
+ "provider": "openai",
+ "family": "gpt-codex",
+ "created_at": "2026-02-05 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.75,
+ "output_per_million": 14,
+ "cached_input_per_million": 0.175
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2026-02-05",
+ "cost": {
+ "input": 1.75,
+ "output": 14,
+ "cache_read": 0.175
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "gpt-5.3-codex-spark",
+ "name": "GPT-5.3 Codex Spark",
+ "provider": "openai",
+ "family": "gpt-codex-spark",
+ "created_at": "2026-02-05 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 32000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.75,
+ "output_per_million": 14,
+ "cached_input_per_million": 0.175
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2026-02-05",
+ "cost": {
+ "input": 1.75,
+ "output": 14,
+ "cache_read": 0.175
+ },
+ "limit": {
+ "context": 128000,
+ "input": 100000,
+ "output": 32000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "gpt-5.4",
+ "name": "GPT-5.4",
+ "provider": "openai",
+ "family": "gpt",
+ "created_at": "2026-03-05 00:00:00 +0530",
+ "context_window": 1050000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.5,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.25
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2026-03-05",
+ "cost": {
+ "input": 2.5,
+ "output": 15,
+ "cache_read": 0.25,
+ "context_over_200k": {
+ "input": 5,
+ "output": 22.5,
+ "cache_read": 0.5
+ }
+ },
+ "limit": {
+ "context": 1050000,
+ "input": 922000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "gpt-5.4-2026-03-05",
+ "name": "GPT-5.4 20260305",
+ "provider": "openai",
+ "family": "gpt5",
+ "created_at": "2026-03-05 01:24:22 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 400000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10.0,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-5.4-mini",
+ "name": "GPT-5.4 mini",
+ "provider": "openai",
+ "family": "gpt-mini",
+ "created_at": "2026-03-17 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.75,
+ "output_per_million": 4.5,
+ "cached_input_per_million": 0.075
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2026-03-17",
+ "cost": {
+ "input": 0.75,
+ "output": 4.5,
+ "cache_read": 0.075
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "gpt-5.4-mini-2026-03-17",
+ "name": "GPT-5.4 Mini 20260317",
+ "provider": "openai",
+ "family": "gpt5",
+ "created_at": "2026-03-14 06:47:56 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 400000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10.0,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-5.4-nano",
+ "name": "GPT-5.4 nano",
+ "provider": "openai",
+ "family": "gpt-nano",
+ "created_at": "2026-03-17 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.2,
+ "output_per_million": 1.25,
+ "cached_input_per_million": 0.02
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2026-03-17",
+ "cost": {
+ "input": 0.2,
+ "output": 1.25,
+ "cache_read": 0.02
+ },
+ "limit": {
+ "context": 400000,
+ "input": 272000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "gpt-5.4-nano-2026-03-17",
+ "name": "GPT-5.4 Nano 20260317",
+ "provider": "openai",
+ "family": "gpt5",
+ "created_at": "2026-03-14 06:43:57 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 400000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10.0,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-5.4-pro",
+ "name": "GPT-5.4 Pro",
+ "provider": "openai",
+ "family": "gpt-pro",
+ "created_at": "2026-03-05 00:00:00 +0530",
+ "context_window": 1050000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision",
+ "streaming",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 30,
+ "output_per_million": 180
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2026-03-05",
+ "cost": {
+ "input": 30,
+ "output": 180,
+ "context_over_200k": {
+ "input": 60,
+ "output": 270
+ }
+ },
+ "limit": {
+ "context": 1050000,
+ "input": 922000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "gpt-5.4-pro-2026-03-05",
+ "name": "GPT-5.4 Pro 20260305",
+ "provider": "openai",
+ "family": "gpt5",
+ "created_at": "2026-03-05 02:57:37 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 400000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10.0,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-audio",
+ "name": "GPT-Audio",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-08-28 05:30:49 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-audio-1.5",
+ "name": "GPT-Audio 1.5",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2026-02-20 06:58:05 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-audio-2025-08-28",
+ "name": "GPT-Audio 20250828",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-08-27 06:25:46 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-audio-mini",
+ "name": "GPT-Audio Mini",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-10-03 22:50:27 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-audio-mini-2025-10-06",
+ "name": "GPT-Audio Mini 20251006",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-10-03 22:52:17 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-audio-mini-2025-12-15",
+ "name": "GPT-Audio Mini 20251215",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-12-15 06:23:28 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-image-1",
+ "name": "gpt-image-1",
+ "provider": "openai",
+ "family": "gpt-image",
+ "created_at": "2025-04-24 00:00:00 +0530",
+ "context_window": 0,
+ "max_output_tokens": 0,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "image"
+ ]
+ },
+ "capabilities": [
+ "vision",
+ "streaming"
+ ],
+ "pricing": {},
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-04-24",
+ "limit": {
+ "context": 0,
+ "input": 0,
+ "output": 0
+ }
+ }
+ },
+ {
+ "id": "gpt-image-1-mini",
+ "name": "gpt-image-1-mini",
+ "provider": "openai",
+ "family": "gpt-image",
+ "created_at": "2025-09-26 00:00:00 +0530",
+ "context_window": 0,
+ "max_output_tokens": 0,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text",
+ "image"
+ ]
+ },
+ "capabilities": [
+ "vision",
+ "streaming"
+ ],
+ "pricing": {},
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-09-26",
+ "limit": {
+ "context": 0,
+ "input": 0,
+ "output": 0
+ }
+ }
+ },
+ {
+ "id": "gpt-image-1.5",
+ "name": "gpt-image-1.5",
+ "provider": "openai",
+ "family": "gpt-image",
+ "created_at": "2025-11-25 00:00:00 +0530",
+ "context_window": 0,
+ "max_output_tokens": 0,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text",
+ "image"
+ ]
+ },
+ "capabilities": [
+ "vision",
+ "streaming"
+ ],
+ "pricing": {},
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-11-25",
+ "limit": {
+ "context": 0,
+ "input": 0,
+ "output": 0
+ }
+ }
+ },
+ {
+ "id": "gpt-realtime",
+ "name": "GPT-Realtime",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-08-27 10:45:01 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-realtime-1.5",
+ "name": "GPT-Realtime 1.5",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2026-02-19 06:07:49 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-realtime-2025-08-28",
+ "name": "GPT-Realtime 20250828",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-08-27 10:46:13 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-realtime-mini",
+ "name": "GPT-Realtime Mini",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-10-04 00:15:33 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-realtime-mini-2025-10-06",
+ "name": "GPT-Realtime Mini 20251006",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-10-04 00:16:15 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "gpt-realtime-mini-2025-12-15",
+ "name": "GPT-Realtime Mini 20251215",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-12-13 13:16:47 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "o1",
+ "name": "o1",
+ "provider": "openai",
+ "family": "o",
+ "created_at": "2024-12-05 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 100000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 60,
+ "cached_input_per_million": 7.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2024-12-05",
+ "cost": {
+ "input": 15,
+ "output": 60,
+ "cache_read": 7.5
+ },
+ "limit": {
+ "context": 200000,
+ "output": 100000
+ },
+ "knowledge": "2023-09"
+ }
+ },
+ {
+ "id": "o1-2024-12-17",
+ "name": "O1-20241217",
+ "provider": "openai",
+ "family": "o1",
+ "created_at": "2024-12-16 10:59:36 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 100000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15.0,
+ "output_per_million": 60.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "o1-mini",
+ "name": "o1-mini",
+ "provider": "openai",
+ "family": "o-mini",
+ "created_at": "2024-09-12 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.1,
+ "output_per_million": 4.4,
+ "cached_input_per_million": 0.55
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": false,
+ "last_updated": "2024-09-12",
+ "cost": {
+ "input": 1.1,
+ "output": 4.4,
+ "cache_read": 0.55
+ },
+ "limit": {
+ "context": 128000,
+ "output": 65536
+ },
+ "knowledge": "2023-09"
+ }
+ },
+ {
+ "id": "o1-preview",
+ "name": "o1-preview",
+ "provider": "openai",
+ "family": "o",
+ "created_at": "2024-09-12 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 60,
+ "cached_input_per_million": 7.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-09-12",
+ "cost": {
+ "input": 15,
+ "output": 60,
+ "cache_read": 7.5
+ },
+ "limit": {
+ "context": 128000,
+ "output": 32768
+ },
+ "knowledge": "2023-09"
+ }
+ },
+ {
+ "id": "o1-pro",
+ "name": "o1-pro",
+ "provider": "openai",
+ "family": "o-pro",
+ "created_at": "2025-03-19 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 100000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 150,
+ "output_per_million": 600
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-03-19",
+ "cost": {
+ "input": 150,
+ "output": 600
+ },
+ "limit": {
+ "context": 200000,
+ "output": 100000
+ },
+ "knowledge": "2023-09"
+ }
+ },
+ {
+ "id": "o1-pro-2025-03-19",
+ "name": "O1-Pro 20250319",
+ "provider": "openai",
+ "family": "o1_pro",
+ "created_at": "2025-03-18 04:15:04 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 100000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 150.0,
+ "output_per_million": 600.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "o3",
+ "name": "o3",
+ "provider": "openai",
+ "family": "o",
+ "created_at": "2025-04-16 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 100000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 8,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-04-16",
+ "cost": {
+ "input": 2,
+ "output": 8,
+ "cache_read": 0.5
+ },
+ "limit": {
+ "context": 200000,
+ "output": 100000
+ },
+ "knowledge": "2024-05"
+ }
+ },
+ {
+ "id": "o3-2025-04-16",
+ "name": "O3-20250416",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-04-08 22:58:21 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "o3-deep-research",
+ "name": "o3-deep-research",
+ "provider": "openai",
+ "family": "o",
+ "created_at": "2024-06-26 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 100000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 10,
+ "output_per_million": 40,
+ "cached_input_per_million": 2.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2024-06-26",
+ "cost": {
+ "input": 10,
+ "output": 40,
+ "cache_read": 2.5
+ },
+ "limit": {
+ "context": 200000,
+ "output": 100000
+ },
+ "knowledge": "2024-05"
+ }
+ },
+ {
+ "id": "o3-deep-research-2025-06-26",
+ "name": "O3-Deep Research 20250626",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-06-25 20:56:59 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "o3-mini",
+ "name": "o3-mini",
+ "provider": "openai",
+ "family": "o-mini",
+ "created_at": "2024-12-20 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 100000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.1,
+ "output_per_million": 4.4,
+ "cached_input_per_million": 0.55
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": false,
+ "last_updated": "2025-01-29",
+ "cost": {
+ "input": 1.1,
+ "output": 4.4,
+ "cache_read": 0.55
+ },
+ "limit": {
+ "context": 200000,
+ "output": 100000
+ },
+ "knowledge": "2024-05"
+ }
+ },
+ {
+ "id": "o3-mini-2025-01-31",
+ "name": "O3-Mini 20250131",
+ "provider": "openai",
+ "family": "o3_mini",
+ "created_at": "2025-01-28 02:06:40 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 100000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.1,
+ "output_per_million": 4.4
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "o3-pro",
+ "name": "o3-pro",
+ "provider": "openai",
+ "family": "o-pro",
+ "created_at": "2025-06-10 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 100000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 20,
+ "output_per_million": 80
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-06-10",
+ "cost": {
+ "input": 20,
+ "output": 80
+ },
+ "limit": {
+ "context": 200000,
+ "output": 100000
+ },
+ "knowledge": "2024-05"
+ }
+ },
+ {
+ "id": "o3-pro-2025-06-10",
+ "name": "O3-Pro 20250610",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-06-06 05:09:21 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "o4-mini",
+ "name": "o4-mini",
+ "provider": "openai",
+ "family": "o-mini",
+ "created_at": "2025-04-16 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 100000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.1,
+ "output_per_million": 4.4,
+ "cached_input_per_million": 0.28
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-04-16",
+ "cost": {
+ "input": 1.1,
+ "output": 4.4,
+ "cache_read": 0.28
+ },
+ "limit": {
+ "context": 200000,
+ "output": 100000
+ },
+ "knowledge": "2024-05"
+ }
+ },
+ {
+ "id": "o4-mini-2025-04-16",
+ "name": "O4 Mini 20250416",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-04-08 23:01:46 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "o4-mini-deep-research",
+ "name": "o4-mini-deep-research",
+ "provider": "openai",
+ "family": "o-mini",
+ "created_at": "2024-06-26 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 100000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision",
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 8,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2024-06-26",
+ "cost": {
+ "input": 2,
+ "output": 8,
+ "cache_read": 0.5
+ },
+ "limit": {
+ "context": 200000,
+ "output": 100000
+ },
+ "knowledge": "2024-05"
+ }
+ },
+ {
+ "id": "o4-mini-deep-research-2025-06-26",
+ "name": "O4 Mini Deep Research 20250626",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-06-25 21:12:01 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "omni-moderation-2024-09-26",
+ "name": "Omni Moderation 20240926",
+ "provider": "openai",
+ "family": "moderation",
+ "created_at": "2024-11-28 00:37:46 +0530",
+ "context_window": null,
+ "max_output_tokens": null,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text",
+ "moderation"
+ ]
+ },
+ "capabilities": [],
+ "pricing": {},
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "omni-moderation-latest",
+ "name": "Omni Moderation Latest",
+ "provider": "openai",
+ "family": "moderation",
+ "created_at": "2024-11-15 22:17:45 +0530",
+ "context_window": null,
+ "max_output_tokens": null,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text",
+ "moderation"
+ ]
+ },
+ "capabilities": [],
+ "pricing": {},
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "sora-2",
+ "name": "Sora 2",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-10-06 05:26:55 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "sora-2-pro",
+ "name": "Sora 2 Pro",
+ "provider": "openai",
+ "family": "other",
+ "created_at": "2025-10-06 05:27:43 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "text-embedding-3-large",
+ "name": "text-embedding-3-large",
+ "provider": "openai",
+ "family": "text-embedding",
+ "created_at": "2024-01-25 00:00:00 +0530",
+ "context_window": 8191,
+ "max_output_tokens": 3072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "batch"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.13
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": false,
+ "last_updated": "2024-01-25",
+ "cost": {
+ "input": 0.13,
+ "output": 0
+ },
+ "limit": {
+ "context": 8191,
+ "output": 3072
+ },
+ "knowledge": "2024-01"
+ }
+ },
+ {
+ "id": "text-embedding-3-small",
+ "name": "text-embedding-3-small",
+ "provider": "openai",
+ "family": "text-embedding",
+ "created_at": "2024-01-25 00:00:00 +0530",
+ "context_window": 8191,
+ "max_output_tokens": 1536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "batch"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.02
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": false,
+ "last_updated": "2024-01-25",
+ "cost": {
+ "input": 0.02,
+ "output": 0
+ },
+ "limit": {
+ "context": 8191,
+ "output": 1536
+ },
+ "knowledge": "2024-01"
+ }
+ },
+ {
+ "id": "text-embedding-ada-002",
+ "name": "text-embedding-ada-002",
+ "provider": "openai",
+ "family": "text-embedding",
+ "created_at": "2022-12-15 00:00:00 +0530",
+ "context_window": 8192,
+ "max_output_tokens": 1536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "batch"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "openai-internal",
+ "source": "models.dev",
+ "provider_id": "openai",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": false,
+ "last_updated": "2022-12-15",
+ "cost": {
+ "input": 0.1,
+ "output": 0
+ },
+ "limit": {
+ "context": 8192,
+ "output": 1536
+ },
+ "knowledge": "2022-12"
+ }
+ },
+ {
+ "id": "tts-1",
+ "name": "TTS-1",
+ "provider": "openai",
+ "family": "tts1",
+ "created_at": "2023-04-20 03:19:11 +0530",
+ "context_window": null,
+ "max_output_tokens": null,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15.0,
+ "output_per_million": 15.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "openai-internal"
+ }
+ },
+ {
+ "id": "tts-1-1106",
+ "name": "TTS-1 1106",
+ "provider": "openai",
+ "family": "tts1",
+ "created_at": "2023-11-04 04:44:01 +0530",
+ "context_window": null,
+ "max_output_tokens": null,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15.0,
+ "output_per_million": 15.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "tts-1-hd",
+ "name": "TTS-1 HD",
+ "provider": "openai",
+ "family": "tts1_hd",
+ "created_at": "2023-11-04 02:43:35 +0530",
+ "context_window": null,
+ "max_output_tokens": null,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 30.0,
+ "output_per_million": 30.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "tts-1-hd-1106",
+ "name": "TTS-1 HD 1106",
+ "provider": "openai",
+ "family": "tts1_hd",
+ "created_at": "2023-11-04 04:48:53 +0530",
+ "context_window": null,
+ "max_output_tokens": null,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text",
+ "audio"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 30.0,
+ "output_per_million": 30.0
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "system"
+ }
+ },
+ {
+ "id": "whisper-1",
+ "name": "Whisper 1",
+ "provider": "openai",
+ "family": "whisper",
+ "created_at": "2023-02-28 02:43:04 +0530",
+ "context_window": null,
+ "max_output_tokens": null,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "audio"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "streaming"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.006,
+ "output_per_million": 0.006
+ }
+ }
+ },
+ "metadata": {
+ "object": "model",
+ "owned_by": "openai-internal"
+ }
+ },
+ {
+ "id": "anthropic/claude-3.5-haiku",
+ "name": "Claude Haiku 3.5",
+ "provider": "openrouter",
+ "family": "claude-haiku",
+ "created_at": "2024-10-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": "2024-07-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.8,
+ "output_per_million": 4,
+ "cached_input_per_million": 0.08
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-10-22",
+ "cost": {
+ "input": 0.8,
+ "output": 4,
+ "cache_read": 0.08,
+ "cache_write": 1
+ },
+ "limit": {
+ "context": 200000,
+ "output": 8192
+ },
+ "knowledge": "2024-07-31"
+ }
+ },
+ {
+ "id": "anthropic/claude-3.7-sonnet",
+ "name": "Claude Sonnet 3.7",
+ "provider": "openrouter",
+ "family": "claude-sonnet",
+ "created_at": "2025-02-19 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 75,
+ "cached_input_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-02-19",
+ "cost": {
+ "input": 15,
+ "output": 75,
+ "cache_read": 1.5,
+ "cache_write": 18.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 128000
+ },
+ "knowledge": "2024-01"
+ }
+ },
+ {
+ "id": "anthropic/claude-haiku-4.5",
+ "name": "Claude Haiku 4.5",
+ "provider": "openrouter",
+ "family": "claude-haiku",
+ "created_at": "2025-10-15 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-02-28",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1,
+ "output_per_million": 5,
+ "cached_input_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-10-15",
+ "cost": {
+ "input": 1,
+ "output": 5,
+ "cache_read": 0.1,
+ "cache_write": 1.25
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-02-28"
+ }
+ },
+ {
+ "id": "anthropic/claude-opus-4",
+ "name": "Claude Opus 4",
+ "provider": "openrouter",
+ "family": "claude-opus",
+ "created_at": "2025-05-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 32000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 75,
+ "cached_input_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-22",
+ "cost": {
+ "input": 15,
+ "output": 75,
+ "cache_read": 1.5,
+ "cache_write": 18.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 32000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "anthropic/claude-opus-4.1",
+ "name": "Claude Opus 4.1",
+ "provider": "openrouter",
+ "family": "claude-opus",
+ "created_at": "2025-08-05 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 32000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 75,
+ "cached_input_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-05",
+ "cost": {
+ "input": 15,
+ "output": 75,
+ "cache_read": 1.5,
+ "cache_write": 18.75
+ },
+ "limit": {
+ "context": 200000,
+ "output": 32000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "anthropic/claude-opus-4.5",
+ "name": "Claude Opus 4.5",
+ "provider": "openrouter",
+ "family": "claude-opus",
+ "created_at": "2025-11-24 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 32000,
+ "knowledge_cutoff": "2025-05-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5,
+ "output_per_million": 25,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-11-24",
+ "cost": {
+ "input": 5,
+ "output": 25,
+ "cache_read": 0.5,
+ "cache_write": 6.25
+ },
+ "limit": {
+ "context": 200000,
+ "output": 32000
+ },
+ "knowledge": "2025-05-30"
+ }
+ },
+ {
+ "id": "anthropic/claude-opus-4.6",
+ "name": "Claude Opus 4.6",
+ "provider": "openrouter",
+ "family": "claude-opus",
+ "created_at": "2026-02-05 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-05-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5,
+ "output_per_million": 25,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-02-05",
+ "cost": {
+ "input": 5,
+ "output": 25,
+ "cache_read": 0.5,
+ "cache_write": 6.25,
+ "context_over_200k": {
+ "input": 10,
+ "output": 37.5,
+ "cache_read": 1,
+ "cache_write": 12.5
+ }
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 128000
+ },
+ "knowledge": "2025-05-30"
+ }
+ },
+ {
+ "id": "anthropic/claude-sonnet-4",
+ "name": "Claude Sonnet 4",
+ "provider": "openrouter",
+ "family": "claude-sonnet",
+ "created_at": "2025-05-22 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-03-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-22",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75,
+ "context_over_200k": {
+ "input": 6,
+ "output": 22.5,
+ "cache_read": 0.6,
+ "cache_write": 7.5
+ }
+ },
+ "limit": {
+ "context": 200000,
+ "output": 64000
+ },
+ "knowledge": "2025-03-31"
+ }
+ },
+ {
+ "id": "anthropic/claude-sonnet-4.5",
+ "name": "Claude Sonnet 4.5",
+ "provider": "openrouter",
+ "family": "claude-sonnet",
+ "created_at": "2025-09-29 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": "2025-07-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-29",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75,
+ "context_over_200k": {
+ "input": 6,
+ "output": 22.5,
+ "cache_read": 0.6,
+ "cache_write": 7.5
+ }
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 64000
+ },
+ "knowledge": "2025-07-31"
+ }
+ },
+ {
+ "id": "anthropic/claude-sonnet-4.6",
+ "name": "Claude Sonnet 4.6",
+ "provider": "openrouter",
+ "family": "claude-sonnet",
+ "created_at": "2026-02-17 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-02-17",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.3,
+ "cache_write": 3.75,
+ "context_over_200k": {
+ "input": 6,
+ "output": 22.5,
+ "cache_read": 0.6,
+ "cache_write": 7.5
+ }
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 128000
+ }
+ }
+ },
+ {
+ "id": "arcee-ai/trinity-large-preview:free",
+ "name": "Trinity Large Preview",
+ "provider": "openrouter",
+ "family": "trinity",
+ "created_at": "2026-01-28 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-28",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 131072,
+ "output": 131072
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "arcee-ai/trinity-large-thinking",
+ "name": "Trinity Large Thinking",
+ "provider": "openrouter",
+ "family": "trinity",
+ "created_at": "2026-04-01 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 80000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.22,
+ "output_per_million": 0.85
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-04-03",
+ "cost": {
+ "input": 0.22,
+ "output": 0.85
+ },
+ "limit": {
+ "context": 262144,
+ "output": 80000
+ }
+ }
+ },
+ {
+ "id": "black-forest-labs/flux.2-flex",
+ "name": "FLUX.2 Flex",
+ "provider": "openrouter",
+ "family": "flux",
+ "created_at": "2025-11-25 00:00:00 +0530",
+ "context_window": 67344,
+ "max_output_tokens": 67344,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "image",
+ "text"
+ ],
+ "output": [
+ "image"
+ ]
+ },
+ "capabilities": [
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-31",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 67344,
+ "output": 67344
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "black-forest-labs/flux.2-klein-4b",
+ "name": "FLUX.2 Klein 4B",
+ "provider": "openrouter",
+ "family": "flux",
+ "created_at": "2026-01-14 00:00:00 +0530",
+ "context_window": 40960,
+ "max_output_tokens": 40960,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "image",
+ "text"
+ ],
+ "output": [
+ "image"
+ ]
+ },
+ "capabilities": [
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-31",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 40960,
+ "output": 40960
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "black-forest-labs/flux.2-max",
+ "name": "FLUX.2 Max",
+ "provider": "openrouter",
+ "family": "flux",
+ "created_at": "2025-12-16 00:00:00 +0530",
+ "context_window": 46864,
+ "max_output_tokens": 46864,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "image",
+ "text"
+ ],
+ "output": [
+ "image"
+ ]
+ },
+ "capabilities": [
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-31",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 46864,
+ "output": 46864
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "black-forest-labs/flux.2-pro",
+ "name": "FLUX.2 Pro",
+ "provider": "openrouter",
+ "family": "flux",
+ "created_at": "2025-11-25 00:00:00 +0530",
+ "context_window": 46864,
+ "max_output_tokens": 46864,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "image",
+ "text"
+ ],
+ "output": [
+ "image"
+ ]
+ },
+ "capabilities": [
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-31",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 46864,
+ "output": 46864
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "bytedance-seed/seedream-4.5",
+ "name": "Seedream 4.5",
+ "provider": "openrouter",
+ "family": "seed",
+ "created_at": "2025-12-23 00:00:00 +0530",
+ "context_window": 4096,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "image",
+ "text"
+ ],
+ "output": [
+ "image"
+ ]
+ },
+ "capabilities": [
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-31",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 4096,
+ "output": 4096
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "cognitivecomputations/dolphin-mistral-24b-venice-edition:free",
+ "name": "Uncensored (free)",
+ "provider": "openrouter",
+ "family": "mistral",
+ "created_at": "2025-07-09 00:00:00 +0530",
+ "context_window": 32768,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "structured_output"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-31",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 32768,
+ "output": 32768
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "deepseek/deepseek-chat-v3-0324",
+ "name": "DeepSeek V3 0324",
+ "provider": "openrouter",
+ "family": "deepseek",
+ "created_at": "2025-03-24 00:00:00 +0530",
+ "context_window": 16384,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "structured_output"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-03-24",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 16384,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "deepseek/deepseek-chat-v3.1",
+ "name": "DeepSeek-V3.1",
+ "provider": "openrouter",
+ "family": "deepseek",
+ "created_at": "2025-08-21 00:00:00 +0530",
+ "context_window": 163840,
+ "max_output_tokens": 163840,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.2,
+ "output_per_million": 0.8
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-21",
+ "cost": {
+ "input": 0.2,
+ "output": 0.8
+ },
+ "limit": {
+ "context": 163840,
+ "output": 163840
+ },
+ "knowledge": "2025-07"
+ }
+ },
+ {
+ "id": "deepseek/deepseek-r1",
+ "name": "DeepSeek: R1",
+ "provider": "openrouter",
+ "family": "deepseek-thinking",
+ "created_at": "2025-01-20 00:00:00 +0530",
+ "context_window": 64000,
+ "max_output_tokens": 16000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.7,
+ "output_per_million": 2.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-01-20",
+ "cost": {
+ "input": 0.7,
+ "output": 2.5
+ },
+ "limit": {
+ "context": 64000,
+ "output": 16000
+ },
+ "knowledge": "2024-07"
+ }
+ },
+ {
+ "id": "deepseek/deepseek-r1-distill-llama-70b",
+ "name": "DeepSeek R1 Distill Llama 70B",
+ "provider": "openrouter",
+ "family": "deepseek-thinking",
+ "created_at": "2025-01-23 00:00:00 +0530",
+ "context_window": 8192,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-01-23",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 8192,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "deepseek/deepseek-v3.1-terminus",
+ "name": "DeepSeek V3.1 Terminus",
+ "provider": "openrouter",
+ "family": "deepseek",
+ "created_at": "2025-09-22 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.27,
+ "output_per_million": 1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-22",
+ "cost": {
+ "input": 0.27,
+ "output": 1
+ },
+ "limit": {
+ "context": 131072,
+ "output": 65536
+ },
+ "knowledge": "2025-07"
+ }
+ },
+ {
+ "id": "deepseek/deepseek-v3.1-terminus:exacto",
+ "name": "DeepSeek V3.1 Terminus (exacto)",
+ "provider": "openrouter",
+ "family": "deepseek",
+ "created_at": "2025-09-22 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.27,
+ "output_per_million": 1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-22",
+ "cost": {
+ "input": 0.27,
+ "output": 1
+ },
+ "limit": {
+ "context": 131072,
+ "output": 65536
+ },
+ "knowledge": "2025-07"
+ }
+ },
+ {
+ "id": "deepseek/deepseek-v3.2",
+ "name": "DeepSeek V3.2",
+ "provider": "openrouter",
+ "family": "deepseek",
+ "created_at": "2025-12-01 00:00:00 +0530",
+ "context_window": 163840,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.28,
+ "output_per_million": 0.4
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-12-01",
+ "cost": {
+ "input": 0.28,
+ "output": 0.4
+ },
+ "limit": {
+ "context": 163840,
+ "output": 65536
+ },
+ "knowledge": "2024-07"
+ }
+ },
+ {
+ "id": "deepseek/deepseek-v3.2-speciale",
+ "name": "DeepSeek V3.2 Speciale",
+ "provider": "openrouter",
+ "family": "deepseek",
+ "created_at": "2025-12-01 00:00:00 +0530",
+ "context_window": 163840,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.27,
+ "output_per_million": 0.41
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-12-01",
+ "cost": {
+ "input": 0.27,
+ "output": 0.41
+ },
+ "limit": {
+ "context": 163840,
+ "output": 65536
+ },
+ "knowledge": "2024-07"
+ }
+ },
+ {
+ "id": "google/gemini-2.0-flash-001",
+ "name": "Gemini 2.0 Flash",
+ "provider": "openrouter",
+ "family": "gemini-flash",
+ "created_at": "2024-12-11 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.4,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-12-11",
+ "cost": {
+ "input": 0.1,
+ "output": 0.4,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 8192
+ },
+ "knowledge": "2024-06"
+ }
+ },
+ {
+ "id": "google/gemini-2.5-flash",
+ "name": "Gemini 2.5 Flash",
+ "provider": "openrouter",
+ "family": "gemini-flash",
+ "created_at": "2025-07-17 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 2.5,
+ "cached_input_per_million": 0.0375
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-07-17",
+ "cost": {
+ "input": 0.3,
+ "output": 2.5,
+ "cache_read": 0.0375
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "google/gemini-2.5-flash-lite",
+ "name": "Gemini 2.5 Flash Lite",
+ "provider": "openrouter",
+ "family": "gemini-flash-lite",
+ "created_at": "2025-06-17 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.4,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-06-17",
+ "cost": {
+ "input": 0.1,
+ "output": 0.4,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "google/gemini-2.5-flash-lite-preview-09-2025",
+ "name": "Gemini 2.5 Flash Lite Preview 09-25",
+ "provider": "openrouter",
+ "family": "gemini-flash-lite",
+ "created_at": "2025-09-25 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.4,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-25",
+ "cost": {
+ "input": 0.1,
+ "output": 0.4,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "google/gemini-2.5-flash-preview-09-2025",
+ "name": "Gemini 2.5 Flash Preview 09-25",
+ "provider": "openrouter",
+ "family": "gemini-flash",
+ "created_at": "2025-09-25 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 2.5,
+ "cached_input_per_million": 0.031
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-25",
+ "cost": {
+ "input": 0.3,
+ "output": 2.5,
+ "cache_read": 0.031
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "google/gemini-2.5-pro",
+ "name": "Gemini 2.5 Pro",
+ "provider": "openrouter",
+ "family": "gemini-pro",
+ "created_at": "2025-03-20 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.31
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-06-05",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.31
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "google/gemini-2.5-pro-preview-05-06",
+ "name": "Gemini 2.5 Pro Preview 05-06",
+ "provider": "openrouter",
+ "family": "gemini-pro",
+ "created_at": "2025-05-06 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.31
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-06",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.31
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "google/gemini-2.5-pro-preview-06-05",
+ "name": "Gemini 2.5 Pro Preview 06-05",
+ "provider": "openrouter",
+ "family": "gemini-pro",
+ "created_at": "2025-06-05 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.31
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-06-05",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.31
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "google/gemini-3-flash-preview",
+ "name": "Gemini 3 Flash Preview",
+ "provider": "openrouter",
+ "family": "gemini-flash",
+ "created_at": "2025-12-17 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 3,
+ "cached_input_per_million": 0.05
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-12-17",
+ "interleaved": {
+ "field": "reasoning_details"
+ },
+ "cost": {
+ "input": 0.5,
+ "output": 3,
+ "cache_read": 0.05
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "google/gemini-3-pro-preview",
+ "name": "Gemini 3 Pro Preview",
+ "provider": "openrouter",
+ "family": "gemini-pro",
+ "created_at": "2025-11-18 00:00:00 +0530",
+ "context_window": 1050000,
+ "max_output_tokens": 66000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 12
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-11",
+ "interleaved": {
+ "field": "reasoning_details"
+ },
+ "cost": {
+ "input": 2,
+ "output": 12
+ },
+ "limit": {
+ "context": 1050000,
+ "output": 66000
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "google/gemini-3.1-flash-lite-preview",
+ "name": "Gemini 3.1 Flash Lite Preview",
+ "provider": "openrouter",
+ "family": "gemini-flash-lite",
+ "created_at": "2026-03-03 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video",
+ "pdf",
+ "audio"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.25,
+ "output_per_million": 1.5,
+ "cached_input_per_million": 0.025,
+ "reasoning_output_per_million": 1.5
+ }
+ },
+ "audio_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-03",
+ "cost": {
+ "input": 0.25,
+ "output": 1.5,
+ "reasoning": 1.5,
+ "cache_read": 0.025,
+ "cache_write": 0.083,
+ "input_audio": 0.5,
+ "output_audio": 0.5
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ }
+ }
+ },
+ {
+ "id": "google/gemini-3.1-pro-preview",
+ "name": "Gemini 3.1 Pro Preview",
+ "provider": "openrouter",
+ "family": "gemini-pro",
+ "created_at": "2026-02-19 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 12,
+ "reasoning_output_per_million": 12
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-02-19",
+ "interleaved": {
+ "field": "reasoning_details"
+ },
+ "cost": {
+ "input": 2,
+ "output": 12,
+ "reasoning": 12,
+ "context_over_200k": {
+ "input": 4,
+ "output": 18,
+ "cache_read": 0.4
+ }
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "google/gemini-3.1-pro-preview-customtools",
+ "name": "Gemini 3.1 Pro Preview Custom Tools",
+ "provider": "openrouter",
+ "family": "gemini-pro",
+ "created_at": "2026-02-19 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 12,
+ "reasoning_output_per_million": 12
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-02-19",
+ "interleaved": {
+ "field": "reasoning_details"
+ },
+ "cost": {
+ "input": 2,
+ "output": 12,
+ "reasoning": 12,
+ "context_over_200k": {
+ "input": 4,
+ "output": 18,
+ "cache_read": 0.4
+ }
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "google/gemma-2-9b-it",
+ "name": "Gemma 2 9B",
+ "provider": "openrouter",
+ "family": "gemma",
+ "created_at": "2024-06-28 00:00:00 +0530",
+ "context_window": 8192,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.03,
+ "output_per_million": 0.09
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-06-28",
+ "cost": {
+ "input": 0.03,
+ "output": 0.09
+ },
+ "limit": {
+ "context": 8192,
+ "output": 8192
+ },
+ "knowledge": "2024-06"
+ }
+ },
+ {
+ "id": "google/gemma-3-12b-it",
+ "name": "Gemma 3 12B",
+ "provider": "openrouter",
+ "family": "gemma",
+ "created_at": "2025-03-13 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.03,
+ "output_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-03-13",
+ "cost": {
+ "input": 0.03,
+ "output": 0.1
+ },
+ "limit": {
+ "context": 131072,
+ "output": 131072
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "google/gemma-3-12b-it:free",
+ "name": "Gemma 3 12B (free)",
+ "provider": "openrouter",
+ "family": "gemma",
+ "created_at": "2025-03-13 00:00:00 +0530",
+ "context_window": 32768,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-03-13",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 32768,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "google/gemma-3-27b-it",
+ "name": "Gemma 3 27B",
+ "provider": "openrouter",
+ "family": "gemma",
+ "created_at": "2025-03-12 00:00:00 +0530",
+ "context_window": 96000,
+ "max_output_tokens": 96000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.04,
+ "output_per_million": 0.15
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-03-12",
+ "cost": {
+ "input": 0.04,
+ "output": 0.15
+ },
+ "limit": {
+ "context": 96000,
+ "output": 96000
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "google/gemma-3-27b-it:free",
+ "name": "Gemma 3 27B (free)",
+ "provider": "openrouter",
+ "family": "gemma",
+ "created_at": "2025-03-12 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-03-12",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 131072,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "google/gemma-3-4b-it",
+ "name": "Gemma 3 4B",
+ "provider": "openrouter",
+ "family": "gemma",
+ "created_at": "2025-03-13 00:00:00 +0530",
+ "context_window": 96000,
+ "max_output_tokens": 96000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.01703,
+ "output_per_million": 0.06815
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-03-13",
+ "cost": {
+ "input": 0.01703,
+ "output": 0.06815
+ },
+ "limit": {
+ "context": 96000,
+ "output": 96000
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "google/gemma-3-4b-it:free",
+ "name": "Gemma 3 4B (free)",
+ "provider": "openrouter",
+ "family": "gemma",
+ "created_at": "2025-03-13 00:00:00 +0530",
+ "context_window": 32768,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-03-13",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 32768,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "google/gemma-3n-e2b-it:free",
+ "name": "Gemma 3n 2B (free)",
+ "provider": "openrouter",
+ "family": "gemma",
+ "created_at": "2025-07-09 00:00:00 +0530",
+ "context_window": 8192,
+ "max_output_tokens": 2000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-07-09",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 8192,
+ "output": 2000
+ },
+ "knowledge": "2024-06"
+ }
+ },
+ {
+ "id": "google/gemma-3n-e4b-it",
+ "name": "Gemma 3n 4B",
+ "provider": "openrouter",
+ "family": "gemma",
+ "created_at": "2025-05-20 00:00:00 +0530",
+ "context_window": 32768,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.02,
+ "output_per_million": 0.04
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-20",
+ "cost": {
+ "input": 0.02,
+ "output": 0.04
+ },
+ "limit": {
+ "context": 32768,
+ "output": 32768
+ },
+ "knowledge": "2024-06"
+ }
+ },
+ {
+ "id": "google/gemma-3n-e4b-it:free",
+ "name": "Gemma 3n 4B (free)",
+ "provider": "openrouter",
+ "family": "gemma",
+ "created_at": "2025-05-20 00:00:00 +0530",
+ "context_window": 8192,
+ "max_output_tokens": 2000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-20",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 8192,
+ "output": 2000
+ },
+ "knowledge": "2024-06"
+ }
+ },
+ {
+ "id": "google/gemma-4-26b-a4b-it",
+ "name": "Gemma 4 26B A4B",
+ "provider": "openrouter",
+ "family": "gemma",
+ "created_at": "2026-04-03 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.13,
+ "output_per_million": 0.4
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-04-03",
+ "cost": {
+ "input": 0.13,
+ "output": 0.4
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "google/gemma-4-26b-a4b-it:free",
+ "name": "Gemma 4 26B A4B (free)",
+ "provider": "openrouter",
+ "family": "gemma",
+ "created_at": "2026-04-03 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-04-03",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 262144,
+ "output": 32768
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "google/gemma-4-31b-it",
+ "name": "Gemma 4 31B",
+ "provider": "openrouter",
+ "family": "gemma",
+ "created_at": "2026-04-02 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.14,
+ "output_per_million": 0.4
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-04-02",
+ "cost": {
+ "input": 0.14,
+ "output": 0.4
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "google/gemma-4-31b-it:free",
+ "name": "Gemma 4 31B (free)",
+ "provider": "openrouter",
+ "family": "gemma",
+ "created_at": "2026-04-02 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-04-02",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 262144,
+ "output": 32768
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "inception/mercury-2",
+ "name": "Mercury 2",
+ "provider": "openrouter",
+ "family": "mercury",
+ "created_at": "2026-03-04 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 50000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.25,
+ "output_per_million": 0.75,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-03-04",
+ "cost": {
+ "input": 0.25,
+ "output": 0.75,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 128000,
+ "output": 50000
+ }
+ }
+ },
+ {
+ "id": "inception/mercury-edit-2",
+ "name": "Mercury Edit 2",
+ "provider": "openrouter",
+ "family": null,
+ "created_at": "2026-03-30 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.25,
+ "output_per_million": 0.75,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-03-30",
+ "cost": {
+ "input": 0.25,
+ "output": 0.75,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 128000,
+ "output": 8192
+ }
+ }
+ },
+ {
+ "id": "liquid/lfm-2.5-1.2b-instruct:free",
+ "name": "LFM2.5-1.2B-Instruct (free)",
+ "provider": "openrouter",
+ "family": "liquid",
+ "created_at": "2026-01-20 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-28",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 131072,
+ "output": 32768
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "liquid/lfm-2.5-1.2b-thinking:free",
+ "name": "LFM2.5-1.2B-Thinking (free)",
+ "provider": "openrouter",
+ "family": "liquid",
+ "created_at": "2026-01-20 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "reasoning"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-28",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 131072,
+ "output": 32768
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "meta-llama/llama-3.2-11b-vision-instruct",
+ "name": "Llama 3.2 11B Vision Instruct",
+ "provider": "openrouter",
+ "family": "llama",
+ "created_at": "2024-09-25 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-09-25",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 131072,
+ "output": 8192
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "meta-llama/llama-3.2-3b-instruct:free",
+ "name": "Llama 3.2 3B Instruct (free)",
+ "provider": "openrouter",
+ "family": "llama",
+ "created_at": "2024-09-25 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-09-25",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 131072,
+ "output": 131072
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "meta-llama/llama-3.3-70b-instruct:free",
+ "name": "Llama 3.3 70B Instruct (free)",
+ "provider": "openrouter",
+ "family": "llama",
+ "created_at": "2024-12-06 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-12-06",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 131072,
+ "output": 131072
+ },
+ "knowledge": "2024-12"
+ }
+ },
+ {
+ "id": "minimax/minimax-01",
+ "name": "MiniMax-01",
+ "provider": "openrouter",
+ "family": "minimax",
+ "created_at": "2025-01-15 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 1000000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.2,
+ "output_per_million": 1.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-01-15",
+ "cost": {
+ "input": 0.2,
+ "output": 1.1
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 1000000
+ }
+ }
+ },
+ {
+ "id": "minimax/minimax-m1",
+ "name": "MiniMax M1",
+ "provider": "openrouter",
+ "family": "minimax",
+ "created_at": "2025-06-17 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 40000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 2.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-06-17",
+ "cost": {
+ "input": 0.4,
+ "output": 2.2
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 40000
+ }
+ }
+ },
+ {
+ "id": "minimax/minimax-m2",
+ "name": "MiniMax M2",
+ "provider": "openrouter",
+ "family": "minimax",
+ "created_at": "2025-10-23 00:00:00 +0530",
+ "context_window": 196600,
+ "max_output_tokens": 118000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.28,
+ "output_per_million": 1.15,
+ "cached_input_per_million": 0.28
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-10-23",
+ "interleaved": {
+ "field": "reasoning_details"
+ },
+ "cost": {
+ "input": 0.28,
+ "output": 1.15,
+ "cache_read": 0.28,
+ "cache_write": 1.15
+ },
+ "limit": {
+ "context": 196600,
+ "output": 118000
+ }
+ }
+ },
+ {
+ "id": "minimax/minimax-m2.1",
+ "name": "MiniMax M2.1",
+ "provider": "openrouter",
+ "family": "minimax",
+ "created_at": "2025-12-23 00:00:00 +0530",
+ "context_window": 204800,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 1.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-12-23",
+ "interleaved": {
+ "field": "reasoning_details"
+ },
+ "cost": {
+ "input": 0.3,
+ "output": 1.2
+ },
+ "limit": {
+ "context": 204800,
+ "output": 131072
+ }
+ }
+ },
+ {
+ "id": "minimax/minimax-m2.5",
+ "name": "MiniMax M2.5",
+ "provider": "openrouter",
+ "family": "minimax",
+ "created_at": "2026-02-12 00:00:00 +0530",
+ "context_window": 204800,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 1.2,
+ "cached_input_per_million": 0.03
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-02-12",
+ "interleaved": {
+ "field": "reasoning_details"
+ },
+ "cost": {
+ "input": 0.3,
+ "output": 1.2,
+ "cache_read": 0.03
+ },
+ "limit": {
+ "context": 204800,
+ "output": 131072
+ }
+ }
+ },
+ {
+ "id": "minimax/minimax-m2.5:free",
+ "name": "MiniMax M2.5 (free)",
+ "provider": "openrouter",
+ "family": "minimax",
+ "created_at": "2026-02-12 00:00:00 +0530",
+ "context_window": 204800,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-02-12",
+ "interleaved": {
+ "field": "reasoning_details"
+ },
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 204800,
+ "output": 131072
+ }
+ }
+ },
+ {
+ "id": "minimax/minimax-m2.7",
+ "name": "MiniMax M2.7",
+ "provider": "openrouter",
+ "family": "minimax",
+ "created_at": "2026-03-18 00:00:00 +0530",
+ "context_window": 204800,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 1.2,
+ "cached_input_per_million": 0.06
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-03-18",
+ "cost": {
+ "input": 0.3,
+ "output": 1.2,
+ "cache_read": 0.06,
+ "cache_write": 0.375
+ },
+ "limit": {
+ "context": 204800,
+ "output": 131072
+ }
+ }
+ },
+ {
+ "id": "mistralai/codestral-2508",
+ "name": "Codestral 2508",
+ "provider": "openrouter",
+ "family": "codestral",
+ "created_at": "2025-08-01 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 256000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 0.9
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-01",
+ "cost": {
+ "input": 0.3,
+ "output": 0.9
+ },
+ "limit": {
+ "context": 256000,
+ "output": 256000
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "mistralai/devstral-2512",
+ "name": "Devstral 2 2512",
+ "provider": "openrouter",
+ "family": "devstral",
+ "created_at": "2025-09-12 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-12",
+ "cost": {
+ "input": 0.15,
+ "output": 0.6
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2025-12"
+ }
+ },
+ {
+ "id": "mistralai/devstral-medium-2507",
+ "name": "Devstral Medium",
+ "provider": "openrouter",
+ "family": "devstral",
+ "created_at": "2025-07-10 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-10",
+ "cost": {
+ "input": 0.4,
+ "output": 2
+ },
+ "limit": {
+ "context": 131072,
+ "output": 131072
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "mistralai/devstral-small-2505",
+ "name": "Devstral Small",
+ "provider": "openrouter",
+ "family": "devstral",
+ "created_at": "2025-05-07 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.06,
+ "output_per_million": 0.12
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-05-07",
+ "cost": {
+ "input": 0.06,
+ "output": 0.12
+ },
+ "limit": {
+ "context": 128000,
+ "output": 128000
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "mistralai/devstral-small-2507",
+ "name": "Devstral Small 1.1",
+ "provider": "openrouter",
+ "family": "devstral",
+ "created_at": "2025-07-10 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-10",
+ "cost": {
+ "input": 0.1,
+ "output": 0.3
+ },
+ "limit": {
+ "context": 131072,
+ "output": 131072
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "mistralai/mistral-medium-3",
+ "name": "Mistral Medium 3",
+ "provider": "openrouter",
+ "family": "mistral-medium",
+ "created_at": "2025-05-07 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-07",
+ "cost": {
+ "input": 0.4,
+ "output": 2
+ },
+ "limit": {
+ "context": 131072,
+ "output": 131072
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "mistralai/mistral-medium-3.1",
+ "name": "Mistral Medium 3.1",
+ "provider": "openrouter",
+ "family": "mistral-medium",
+ "created_at": "2025-08-12 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-12",
+ "cost": {
+ "input": 0.4,
+ "output": 2
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "mistralai/mistral-small-2603",
+ "name": "Mistral Small 4",
+ "provider": "openrouter",
+ "family": "mistral-small",
+ "created_at": "2026-03-16 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-16",
+ "cost": {
+ "input": 0.15,
+ "output": 0.6
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "mistralai/mistral-small-3.1-24b-instruct",
+ "name": "Mistral Small 3.1 24B Instruct",
+ "provider": "openrouter",
+ "family": "mistral-small",
+ "created_at": "2025-03-17 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-03-17",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 128000,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "mistralai/mistral-small-3.2-24b-instruct",
+ "name": "Mistral Small 3.2 24B Instruct",
+ "provider": "openrouter",
+ "family": "mistral-small",
+ "created_at": "2025-06-20 00:00:00 +0530",
+ "context_window": 96000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-06-20",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 96000,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "moonshotai/kimi-k2",
+ "name": "Kimi K2",
+ "provider": "openrouter",
+ "family": "kimi",
+ "created_at": "2025-07-11 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.55,
+ "output_per_million": 2.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-11",
+ "cost": {
+ "input": 0.55,
+ "output": 2.2
+ },
+ "limit": {
+ "context": 131072,
+ "output": 32768
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "moonshotai/kimi-k2-0905",
+ "name": "Kimi K2 Instruct 0905",
+ "provider": "openrouter",
+ "family": "kimi",
+ "created_at": "2025-09-05 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 2.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-05",
+ "cost": {
+ "input": 0.6,
+ "output": 2.5
+ },
+ "limit": {
+ "context": 262144,
+ "output": 16384
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "moonshotai/kimi-k2-0905:exacto",
+ "name": "Kimi K2 Instruct 0905 (exacto)",
+ "provider": "openrouter",
+ "family": "kimi",
+ "created_at": "2025-09-05 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 2.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-05",
+ "cost": {
+ "input": 0.6,
+ "output": 2.5
+ },
+ "limit": {
+ "context": 262144,
+ "output": 16384
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "moonshotai/kimi-k2-thinking",
+ "name": "Kimi K2 Thinking",
+ "provider": "openrouter",
+ "family": "kimi-thinking",
+ "created_at": "2025-11-06 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 2.5,
+ "cached_input_per_million": 0.15
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-11-06",
+ "interleaved": {
+ "field": "reasoning_details"
+ },
+ "cost": {
+ "input": 0.6,
+ "output": 2.5,
+ "cache_read": 0.15
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2024-08"
+ }
+ },
+ {
+ "id": "moonshotai/kimi-k2.5",
+ "name": "Kimi K2.5",
+ "provider": "openrouter",
+ "family": "kimi",
+ "created_at": "2026-01-27 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 3,
+ "cached_input_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-01-27",
+ "interleaved": {
+ "field": "reasoning_details"
+ },
+ "cost": {
+ "input": 0.6,
+ "output": 3,
+ "cache_read": 0.1
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "nousresearch/hermes-3-llama-3.1-405b:free",
+ "name": "Hermes 3 405B Instruct (free)",
+ "provider": "openrouter",
+ "family": "hermes",
+ "created_at": "2024-08-16 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "reasoning"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-08-16",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 131072,
+ "output": 131072
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "nousresearch/hermes-4-405b",
+ "name": "Hermes 4 405B",
+ "provider": "openrouter",
+ "family": "hermes",
+ "created_at": "2025-08-25 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1,
+ "output_per_million": 3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-25",
+ "cost": {
+ "input": 1,
+ "output": 3
+ },
+ "limit": {
+ "context": 131072,
+ "output": 131072
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "nousresearch/hermes-4-70b",
+ "name": "Hermes 4 70B",
+ "provider": "openrouter",
+ "family": "hermes",
+ "created_at": "2025-08-25 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.13,
+ "output_per_million": 0.4
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-25",
+ "cost": {
+ "input": 0.13,
+ "output": 0.4
+ },
+ "limit": {
+ "context": 131072,
+ "output": 131072
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "nvidia/nemotron-3-nano-30b-a3b:free",
+ "name": "Nemotron 3 Nano 30B A3B (free)",
+ "provider": "openrouter",
+ "family": "nemotron",
+ "created_at": "2025-12-14 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 256000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-31",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 256000,
+ "output": 256000
+ },
+ "knowledge": "2025-11"
+ }
+ },
+ {
+ "id": "nvidia/nemotron-3-super-120b-a12b",
+ "name": "Nemotron 3 Super",
+ "provider": "openrouter",
+ "family": "nemotron",
+ "created_at": "2026-03-11 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-03-11",
+ "cost": {
+ "input": 0.1,
+ "output": 0.5
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "nvidia/nemotron-3-super-120b-a12b:free",
+ "name": "Nemotron 3 Super (free)",
+ "provider": "openrouter",
+ "family": "nemotron",
+ "created_at": "2026-03-11 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-03-11",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "nvidia/nemotron-nano-12b-v2-vl:free",
+ "name": "Nemotron Nano 12B 2 VL (free)",
+ "provider": "openrouter",
+ "family": "nemotron",
+ "created_at": "2025-10-28 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-31",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 128000,
+ "output": 128000
+ },
+ "knowledge": "2025-11"
+ }
+ },
+ {
+ "id": "nvidia/nemotron-nano-9b-v2",
+ "name": "nvidia-nemotron-nano-9b-v2",
+ "provider": "openrouter",
+ "family": "nemotron",
+ "created_at": "2025-08-18 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.04,
+ "output_per_million": 0.16
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-18",
+ "cost": {
+ "input": 0.04,
+ "output": 0.16
+ },
+ "limit": {
+ "context": 131072,
+ "output": 131072
+ },
+ "knowledge": "2024-09"
+ }
+ },
+ {
+ "id": "nvidia/nemotron-nano-9b-v2:free",
+ "name": "Nemotron Nano 9B V2 (free)",
+ "provider": "openrouter",
+ "family": "nemotron",
+ "created_at": "2025-09-05 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-18",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 128000,
+ "output": 128000
+ },
+ "knowledge": "2024-09"
+ }
+ },
+ {
+ "id": "openai/gpt-4.1",
+ "name": "GPT-4.1",
+ "provider": "openrouter",
+ "family": "gpt",
+ "created_at": "2025-04-14 00:00:00 +0530",
+ "context_window": 1047576,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 8,
+ "cached_input_per_million": 0.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-04-14",
+ "cost": {
+ "input": 2,
+ "output": 8,
+ "cache_read": 0.5
+ },
+ "limit": {
+ "context": 1047576,
+ "output": 32768
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "openai/gpt-4.1-mini",
+ "name": "GPT-4.1 Mini",
+ "provider": "openrouter",
+ "family": "gpt-mini",
+ "created_at": "2025-04-14 00:00:00 +0530",
+ "context_window": 1047576,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 1.6,
+ "cached_input_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-04-14",
+ "cost": {
+ "input": 0.4,
+ "output": 1.6,
+ "cache_read": 0.1
+ },
+ "limit": {
+ "context": 1047576,
+ "output": 32768
+ },
+ "knowledge": "2024-04"
+ }
+ },
+ {
+ "id": "openai/gpt-4o-mini",
+ "name": "GPT-4o-mini",
+ "provider": "openrouter",
+ "family": "gpt-mini",
+ "created_at": "2024-07-18 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6,
+ "cached_input_per_million": 0.08
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-07-18",
+ "cost": {
+ "input": 0.15,
+ "output": 0.6,
+ "cache_read": 0.08
+ },
+ "limit": {
+ "context": 128000,
+ "output": 16384
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "openai/gpt-5",
+ "name": "GPT-5",
+ "provider": "openrouter",
+ "family": "gpt",
+ "created_at": "2025-08-07 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-10-01",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-07",
+ "cost": {
+ "input": 1.25,
+ "output": 10
+ },
+ "limit": {
+ "context": 400000,
+ "output": 128000
+ },
+ "knowledge": "2024-10-01"
+ }
+ },
+ {
+ "id": "openai/gpt-5-chat",
+ "name": "GPT-5 Chat (latest)",
+ "provider": "openrouter",
+ "family": "gpt-codex",
+ "created_at": "2025-08-07 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-07",
+ "cost": {
+ "input": 1.25,
+ "output": 10
+ },
+ "limit": {
+ "context": 400000,
+ "output": 128000
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "openai/gpt-5-codex",
+ "name": "GPT-5 Codex",
+ "provider": "openrouter",
+ "family": "gpt-codex",
+ "created_at": "2025-09-15 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-10-01",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-15",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.125
+ },
+ "limit": {
+ "context": 400000,
+ "output": 128000
+ },
+ "knowledge": "2024-10-01"
+ }
+ },
+ {
+ "id": "openai/gpt-5-image",
+ "name": "GPT-5 Image",
+ "provider": "openrouter",
+ "family": "gpt",
+ "created_at": "2025-10-14 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-10-01",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text",
+ "image"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 5,
+ "output_per_million": 10,
+ "cached_input_per_million": 1.25
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-10-14",
+ "cost": {
+ "input": 5,
+ "output": 10,
+ "cache_read": 1.25
+ },
+ "limit": {
+ "context": 400000,
+ "output": 128000
+ },
+ "knowledge": "2024-10-01"
+ }
+ },
+ {
+ "id": "openai/gpt-5-mini",
+ "name": "GPT-5 Mini",
+ "provider": "openrouter",
+ "family": "gpt-mini",
+ "created_at": "2025-08-07 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-10-01",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.25,
+ "output_per_million": 2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-07",
+ "cost": {
+ "input": 0.25,
+ "output": 2
+ },
+ "limit": {
+ "context": 400000,
+ "output": 128000
+ },
+ "knowledge": "2024-10-01"
+ }
+ },
+ {
+ "id": "openai/gpt-5-nano",
+ "name": "GPT-5 Nano",
+ "provider": "openrouter",
+ "family": "gpt-nano",
+ "created_at": "2025-08-07 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-10-01",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.05,
+ "output_per_million": 0.4
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-07",
+ "cost": {
+ "input": 0.05,
+ "output": 0.4
+ },
+ "limit": {
+ "context": 400000,
+ "output": 128000
+ },
+ "knowledge": "2024-10-01"
+ }
+ },
+ {
+ "id": "openai/gpt-5-pro",
+ "name": "GPT-5 Pro",
+ "provider": "openrouter",
+ "family": "gpt-pro",
+ "created_at": "2025-10-06 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 272000,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 15,
+ "output_per_million": 120
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-10-06",
+ "cost": {
+ "input": 15,
+ "output": 120
+ },
+ "limit": {
+ "context": 400000,
+ "output": 272000
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "openai/gpt-5.1",
+ "name": "GPT-5.1",
+ "provider": "openrouter",
+ "family": "gpt",
+ "created_at": "2025-11-13 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-11-13",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.125
+ },
+ "limit": {
+ "context": 400000,
+ "output": 128000
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "openai/gpt-5.1-chat",
+ "name": "GPT-5.1 Chat",
+ "provider": "openrouter",
+ "family": "gpt-codex",
+ "created_at": "2025-11-13 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-11-13",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.125
+ },
+ "limit": {
+ "context": 128000,
+ "output": 16384
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "openai/gpt-5.1-codex",
+ "name": "GPT-5.1-Codex",
+ "provider": "openrouter",
+ "family": "gpt-codex",
+ "created_at": "2025-11-13 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.125
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-11-13",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.125
+ },
+ "limit": {
+ "context": 400000,
+ "output": 128000
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "openai/gpt-5.1-codex-max",
+ "name": "GPT-5.1-Codex-Max",
+ "provider": "openrouter",
+ "family": "gpt-codex",
+ "created_at": "2025-11-13 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.1,
+ "output_per_million": 9,
+ "cached_input_per_million": 0.11
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-11-13",
+ "cost": {
+ "input": 1.1,
+ "output": 9,
+ "cache_read": 0.11
+ },
+ "limit": {
+ "context": 400000,
+ "output": 128000
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "openai/gpt-5.1-codex-mini",
+ "name": "GPT-5.1-Codex-Mini",
+ "provider": "openrouter",
+ "family": "gpt-codex",
+ "created_at": "2025-11-13 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 100000,
+ "knowledge_cutoff": "2024-09-30",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.25,
+ "output_per_million": 2,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-11-13",
+ "cost": {
+ "input": 0.25,
+ "output": 2,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 400000,
+ "output": 100000
+ },
+ "knowledge": "2024-09-30"
+ }
+ },
+ {
+ "id": "openai/gpt-5.2",
+ "name": "GPT-5.2",
+ "provider": "openrouter",
+ "family": "gpt",
+ "created_at": "2025-12-11 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.75,
+ "output_per_million": 14,
+ "cached_input_per_million": 0.175
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-12-11",
+ "cost": {
+ "input": 1.75,
+ "output": 14,
+ "cache_read": 0.175
+ },
+ "limit": {
+ "context": 400000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "openai/gpt-5.2-chat",
+ "name": "GPT-5.2 Chat",
+ "provider": "openrouter",
+ "family": "gpt-codex",
+ "created_at": "2025-12-11 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.75,
+ "output_per_million": 14,
+ "cached_input_per_million": 0.175
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-12-11",
+ "cost": {
+ "input": 1.75,
+ "output": 14,
+ "cache_read": 0.175
+ },
+ "limit": {
+ "context": 128000,
+ "output": 16384
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "openai/gpt-5.2-codex",
+ "name": "GPT-5.2-Codex",
+ "provider": "openrouter",
+ "family": "gpt-codex",
+ "created_at": "2026-01-14 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.75,
+ "output_per_million": 14,
+ "cached_input_per_million": 0.175
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-01-14",
+ "cost": {
+ "input": 1.75,
+ "output": 14,
+ "cache_read": 0.175
+ },
+ "limit": {
+ "context": 400000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "openai/gpt-5.2-pro",
+ "name": "GPT-5.2 Pro",
+ "provider": "openrouter",
+ "family": "gpt-pro",
+ "created_at": "2025-12-11 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 21,
+ "output_per_million": 168
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2025-12-11",
+ "cost": {
+ "input": 21,
+ "output": 168
+ },
+ "limit": {
+ "context": 400000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "openai/gpt-5.3-codex",
+ "name": "GPT-5.3-Codex",
+ "provider": "openrouter",
+ "family": "gpt-codex",
+ "created_at": "2026-02-24 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.75,
+ "output_per_million": 14,
+ "cached_input_per_million": 0.175
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2026-02-24",
+ "cost": {
+ "input": 1.75,
+ "output": 14,
+ "cache_read": 0.175
+ },
+ "limit": {
+ "context": 400000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "openai/gpt-5.4",
+ "name": "GPT-5.4",
+ "provider": "openrouter",
+ "family": "gpt",
+ "created_at": "2026-03-05 00:00:00 +0530",
+ "context_window": 1050000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2.5,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.25
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2026-03-05",
+ "cost": {
+ "input": 2.5,
+ "output": 15,
+ "cache_read": 0.25,
+ "context_over_200k": {
+ "input": 5,
+ "output": 22.5,
+ "cache_read": 0.5
+ }
+ },
+ "limit": {
+ "context": 1050000,
+ "input": 922000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "openai/gpt-5.4-mini",
+ "name": "GPT-5.4 Mini",
+ "provider": "openrouter",
+ "family": "gpt-mini",
+ "created_at": "2026-03-17 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.00000075,
+ "output_per_million": 0.0000045,
+ "cached_input_per_million": 0.000000075
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-17",
+ "cost": {
+ "input": 0.00000075,
+ "output": 0.0000045,
+ "cache_read": 0.000000075
+ },
+ "limit": {
+ "context": 400000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "openai/gpt-5.4-nano",
+ "name": "GPT-5.4 Nano",
+ "provider": "openrouter",
+ "family": "gpt-nano",
+ "created_at": "2026-03-17 00:00:00 +0530",
+ "context_window": 400000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.0000002,
+ "output_per_million": 0.00000125,
+ "cached_input_per_million": 0.00000002
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-17",
+ "cost": {
+ "input": 0.0000002,
+ "output": 0.00000125,
+ "cache_read": 0.00000002
+ },
+ "limit": {
+ "context": 400000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "openai/gpt-5.4-pro",
+ "name": "GPT-5.4 Pro",
+ "provider": "openrouter",
+ "family": "gpt-pro",
+ "created_at": "2026-03-05 00:00:00 +0530",
+ "context_window": 1050000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": "2025-08-31",
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 30,
+ "output_per_million": 180,
+ "cached_input_per_million": 30
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": false,
+ "last_updated": "2026-03-05",
+ "cost": {
+ "input": 30,
+ "output": 180,
+ "cache_read": 30
+ },
+ "limit": {
+ "context": 1050000,
+ "input": 922000,
+ "output": 128000
+ },
+ "knowledge": "2025-08-31"
+ }
+ },
+ {
+ "id": "openai/gpt-oss-120b",
+ "name": "GPT OSS 120B",
+ "provider": "openrouter",
+ "family": "gpt-oss",
+ "created_at": "2025-08-05 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.072,
+ "output_per_million": 0.28
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-05",
+ "cost": {
+ "input": 0.072,
+ "output": 0.28
+ },
+ "limit": {
+ "context": 131072,
+ "output": 32768
+ }
+ }
+ },
+ {
+ "id": "openai/gpt-oss-120b:exacto",
+ "name": "GPT OSS 120B (exacto)",
+ "provider": "openrouter",
+ "family": "gpt-oss",
+ "created_at": "2025-08-05 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.05,
+ "output_per_million": 0.24
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-05",
+ "cost": {
+ "input": 0.05,
+ "output": 0.24
+ },
+ "limit": {
+ "context": 131072,
+ "output": 32768
+ }
+ }
+ },
+ {
+ "id": "openai/gpt-oss-120b:free",
+ "name": "gpt-oss-120b (free)",
+ "provider": "openrouter",
+ "family": "gpt-oss",
+ "created_at": "2025-08-05 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-05",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 131072,
+ "output": 32768
+ }
+ }
+ },
+ {
+ "id": "openai/gpt-oss-20b",
+ "name": "GPT OSS 20B",
+ "provider": "openrouter",
+ "family": "gpt-oss",
+ "created_at": "2025-08-05 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.05,
+ "output_per_million": 0.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-05",
+ "cost": {
+ "input": 0.05,
+ "output": 0.2
+ },
+ "limit": {
+ "context": 131072,
+ "output": 32768
+ }
+ }
+ },
+ {
+ "id": "openai/gpt-oss-20b:free",
+ "name": "gpt-oss-20b (free)",
+ "provider": "openrouter",
+ "family": "gpt-oss",
+ "created_at": "2025-08-05 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-31",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 131072,
+ "output": 32768
+ }
+ }
+ },
+ {
+ "id": "openai/gpt-oss-safeguard-20b",
+ "name": "GPT OSS Safeguard 20B",
+ "provider": "openrouter",
+ "family": "gpt-oss",
+ "created_at": "2025-10-29 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.075,
+ "output_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-10-29",
+ "cost": {
+ "input": 0.075,
+ "output": 0.3
+ },
+ "limit": {
+ "context": 131072,
+ "output": 65536
+ }
+ }
+ },
+ {
+ "id": "openai/o4-mini",
+ "name": "o4 Mini",
+ "provider": "openrouter",
+ "family": "o-mini",
+ "created_at": "2025-04-16 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 100000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.1,
+ "output_per_million": 4.4,
+ "cached_input_per_million": 0.28
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-04-16",
+ "cost": {
+ "input": 1.1,
+ "output": 4.4,
+ "cache_read": 0.28
+ },
+ "limit": {
+ "context": 200000,
+ "output": 100000
+ },
+ "knowledge": "2024-06"
+ }
+ },
+ {
+ "id": "openrouter/elephant-alpha",
+ "name": "Elephant (free)",
+ "provider": "openrouter",
+ "family": "elephant",
+ "created_at": "2026-04-13 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-04-13",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 262144,
+ "output": 32768
+ }
+ }
+ },
+ {
+ "id": "openrouter/free",
+ "name": "Free Models Router",
+ "provider": "openrouter",
+ "family": null,
+ "created_at": "2026-02-01 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 8000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-02-01",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 200000,
+ "input": 200000,
+ "output": 8000
+ }
+ }
+ },
+ {
+ "id": "prime-intellect/intellect-3",
+ "name": "Intellect 3",
+ "provider": "openrouter",
+ "family": "glm",
+ "created_at": "2025-01-15 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.2,
+ "output_per_million": 1.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-01-15",
+ "cost": {
+ "input": 0.2,
+ "output": 1.1
+ },
+ "limit": {
+ "context": 131072,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "qwen/qwen-2.5-coder-32b-instruct",
+ "name": "Qwen2.5 Coder 32B Instruct",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2024-11-11 00:00:00 +0530",
+ "context_window": 32768,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "structured_output"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2024-11-11",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 32768,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "qwen/qwen2.5-vl-72b-instruct",
+ "name": "Qwen2.5 VL 72B Instruct",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2025-02-01 00:00:00 +0530",
+ "context_window": 32768,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-02-01",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 32768,
+ "output": 8192
+ },
+ "knowledge": "2024-10"
+ }
+ },
+ {
+ "id": "qwen/qwen3-235b-a22b-07-25",
+ "name": "Qwen3 235B A22B Instruct 2507",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2025-04-28 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.85
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-21",
+ "cost": {
+ "input": 0.15,
+ "output": 0.85
+ },
+ "limit": {
+ "context": 262144,
+ "output": 131072
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "qwen/qwen3-235b-a22b-thinking-2507",
+ "name": "Qwen3 235B A22B Thinking 2507",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2025-07-25 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 81920,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.078,
+ "output_per_million": 0.312
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-25",
+ "cost": {
+ "input": 0.078,
+ "output": 0.312
+ },
+ "limit": {
+ "context": 262144,
+ "output": 81920
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "qwen/qwen3-30b-a3b-instruct-2507",
+ "name": "Qwen3 30B A3B Instruct 2507",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2025-07-29 00:00:00 +0530",
+ "context_window": 262000,
+ "max_output_tokens": 262000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.2,
+ "output_per_million": 0.8
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-29",
+ "cost": {
+ "input": 0.2,
+ "output": 0.8
+ },
+ "limit": {
+ "context": 262000,
+ "output": 262000
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "qwen/qwen3-30b-a3b-thinking-2507",
+ "name": "Qwen3 30B A3B Thinking 2507",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2025-07-29 00:00:00 +0530",
+ "context_window": 262000,
+ "max_output_tokens": 262000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.2,
+ "output_per_million": 0.8
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-29",
+ "cost": {
+ "input": 0.2,
+ "output": 0.8
+ },
+ "limit": {
+ "context": 262000,
+ "output": 262000
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "qwen/qwen3-coder",
+ "name": "Qwen3 Coder",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2025-07-23 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 66536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 1.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-23",
+ "cost": {
+ "input": 0.3,
+ "output": 1.2
+ },
+ "limit": {
+ "context": 262144,
+ "output": 66536
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "qwen/qwen3-coder-30b-a3b-instruct",
+ "name": "Qwen3 Coder 30B A3B Instruct",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2025-07-31 00:00:00 +0530",
+ "context_window": 160000,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.07,
+ "output_per_million": 0.27
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-31",
+ "cost": {
+ "input": 0.07,
+ "output": 0.27
+ },
+ "limit": {
+ "context": 160000,
+ "output": 65536
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "qwen/qwen3-coder-flash",
+ "name": "Qwen3 Coder Flash",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2025-07-23 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 66536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 1.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-23",
+ "cost": {
+ "input": 0.3,
+ "output": 1.5
+ },
+ "limit": {
+ "context": 128000,
+ "output": 66536
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "qwen/qwen3-coder:exacto",
+ "name": "Qwen3 Coder (exacto)",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2025-07-23 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.38,
+ "output_per_million": 1.53
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-23",
+ "cost": {
+ "input": 0.38,
+ "output": 1.53
+ },
+ "limit": {
+ "context": 131072,
+ "output": 32768
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "qwen/qwen3-max",
+ "name": "Qwen3 Max",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2025-09-05 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.2,
+ "output_per_million": 6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-05",
+ "cost": {
+ "input": 1.2,
+ "output": 6
+ },
+ "limit": {
+ "context": 262144,
+ "output": 32768
+ }
+ }
+ },
+ {
+ "id": "qwen/qwen3-next-80b-a3b-instruct",
+ "name": "Qwen3 Next 80B A3B Instruct",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2025-09-11 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.14,
+ "output_per_million": 1.4
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-11",
+ "cost": {
+ "input": 0.14,
+ "output": 1.4
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "qwen/qwen3-next-80b-a3b-thinking",
+ "name": "Qwen3 Next 80B A3B Thinking",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2025-09-11 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.14,
+ "output_per_million": 1.4
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-11",
+ "cost": {
+ "input": 0.14,
+ "output": 1.4
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "qwen/qwen3.5-397b-a17b",
+ "name": "Qwen3.5 397B A17B",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2026-02-16 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 3.6
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-02-16",
+ "cost": {
+ "input": 0.6,
+ "output": 3.6
+ },
+ "limit": {
+ "context": 262144,
+ "output": 65536
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "qwen/qwen3.5-flash-02-23",
+ "name": "Qwen: Qwen3.5-Flash",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2026-02-25 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.065,
+ "output_per_million": 0.26
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-02-25",
+ "cost": {
+ "input": 0.065,
+ "output": 0.26
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 65536
+ }
+ }
+ },
+ {
+ "id": "qwen/qwen3.5-plus-02-15",
+ "name": "Qwen3.5 Plus 2026-02-15",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2026-02-16 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 2.4
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-02-16",
+ "cost": {
+ "input": 0.4,
+ "output": 2.4
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 65536
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "qwen/qwen3.6-plus",
+ "name": "Qwen3.6 Plus",
+ "provider": "openrouter",
+ "family": "qwen",
+ "created_at": "2026-04-02 00:00:00 +0530",
+ "context_window": 1000000,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.325,
+ "output_per_million": 1.95
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-04-02",
+ "cost": {
+ "input": 0.325,
+ "output": 1.95
+ },
+ "limit": {
+ "context": 1000000,
+ "output": 65536
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "sourceful/riverflow-v2-fast-preview",
+ "name": "Riverflow V2 Fast Preview",
+ "provider": "openrouter",
+ "family": "sourceful",
+ "created_at": "2025-12-08 00:00:00 +0530",
+ "context_window": 8192,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "image"
+ ]
+ },
+ "capabilities": [
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-28",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 8192,
+ "output": 8192
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "sourceful/riverflow-v2-max-preview",
+ "name": "Riverflow V2 Max Preview",
+ "provider": "openrouter",
+ "family": "sourceful",
+ "created_at": "2025-12-08 00:00:00 +0530",
+ "context_window": 8192,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "image"
+ ]
+ },
+ "capabilities": [
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-28",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 8192,
+ "output": 8192
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "sourceful/riverflow-v2-standard-preview",
+ "name": "Riverflow V2 Standard Preview",
+ "provider": "openrouter",
+ "family": "sourceful",
+ "created_at": "2025-12-08 00:00:00 +0530",
+ "context_window": 8192,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "image"
+ ]
+ },
+ "capabilities": [
+ "vision"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-28",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 8192,
+ "output": 8192
+ },
+ "knowledge": "2025-06"
+ }
+ },
+ {
+ "id": "stepfun/step-3.5-flash",
+ "name": "Step 3.5 Flash",
+ "provider": "openrouter",
+ "family": "step",
+ "created_at": "2026-01-29 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 256000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.3,
+ "cached_input_per_million": 0.02
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-29",
+ "cost": {
+ "input": 0.1,
+ "output": 0.3,
+ "cache_read": 0.02
+ },
+ "limit": {
+ "context": 256000,
+ "output": 256000
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "x-ai/grok-3",
+ "name": "Grok 3",
+ "provider": "openrouter",
+ "family": "grok",
+ "created_at": "2025-02-17 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.75
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-02-17",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.75,
+ "cache_write": 15
+ },
+ "limit": {
+ "context": 131072,
+ "output": 8192
+ },
+ "knowledge": "2024-11"
+ }
+ },
+ {
+ "id": "x-ai/grok-3-beta",
+ "name": "Grok 3 Beta",
+ "provider": "openrouter",
+ "family": "grok",
+ "created_at": "2025-02-17 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.75
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-02-17",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.75,
+ "cache_write": 15
+ },
+ "limit": {
+ "context": 131072,
+ "output": 8192
+ },
+ "knowledge": "2024-11"
+ }
+ },
+ {
+ "id": "x-ai/grok-3-mini",
+ "name": "Grok 3 Mini",
+ "provider": "openrouter",
+ "family": "grok",
+ "created_at": "2025-02-17 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 0.5,
+ "cached_input_per_million": 0.075
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-02-17",
+ "cost": {
+ "input": 0.3,
+ "output": 0.5,
+ "cache_read": 0.075,
+ "cache_write": 0.5
+ },
+ "limit": {
+ "context": 131072,
+ "output": 8192
+ },
+ "knowledge": "2024-11"
+ }
+ },
+ {
+ "id": "x-ai/grok-3-mini-beta",
+ "name": "Grok 3 Mini Beta",
+ "provider": "openrouter",
+ "family": "grok",
+ "created_at": "2025-02-17 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 0.5,
+ "cached_input_per_million": 0.075
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-02-17",
+ "cost": {
+ "input": 0.3,
+ "output": 0.5,
+ "cache_read": 0.075,
+ "cache_write": 0.5
+ },
+ "limit": {
+ "context": 131072,
+ "output": 8192
+ },
+ "knowledge": "2024-11"
+ }
+ },
+ {
+ "id": "x-ai/grok-4",
+ "name": "Grok 4",
+ "provider": "openrouter",
+ "family": "grok",
+ "created_at": "2025-07-09 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 64000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15,
+ "cached_input_per_million": 0.75
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-09",
+ "cost": {
+ "input": 3,
+ "output": 15,
+ "cache_read": 0.75,
+ "cache_write": 15
+ },
+ "limit": {
+ "context": 256000,
+ "output": 64000
+ },
+ "knowledge": "2025-07"
+ }
+ },
+ {
+ "id": "x-ai/grok-4-fast",
+ "name": "Grok 4 Fast",
+ "provider": "openrouter",
+ "family": "grok",
+ "created_at": "2025-08-19 00:00:00 +0530",
+ "context_window": 2000000,
+ "max_output_tokens": 30000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.2,
+ "output_per_million": 0.5,
+ "cached_input_per_million": 0.05
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-19",
+ "cost": {
+ "input": 0.2,
+ "output": 0.5,
+ "cache_read": 0.05,
+ "cache_write": 0.05
+ },
+ "limit": {
+ "context": 2000000,
+ "output": 30000
+ },
+ "knowledge": "2024-11"
+ }
+ },
+ {
+ "id": "x-ai/grok-4.1-fast",
+ "name": "Grok 4.1 Fast",
+ "provider": "openrouter",
+ "family": "grok",
+ "created_at": "2025-11-19 00:00:00 +0530",
+ "context_window": 2000000,
+ "max_output_tokens": 30000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.2,
+ "output_per_million": 0.5,
+ "cached_input_per_million": 0.05
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-11-19",
+ "cost": {
+ "input": 0.2,
+ "output": 0.5,
+ "cache_read": 0.05,
+ "cache_write": 0.05
+ },
+ "limit": {
+ "context": 2000000,
+ "output": 30000
+ },
+ "knowledge": "2024-11"
+ }
+ },
+ {
+ "id": "x-ai/grok-4.20-beta",
+ "name": "Grok 4.20 Beta",
+ "provider": "openrouter",
+ "family": "grok",
+ "created_at": "2026-03-12 00:00:00 +0530",
+ "context_window": 2000000,
+ "max_output_tokens": 30000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 6,
+ "cached_input_per_million": 0.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-12",
+ "status": "beta",
+ "cost": {
+ "input": 2,
+ "output": 6,
+ "cache_read": 0.2,
+ "context_over_200k": {
+ "input": 4,
+ "output": 12
+ }
+ },
+ "limit": {
+ "context": 2000000,
+ "output": 30000
+ }
+ }
+ },
+ {
+ "id": "x-ai/grok-4.20-multi-agent-beta",
+ "name": "Grok 4.20 Multi - Agent Beta",
+ "provider": "openrouter",
+ "family": "grok",
+ "created_at": "2026-03-12 00:00:00 +0530",
+ "context_window": 2000000,
+ "max_output_tokens": 30000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 6,
+ "cached_input_per_million": 0.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-12",
+ "status": "beta",
+ "cost": {
+ "input": 2,
+ "output": 6,
+ "cache_read": 0.2,
+ "context_over_200k": {
+ "input": 4,
+ "output": 12
+ }
+ },
+ "limit": {
+ "context": 2000000,
+ "output": 30000
+ }
+ }
+ },
+ {
+ "id": "x-ai/grok-code-fast-1",
+ "name": "Grok Code Fast 1",
+ "provider": "openrouter",
+ "family": "grok",
+ "created_at": "2025-08-26 00:00:00 +0530",
+ "context_window": 256000,
+ "max_output_tokens": 10000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.2,
+ "output_per_million": 1.5,
+ "cached_input_per_million": 0.02
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-26",
+ "cost": {
+ "input": 0.2,
+ "output": 1.5,
+ "cache_read": 0.02
+ },
+ "limit": {
+ "context": 256000,
+ "output": 10000
+ },
+ "knowledge": "2025-08"
+ }
+ },
+ {
+ "id": "xiaomi/mimo-v2-flash",
+ "name": "MiMo-V2-Flash",
+ "provider": "openrouter",
+ "family": "mimo",
+ "created_at": "2025-12-14 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.3,
+ "cached_input_per_million": 0.01
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-12-14",
+ "cost": {
+ "input": 0.1,
+ "output": 0.3,
+ "cache_read": 0.01
+ },
+ "limit": {
+ "context": 262144,
+ "output": 65536
+ },
+ "knowledge": "2024-12"
+ }
+ },
+ {
+ "id": "xiaomi/mimo-v2-omni",
+ "name": "MiMo-V2-Omni",
+ "provider": "openrouter",
+ "family": "mimo",
+ "created_at": "2026-03-18 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video",
+ "audio"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.4,
+ "output_per_million": 2,
+ "cached_input_per_million": 0.08
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-03-18",
+ "interleaved": {
+ "field": "reasoning_details"
+ },
+ "cost": {
+ "input": 0.4,
+ "output": 2,
+ "cache_read": 0.08
+ },
+ "limit": {
+ "context": 262144,
+ "output": 65536
+ }
+ }
+ },
+ {
+ "id": "xiaomi/mimo-v2-pro",
+ "name": "MiMo-V2-Pro",
+ "provider": "openrouter",
+ "family": "mimo",
+ "created_at": "2026-03-18 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1,
+ "output_per_million": 3,
+ "cached_input_per_million": 0.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-03-18",
+ "interleaved": {
+ "field": "reasoning_details"
+ },
+ "cost": {
+ "input": 1,
+ "output": 3,
+ "cache_read": 0.2
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ }
+ }
+ },
+ {
+ "id": "z-ai/glm-4.5",
+ "name": "GLM 4.5",
+ "provider": "openrouter",
+ "family": "glm",
+ "created_at": "2025-07-28 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 96000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 2.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-28",
+ "cost": {
+ "input": 0.6,
+ "output": 2.2
+ },
+ "limit": {
+ "context": 128000,
+ "output": 96000
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "z-ai/glm-4.5-air",
+ "name": "GLM 4.5 Air",
+ "provider": "openrouter",
+ "family": "glm-air",
+ "created_at": "2025-07-28 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 96000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.2,
+ "output_per_million": 1.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-28",
+ "cost": {
+ "input": 0.2,
+ "output": 1.1
+ },
+ "limit": {
+ "context": 128000,
+ "output": 96000
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "z-ai/glm-4.5-air:free",
+ "name": "GLM 4.5 Air (free)",
+ "provider": "openrouter",
+ "family": "glm-air",
+ "created_at": "2025-07-28 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 96000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "reasoning"
+ ],
+ "pricing": {},
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-07-28",
+ "cost": {
+ "input": 0,
+ "output": 0
+ },
+ "limit": {
+ "context": 128000,
+ "output": 96000
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "z-ai/glm-4.5v",
+ "name": "GLM 4.5V",
+ "provider": "openrouter",
+ "family": "glm",
+ "created_at": "2025-08-11 00:00:00 +0530",
+ "context_window": 64000,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 1.8
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-08-11",
+ "cost": {
+ "input": 0.6,
+ "output": 1.8
+ },
+ "limit": {
+ "context": 64000,
+ "output": 16384
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "z-ai/glm-4.6",
+ "name": "GLM 4.6",
+ "provider": "openrouter",
+ "family": "glm",
+ "created_at": "2025-09-30 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 2.2,
+ "cached_input_per_million": 0.11
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-30",
+ "cost": {
+ "input": 0.6,
+ "output": 2.2,
+ "cache_read": 0.11
+ },
+ "limit": {
+ "context": 200000,
+ "output": 128000
+ },
+ "knowledge": "2025-09"
+ }
+ },
+ {
+ "id": "z-ai/glm-4.6:exacto",
+ "name": "GLM 4.6 (exacto)",
+ "provider": "openrouter",
+ "family": "glm",
+ "created_at": "2025-09-30 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 1.9,
+ "cached_input_per_million": 0.11
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-30",
+ "cost": {
+ "input": 0.6,
+ "output": 1.9,
+ "cache_read": 0.11
+ },
+ "limit": {
+ "context": 200000,
+ "output": 128000
+ },
+ "knowledge": "2025-09"
+ }
+ },
+ {
+ "id": "z-ai/glm-4.7",
+ "name": "GLM-4.7",
+ "provider": "openrouter",
+ "family": "glm",
+ "created_at": "2025-12-22 00:00:00 +0530",
+ "context_window": 204800,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 2.2,
+ "cached_input_per_million": 0.11
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-12-22",
+ "interleaved": {
+ "field": "reasoning_details"
+ },
+ "cost": {
+ "input": 0.6,
+ "output": 2.2,
+ "cache_read": 0.11
+ },
+ "limit": {
+ "context": 204800,
+ "output": 131072
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "z-ai/glm-4.7-flash",
+ "name": "GLM-4.7-Flash",
+ "provider": "openrouter",
+ "family": "glm",
+ "created_at": "2026-01-19 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 65535,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.07,
+ "output_per_million": 0.4
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-19",
+ "interleaved": {
+ "field": "reasoning_details"
+ },
+ "cost": {
+ "input": 0.07,
+ "output": 0.4
+ },
+ "limit": {
+ "context": 200000,
+ "output": 65535
+ }
+ }
+ },
+ {
+ "id": "z-ai/glm-5",
+ "name": "GLM-5",
+ "provider": "openrouter",
+ "family": "glm",
+ "created_at": "2026-02-12 00:00:00 +0530",
+ "context_window": 202752,
+ "max_output_tokens": 131000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1,
+ "output_per_million": 3.2,
+ "cached_input_per_million": 0.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-02-12",
+ "interleaved": {
+ "field": "reasoning_content"
+ },
+ "cost": {
+ "input": 1,
+ "output": 3.2,
+ "cache_read": 0.2
+ },
+ "limit": {
+ "context": 202752,
+ "output": 131000
+ }
+ }
+ },
+ {
+ "id": "z-ai/glm-5-turbo",
+ "name": "GLM-5-Turbo",
+ "provider": "openrouter",
+ "family": "glm",
+ "created_at": "2026-03-16 00:00:00 +0530",
+ "context_window": 202752,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.96,
+ "output_per_million": 3.2,
+ "cached_input_per_million": 0.192
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-03-16",
+ "interleaved": {
+ "field": "reasoning_content"
+ },
+ "cost": {
+ "input": 0.96,
+ "output": 3.2,
+ "cache_read": 0.192,
+ "cache_write": 0
+ },
+ "limit": {
+ "context": 202752,
+ "output": 131072
+ }
+ }
+ },
+ {
+ "id": "z-ai/glm-5.1",
+ "name": "GLM-5.1",
+ "provider": "openrouter",
+ "family": "glm",
+ "created_at": "2026-04-07 00:00:00 +0530",
+ "context_window": 202752,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.4,
+ "output_per_million": 4.4,
+ "cached_input_per_million": 0.26
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "openrouter",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-04-07",
+ "interleaved": {
+ "field": "reasoning_content"
+ },
+ "cost": {
+ "input": 1.4,
+ "output": 4.4,
+ "cache_read": 0.26
+ },
+ "limit": {
+ "context": 202752,
+ "output": 131072
+ }
+ }
+ },
+ {
+ "id": "sonar",
+ "name": "Sonar",
+ "provider": "perplexity",
+ "family": "sonar",
+ "created_at": "2024-01-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": "2025-09-01",
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1,
+ "output_per_million": 1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "perplexity",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-09-01",
+ "cost": {
+ "input": 1,
+ "output": 1
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ },
+ "knowledge": "2025-09-01"
+ }
+ },
+ {
+ "id": "sonar-deep-research",
+ "name": "Perplexity Sonar Deep Research",
+ "provider": "perplexity",
+ "family": null,
+ "created_at": "2025-02-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 8,
+ "reasoning_output_per_million": 3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "perplexity",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": false,
+ "last_updated": "2025-09-01",
+ "cost": {
+ "input": 2,
+ "output": 8,
+ "reasoning": 3
+ },
+ "limit": {
+ "context": 128000,
+ "output": 32768
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "sonar-pro",
+ "name": "Sonar Pro",
+ "provider": "perplexity",
+ "family": "sonar-pro",
+ "created_at": "2024-01-01 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": "2025-09-01",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 3,
+ "output_per_million": 15
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "perplexity",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-01",
+ "cost": {
+ "input": 3,
+ "output": 15
+ },
+ "limit": {
+ "context": 200000,
+ "output": 8192
+ },
+ "knowledge": "2025-09-01"
+ }
+ },
+ {
+ "id": "sonar-reasoning-pro",
+ "name": "Sonar Reasoning Pro",
+ "provider": "perplexity",
+ "family": "sonar-reasoning",
+ "created_at": "2024-01-01 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 4096,
+ "knowledge_cutoff": "2025-09-01",
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 8
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "perplexity",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-01",
+ "cost": {
+ "input": 2,
+ "output": 8
+ },
+ "limit": {
+ "context": 128000,
+ "output": 4096
+ },
+ "knowledge": "2025-09-01"
+ }
+ },
+ {
+ "id": "deepseek-ai/deepseek-v3.1-maas",
+ "name": "DeepSeek V3.1",
+ "provider": "vertexai",
+ "family": "deepseek",
+ "created_at": "2025-08-28 00:00:00 +0530",
+ "context_window": 163840,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 1.7
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-28",
+ "cost": {
+ "input": 0.6,
+ "output": 1.7
+ },
+ "limit": {
+ "context": 163840,
+ "output": 32768
+ }
+ }
+ },
+ {
+ "id": "deepseek-ai/deepseek-v3.2-maas",
+ "name": "DeepSeek V3.2",
+ "provider": "vertexai",
+ "family": "deepseek",
+ "created_at": "2025-12-17 00:00:00 +0530",
+ "context_window": 163840,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.56,
+ "output_per_million": 1.68,
+ "cached_input_per_million": 0.056
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-04-04",
+ "cost": {
+ "input": 0.56,
+ "output": 1.68,
+ "cache_read": 0.056
+ },
+ "limit": {
+ "context": 163840,
+ "output": 65536
+ }
+ }
+ },
+ {
+ "id": "gemini-2.0-flash",
+ "name": "Gemini 2.0 Flash",
+ "provider": "vertexai",
+ "family": "gemini-flash",
+ "created_at": "2024-12-11 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-12-11",
+ "cost": {
+ "input": 0.15,
+ "output": 0.6,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 8192
+ },
+ "knowledge": "2024-06"
+ }
+ },
+ {
+ "id": "gemini-2.0-flash-lite",
+ "name": "Gemini 2.0 Flash Lite",
+ "provider": "vertexai",
+ "family": "gemini-flash-lite",
+ "created_at": "2024-12-11 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.075,
+ "output_per_million": 0.3
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2024-12-11",
+ "cost": {
+ "input": 0.075,
+ "output": 0.3
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 8192
+ },
+ "knowledge": "2024-06"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash",
+ "name": "Gemini 2.5 Flash",
+ "provider": "vertexai",
+ "family": "gemini-flash",
+ "created_at": "2025-06-17 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 2.5,
+ "cached_input_per_million": 0.075
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-06-17",
+ "cost": {
+ "input": 0.3,
+ "output": 2.5,
+ "cache_read": 0.075,
+ "cache_write": 0.383
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash-lite",
+ "name": "Gemini 2.5 Flash Lite",
+ "provider": "vertexai",
+ "family": "gemini-flash-lite",
+ "created_at": "2025-06-17 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.4,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-06-17",
+ "cost": {
+ "input": 0.1,
+ "output": 0.4,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash-lite-preview-06-17",
+ "name": "Gemini 2.5 Flash Lite Preview 06-17",
+ "provider": "vertexai",
+ "family": "gemini-flash-lite",
+ "created_at": "2025-06-17 00:00:00 +0530",
+ "context_window": 65536,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.4,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-06-17",
+ "cost": {
+ "input": 0.1,
+ "output": 0.4,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 65536,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash-lite-preview-09-2025",
+ "name": "Gemini 2.5 Flash Lite Preview 09-25",
+ "provider": "vertexai",
+ "family": "gemini-flash-lite",
+ "created_at": "2025-09-25 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.4,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-25",
+ "cost": {
+ "input": 0.1,
+ "output": 0.4,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash-preview-04-17",
+ "name": "Gemini 2.5 Flash Preview 04-17",
+ "provider": "vertexai",
+ "family": "gemini-flash",
+ "created_at": "2025-04-17 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6,
+ "cached_input_per_million": 0.0375
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-04-17",
+ "cost": {
+ "input": 0.15,
+ "output": 0.6,
+ "cache_read": 0.0375
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash-preview-05-20",
+ "name": "Gemini 2.5 Flash Preview 05-20",
+ "provider": "vertexai",
+ "family": "gemini-flash",
+ "created_at": "2025-05-20 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15,
+ "output_per_million": 0.6,
+ "cached_input_per_million": 0.0375
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-20",
+ "cost": {
+ "input": 0.15,
+ "output": 0.6,
+ "cache_read": 0.0375
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-flash-preview-09-2025",
+ "name": "Gemini 2.5 Flash Preview 09-25",
+ "provider": "vertexai",
+ "family": "gemini-flash",
+ "created_at": "2025-09-25 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 2.5,
+ "cached_input_per_million": 0.075
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-25",
+ "cost": {
+ "input": 0.3,
+ "output": 2.5,
+ "cache_read": 0.075,
+ "cache_write": 0.383
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-pro",
+ "name": "Gemini 2.5 Pro",
+ "provider": "vertexai",
+ "family": "gemini-pro",
+ "created_at": "2025-03-20 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.31
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-06-05",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.31
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-pro-preview-05-06",
+ "name": "Gemini 2.5 Pro Preview 05-06",
+ "provider": "vertexai",
+ "family": "gemini-pro",
+ "created_at": "2025-05-06 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.31
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-05-06",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.31
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-2.5-pro-preview-06-05",
+ "name": "Gemini 2.5 Pro Preview 06-05",
+ "provider": "vertexai",
+ "family": "gemini-pro",
+ "created_at": "2025-06-05 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1.25,
+ "output_per_million": 10,
+ "cached_input_per_million": 0.31
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-06-05",
+ "cost": {
+ "input": 1.25,
+ "output": 10,
+ "cache_read": 0.31
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-3-flash-preview",
+ "name": "Gemini 3 Flash Preview",
+ "provider": "vertexai",
+ "family": "gemini-flash",
+ "created_at": "2025-12-17 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video",
+ "audio",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.5,
+ "output_per_million": 3,
+ "cached_input_per_million": 0.05
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-12-17",
+ "cost": {
+ "input": 0.5,
+ "output": 3,
+ "cache_read": 0.05,
+ "context_over_200k": {
+ "input": 0.5,
+ "output": 3,
+ "cache_read": 0.05
+ }
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-3-pro-preview",
+ "name": "Gemini 3 Pro Preview",
+ "provider": "vertexai",
+ "family": "gemini-pro",
+ "created_at": "2025-11-18 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video",
+ "audio",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 12,
+ "cached_input_per_million": 0.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-11-18",
+ "cost": {
+ "input": 2,
+ "output": 12,
+ "cache_read": 0.2,
+ "context_over_200k": {
+ "input": 4,
+ "output": 18,
+ "cache_read": 0.4
+ }
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-3.1-pro-preview",
+ "name": "Gemini 3.1 Pro Preview",
+ "provider": "vertexai",
+ "family": "gemini-pro",
+ "created_at": "2026-02-19 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video",
+ "audio",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 12,
+ "cached_input_per_million": 0.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-02-19",
+ "cost": {
+ "input": 2,
+ "output": 12,
+ "cache_read": 0.2,
+ "context_over_200k": {
+ "input": 4,
+ "output": 18,
+ "cache_read": 0.4
+ }
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-3.1-pro-preview-customtools",
+ "name": "Gemini 3.1 Pro Preview Custom Tools",
+ "provider": "vertexai",
+ "family": "gemini-pro",
+ "created_at": "2026-02-19 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "video",
+ "audio",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 2,
+ "output_per_million": 12,
+ "cached_input_per_million": 0.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2026-02-19",
+ "cost": {
+ "input": 2,
+ "output": 12,
+ "cache_read": 0.2,
+ "context_over_200k": {
+ "input": 4,
+ "output": 18,
+ "cache_read": 0.4
+ }
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-embedding-001",
+ "name": "Gemini Embedding 001",
+ "provider": "vertexai",
+ "family": "gemini",
+ "created_at": "2025-05-20 00:00:00 +0530",
+ "context_window": 2048,
+ "max_output_tokens": 3072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.15
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": false,
+ "temperature": false,
+ "last_updated": "2025-05-20",
+ "cost": {
+ "input": 0.15,
+ "output": 0
+ },
+ "limit": {
+ "context": 2048,
+ "output": 3072
+ },
+ "knowledge": "2025-05"
+ }
+ },
+ {
+ "id": "gemini-flash-latest",
+ "name": "Gemini Flash Latest",
+ "provider": "vertexai",
+ "family": "gemini-flash",
+ "created_at": "2025-09-25 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.3,
+ "output_per_million": 2.5,
+ "cached_input_per_million": 0.075
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-25",
+ "cost": {
+ "input": 0.3,
+ "output": 2.5,
+ "cache_read": 0.075,
+ "cache_write": 0.383
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "gemini-flash-lite-latest",
+ "name": "Gemini Flash-Lite Latest",
+ "provider": "vertexai",
+ "family": "gemini-flash-lite",
+ "created_at": "2025-09-25 00:00:00 +0530",
+ "context_window": 1048576,
+ "max_output_tokens": 65536,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image",
+ "audio",
+ "video",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.1,
+ "output_per_million": 0.4,
+ "cached_input_per_million": 0.025
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": false,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-09-25",
+ "cost": {
+ "input": 0.1,
+ "output": 0.4,
+ "cache_read": 0.025
+ },
+ "limit": {
+ "context": 1048576,
+ "output": 65536
+ },
+ "knowledge": "2025-01"
+ }
+ },
+ {
+ "id": "meta/llama-3.3-70b-instruct-maas",
+ "name": "Llama 3.3 70B Instruct",
+ "provider": "vertexai",
+ "family": "llama",
+ "created_at": "2025-04-29 00:00:00 +0530",
+ "context_window": 128000,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.72,
+ "output_per_million": 0.72
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-04-29",
+ "cost": {
+ "input": 0.72,
+ "output": 0.72
+ },
+ "limit": {
+ "context": 128000,
+ "output": 8192
+ },
+ "knowledge": "2023-12"
+ }
+ },
+ {
+ "id": "meta/llama-4-maverick-17b-128e-instruct-maas",
+ "name": "Llama 4 Maverick 17B 128E Instruct",
+ "provider": "vertexai",
+ "family": "llama",
+ "created_at": "2025-04-29 00:00:00 +0530",
+ "context_window": 524288,
+ "max_output_tokens": 8192,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "image"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.35,
+ "output_per_million": 1.15
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": true,
+ "attachment": true,
+ "temperature": true,
+ "last_updated": "2025-04-29",
+ "cost": {
+ "input": 0.35,
+ "output": 1.15
+ },
+ "limit": {
+ "context": 524288,
+ "output": 8192
+ },
+ "knowledge": "2024-08"
+ }
+ },
+ {
+ "id": "moonshotai/kimi-k2-thinking-maas",
+ "name": "Kimi K2 Thinking",
+ "provider": "vertexai",
+ "family": "kimi-thinking",
+ "created_at": "2025-11-13 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 262144,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 2.5
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-11-13",
+ "interleaved": {
+ "field": "reasoning_content"
+ },
+ "cost": {
+ "input": 0.6,
+ "output": 2.5
+ },
+ "limit": {
+ "context": 262144,
+ "output": 262144
+ },
+ "knowledge": "2024-08"
+ }
+ },
+ {
+ "id": "openai/gpt-oss-120b-maas",
+ "name": "GPT OSS 120B",
+ "provider": "vertexai",
+ "family": "gpt-oss",
+ "created_at": "2025-08-05 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.09,
+ "output_per_million": 0.36
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-05",
+ "cost": {
+ "input": 0.09,
+ "output": 0.36
+ },
+ "limit": {
+ "context": 131072,
+ "output": 32768
+ }
+ }
+ },
+ {
+ "id": "openai/gpt-oss-20b-maas",
+ "name": "GPT OSS 20B",
+ "provider": "vertexai",
+ "family": "gpt-oss",
+ "created_at": "2025-08-05 00:00:00 +0530",
+ "context_window": 131072,
+ "max_output_tokens": 32768,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.07,
+ "output_per_million": 0.25
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-05",
+ "cost": {
+ "input": 0.07,
+ "output": 0.25
+ },
+ "limit": {
+ "context": 131072,
+ "output": 32768
+ }
+ }
+ },
+ {
+ "id": "qwen/qwen3-235b-a22b-instruct-2507-maas",
+ "name": "Qwen3 235B A22B Instruct",
+ "provider": "vertexai",
+ "family": "qwen",
+ "created_at": "2025-08-13 00:00:00 +0530",
+ "context_window": 262144,
+ "max_output_tokens": 16384,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.22,
+ "output_per_million": 0.88
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2025-08-13",
+ "cost": {
+ "input": 0.22,
+ "output": 0.88
+ },
+ "limit": {
+ "context": 262144,
+ "output": 16384
+ }
+ }
+ },
+ {
+ "id": "zai-org/glm-4.7-maas",
+ "name": "GLM-4.7",
+ "provider": "vertexai",
+ "family": "glm",
+ "created_at": "2026-01-06 00:00:00 +0530",
+ "context_window": 200000,
+ "max_output_tokens": 128000,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text",
+ "pdf"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "structured_output",
+ "reasoning",
+ "vision"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 0.6,
+ "output_per_million": 2.2
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-01-06",
+ "interleaved": {
+ "field": "reasoning_content"
+ },
+ "cost": {
+ "input": 0.6,
+ "output": 2.2
+ },
+ "limit": {
+ "context": 200000,
+ "output": 128000
+ },
+ "knowledge": "2025-04"
+ }
+ },
+ {
+ "id": "zai-org/glm-5-maas",
+ "name": "GLM-5",
+ "provider": "vertexai",
+ "family": "glm",
+ "created_at": "2026-02-11 00:00:00 +0530",
+ "context_window": 202752,
+ "max_output_tokens": 131072,
+ "knowledge_cutoff": null,
+ "modalities": {
+ "input": [
+ "text"
+ ],
+ "output": [
+ "text"
+ ]
+ },
+ "capabilities": [
+ "function_calling",
+ "reasoning"
+ ],
+ "pricing": {
+ "text_tokens": {
+ "standard": {
+ "input_per_million": 1,
+ "output_per_million": 3.2,
+ "cached_input_per_million": 0.1
+ }
+ }
+ },
+ "metadata": {
+ "source": "models.dev",
+ "provider_id": "google-vertex",
+ "open_weights": true,
+ "attachment": false,
+ "temperature": true,
+ "last_updated": "2026-02-11",
+ "interleaved": {
+ "field": "reasoning_content"
+ },
+ "cost": {
+ "input": 1,
+ "output": 3.2,
+ "cache_read": 0.1
+ },
+ "limit": {
+ "context": 202752,
+ "output": 131072
+ }
+ }
+ }
+]
\ No newline at end of file
diff --git a/config/locales/am.yml b/config/locales/am.yml
index 3d1f0e4b4..3a68a7f81 100644
--- a/config/locales/am.yml
+++ b/config/locales/am.yml
@@ -37,6 +37,8 @@ am:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ am:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 8eb577610..25c2760f2 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -37,6 +37,8 @@ ar:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: يجب ألا يكون فارغاً
webhook:
@@ -52,6 +54,14 @@ ar:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/az.yml b/config/locales/az.yml
index ab86b145a..59e96ea15 100644
--- a/config/locales/az.yml
+++ b/config/locales/az.yml
@@ -37,6 +37,8 @@ az:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ az:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index 08b32753c..1b7595267 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -37,6 +37,8 @@ bg:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ bg:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/bn.yml b/config/locales/bn.yml
index 5b7fe90d9..2a6bd9f38 100644
--- a/config/locales/bn.yml
+++ b/config/locales/bn.yml
@@ -37,6 +37,8 @@ bn:
account:
reporting_timezone:
invalid: বৈধ টাইমজোন নয়
+ support_email:
+ invalid: is not a valid email address
validations:
presence: ফাঁকা রাখা যাবে না
webhook:
@@ -52,6 +54,14 @@ bn:
not_found: অ্যাসাইনমেন্ট নীতি পাওয়া যায়নি
attachments:
invalid: অবৈধ সংযুক্তি
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: এই অ্যাকাউন্টের জন্য SAML ফিচার সক্রিয় নয়
sso_not_enabled: এই ইনস্টলেশনের জন্য SAML SSO সক্রিয় করা হয়নি
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index 9d5d5befa..9787db7bb 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -37,6 +37,8 @@ ca:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: no ha de quedar en blanc
webhook:
@@ -52,6 +54,14 @@ ca:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 64d341e03..a1793a4c1 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -37,6 +37,8 @@ cs:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ cs:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/da.yml b/config/locales/da.yml
index fc5b400cd..512b659ac 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -37,6 +37,8 @@ da:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: må ikke være tomt
webhook:
@@ -52,6 +54,14 @@ da:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/de.yml b/config/locales/de.yml
index df55ffaa6..0243b90a5 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -37,6 +37,8 @@ de:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: darf nicht leer sein
webhook:
@@ -52,6 +54,14 @@ de:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/devise.id.yml b/config/locales/devise.id.yml
index 13c2354e2..71b9f46fb 100644
--- a/config/locales/devise.id.yml
+++ b/config/locales/devise.id.yml
@@ -57,5 +57,5 @@ id:
not_found: "tidak ditemukan"
not_locked: "tidak terkunci"
not_saved:
- one: "1 kesalahan mengakibatkan %{resource} ini tidak dapat disimpan:"
+ one: "%{count} kesalahan mengakibatkan %{resource} ini tidak dapat disimpan:"
other: "%{count} kesalahan mengakibatkan %{resource} ini tidak dapat disimpan:"
diff --git a/config/locales/devise.ja.yml b/config/locales/devise.ja.yml
index c3e3fa27a..043cd8351 100644
--- a/config/locales/devise.ja.yml
+++ b/config/locales/devise.ja.yml
@@ -57,5 +57,5 @@ ja:
not_found: "見つかりませんでした"
not_locked: "はロックされていません"
not_saved:
- one: "1 個のエラーが発生し、 %{resource} を保存できませんでした:"
+ one: "%{count} 個のエラーが発生し、 %{resource} を保存できませんでした:"
other: "%{count} 個のエラーが発生し、 %{resource} を保存できませんでした:"
diff --git a/config/locales/devise.ko.yml b/config/locales/devise.ko.yml
index 4fbb33f29..846664ec9 100644
--- a/config/locales/devise.ko.yml
+++ b/config/locales/devise.ko.yml
@@ -57,5 +57,5 @@ ko:
not_found: "찾을 수 없습니다"
not_locked: "잠겨 있지 않습니다"
not_saved:
- one: "1개의 오류로 인해 이 %{resource}을(를) 저장할 수 없습니다:"
+ one: "%{count}개의 오류로 인해 이 %{resource}을(를) 저장할 수 없습니다:"
other: "%{count}개의 오류로 인해 이 %{resource}을(를) 저장할 수 없습니다:"
diff --git a/config/locales/devise.ms.yml b/config/locales/devise.ms.yml
index 16b3b47a3..ebcfe89e3 100644
--- a/config/locales/devise.ms.yml
+++ b/config/locales/devise.ms.yml
@@ -57,5 +57,5 @@ ms:
not_found: "not found"
not_locked: "was not locked"
not_saved:
- one: "1 error prohibited this %{resource} from being saved:"
+ one: "%{count} errors prohibited this %{resource} from being saved:"
other: "%{count} errors prohibited this %{resource} from being saved:"
diff --git a/config/locales/devise.th.yml b/config/locales/devise.th.yml
index fa41d7ef8..c9f52018d 100644
--- a/config/locales/devise.th.yml
+++ b/config/locales/devise.th.yml
@@ -57,5 +57,5 @@ th:
not_found: "not found"
not_locked: "was not locked"
not_saved:
- one: "1 error prohibited this %{resource} from being saved:"
+ one: "%{count} errors prohibited this %{resource} from being saved:"
other: "%{count} errors prohibited this %{resource} from being saved:"
diff --git a/config/locales/devise.vi.yml b/config/locales/devise.vi.yml
index d79e17a9d..947e756f3 100644
--- a/config/locales/devise.vi.yml
+++ b/config/locales/devise.vi.yml
@@ -57,5 +57,5 @@ vi:
not_found: "không tìm thấy"
not_locked: "không được khoá"
not_saved:
- one: "Có 1 lỗi được tìm thấy từ %{resource}:"
+ one: "Có %{count} lỗi được tìm thấy từ %{resource}:"
other: "Có %{count} lỗi được tìm thấy từ %{resource}:"
diff --git a/config/locales/devise.zh_CN.yml b/config/locales/devise.zh_CN.yml
index e91af4dde..00f239948 100644
--- a/config/locales/devise.zh_CN.yml
+++ b/config/locales/devise.zh_CN.yml
@@ -57,5 +57,5 @@ zh_CN:
not_found: "找不到"
not_locked: "未锁定"
not_saved:
- one: "1 个错误禁止保存 %{resource}:"
+ one: "%{count} 个错误禁止保存 %{resource}:"
other: "%{count} 个错误禁止保存 %{resource}:"
diff --git a/config/locales/devise.zh_TW.yml b/config/locales/devise.zh_TW.yml
index 02c32f76f..c5bd49450 100644
--- a/config/locales/devise.zh_TW.yml
+++ b/config/locales/devise.zh_TW.yml
@@ -57,5 +57,5 @@ zh_TW:
not_found: "找不到。"
not_locked: "並未被鎖定。"
not_saved:
- one: "1 個錯誤禁止儲存此 %{resource}:"
+ one: "有 %{count} 個錯誤導致 %{resource} 不能被儲存:"
other: "有 %{count} 個錯誤導致 %{resource} 不能被儲存:"
diff --git a/config/locales/el.yml b/config/locales/el.yml
index e3770b117..3dbdcefd3 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -37,6 +37,8 @@ el:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: δεν πρέπει να είναι κενό
webhook:
@@ -52,6 +54,14 @@ el:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 789853d1d..013ff5354 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -37,6 +37,8 @@ es:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: no debe estar en blanco
webhook:
@@ -52,6 +54,14 @@ es:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/et.yml b/config/locales/et.yml
index 634ef0cc9..1778895f2 100644
--- a/config/locales/et.yml
+++ b/config/locales/et.yml
@@ -37,6 +37,8 @@ et:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: ei tohi olla tühi
webhook:
@@ -52,6 +54,14 @@ et:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 5d3874460..c14c8a4d0 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -37,6 +37,8 @@ fa:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: نباید خالی باشد
webhook:
@@ -52,6 +54,14 @@ fa:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 4a74ecdbe..9e66eac93 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -37,6 +37,8 @@ fi:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ fi:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 503ae817a..f32ab8466 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -37,6 +37,8 @@ fr:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: Ne peut être vide
webhook:
@@ -52,6 +54,14 @@ fr:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/he.yml b/config/locales/he.yml
index 4d4df6d6f..67da6fb2c 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -37,6 +37,8 @@ he:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: לא יכול להיות ריק
webhook:
@@ -52,6 +54,14 @@ he:
not_found: מדיניות הקצאה לא נמצאה
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: תכונת SAML לא מופעלת עבור חשבון זה
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/hi.yml b/config/locales/hi.yml
index a00189938..212d49986 100644
--- a/config/locales/hi.yml
+++ b/config/locales/hi.yml
@@ -37,6 +37,8 @@ hi:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ hi:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index 418790547..712fc1631 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -37,6 +37,8 @@ hr:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ hr:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 2bbec32f1..efaa5ae7a 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -37,6 +37,8 @@ hu:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: nem lehet üres
webhook:
@@ -52,6 +54,14 @@ hu:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/hy.yml b/config/locales/hy.yml
index 993b520c5..8997a301f 100644
--- a/config/locales/hy.yml
+++ b/config/locales/hy.yml
@@ -37,6 +37,8 @@ hy:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: չպետք է դատարկ լինի
webhook:
@@ -52,6 +54,14 @@ hy:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/id.yml b/config/locales/id.yml
index 07bfb930a..aefcff3fe 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -37,6 +37,8 @@ id:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: tidak boleh kosong
webhook:
@@ -52,6 +54,14 @@ id:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/is.yml b/config/locales/is.yml
index 758f0723f..321ff3baa 100644
--- a/config/locales/is.yml
+++ b/config/locales/is.yml
@@ -37,6 +37,8 @@ is:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ is:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/it.yml b/config/locales/it.yml
index d75f10c2c..8ef40fceb 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -37,6 +37,8 @@ it:
account:
reporting_timezone:
invalid: non è un fuso orario valido
+ support_email:
+ invalid: non è un indirizzo email valido
validations:
presence: non deve essere vuoto
webhook:
@@ -52,6 +54,14 @@ it:
not_found: Policy di assegnazione non trovata
attachments:
invalid: Allegato non valido
+ upload:
+ missing_input: 'Nessun file o URL fornito'
+ invalid_url: 'URL fornito non valido'
+ fetch_failed: 'Impossibile recuperare il file dall''URL'
+ fetch_failed_with_message: 'Impossibile recuperare il file dall''URL: %{message}'
+ file_too_large: 'Il file supera la dimensione massima consentita'
+ unsupported_content_type: 'Tipo di file non supportato (sono ammessi solo immagini e video)'
+ unexpected: 'Si è verificato un errore imprevisto'
saml:
feature_not_enabled: Funzionalità SAML non attiva per questo account
sso_not_enabled: SAML SSO non è abilitato per questa installazione
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 99745a509..5e3412378 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -37,6 +37,8 @@ ja:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: 空白にはできません。
webhook:
@@ -52,6 +54,14 @@ ja:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
index 35ee5551d..ee4696938 100644
--- a/config/locales/ka.yml
+++ b/config/locales/ka.yml
@@ -37,6 +37,8 @@ ka:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ ka:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 9359651b8..c010ee2ac 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -37,6 +37,8 @@ ko:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: 비어 있을 수 없습니다
webhook:
@@ -52,6 +54,14 @@ ko:
not_found: 배정 정책을 찾을 수 없습니다
attachments:
invalid: 유효하지 않은 첨부 파일
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: 이 계정에서는 SAML 기능이 활성화되지 않았습니다
sso_not_enabled: 이 설치에서는 SAML SSO가 활성화되지 않았습니다
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
index 18dc11024..90f899071 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -37,6 +37,8 @@ lt:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: neturi būti tuščias
webhook:
@@ -52,6 +54,14 @@ lt:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO neįjungta šiai diegimo versijai
diff --git a/config/locales/lv.yml b/config/locales/lv.yml
index c23c81086..47cc547bc 100644
--- a/config/locales/lv.yml
+++ b/config/locales/lv.yml
@@ -37,6 +37,8 @@ lv:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: nedrīkst būt tukšs
webhook:
@@ -52,6 +54,14 @@ lv:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/ml.yml b/config/locales/ml.yml
index 63b770b2c..ddef447be 100644
--- a/config/locales/ml.yml
+++ b/config/locales/ml.yml
@@ -37,6 +37,8 @@ ml:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ ml:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/ms.yml b/config/locales/ms.yml
index ad64f4f53..617056d7e 100644
--- a/config/locales/ms.yml
+++ b/config/locales/ms.yml
@@ -37,6 +37,8 @@ ms:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ ms:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/ne.yml b/config/locales/ne.yml
index 7fcb084c2..f0635e7a3 100644
--- a/config/locales/ne.yml
+++ b/config/locales/ne.yml
@@ -37,6 +37,8 @@ ne:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: खाली हुनु हुँदैन
webhook:
@@ -52,6 +54,14 @@ ne:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: यस खाताको लागि SAML सुविधा सक्षम गरिएको छैन
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index e090b3e2b..1f79b90bd 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -37,6 +37,8 @@ nl:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: mag niet leeg zijn
webhook:
@@ -52,6 +54,14 @@ nl:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/no.yml b/config/locales/no.yml
index f68991515..493a0d58a 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -37,6 +37,8 @@
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: kan ikke være tom
webhook:
@@ -52,6 +54,14 @@
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 3b6ab744a..eb85a1bdb 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -37,6 +37,8 @@ pl:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: nie może być puste
webhook:
@@ -52,6 +54,14 @@ pl:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/pt.yml b/config/locales/pt.yml
index 0efa2f1a6..7ce751b51 100644
--- a/config/locales/pt.yml
+++ b/config/locales/pt.yml
@@ -37,6 +37,8 @@ pt:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: não pode estar vazio
webhook:
@@ -52,6 +54,14 @@ pt:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/pt_BR.yml b/config/locales/pt_BR.yml
index 44d454d79..00a53a284 100644
--- a/config/locales/pt_BR.yml
+++ b/config/locales/pt_BR.yml
@@ -37,6 +37,8 @@ pt_BR:
account:
reporting_timezone:
invalid: não é um fuso horário válido
+ support_email:
+ invalid: is not a valid email address
validations:
presence: não pode ficar em branco
webhook:
@@ -52,6 +54,14 @@ pt_BR:
not_found: Política de atribuição não encontrada
attachments:
invalid: Anexo inválido
+ upload:
+ missing_input: 'Nenhum arquivo ou URL fornecido'
+ invalid_url: 'URL fornecida inválida'
+ fetch_failed: 'Falha ao recuperar o arquivo da URL'
+ fetch_failed_with_message: 'Falha ao recuperar o arquivo da URL: %{message}'
+ file_too_large: 'O arquivo excede o tamanho máximo permitido'
+ unsupported_content_type: 'Tipo de arquivo não suportado (apenas imagens e vídeos são permitidos)'
+ unexpected: 'Ocorreu um erro inesperado'
saml:
feature_not_enabled: SAML não está habilitado para esta conta
sso_not_enabled: O SSO via SAML não está habilitado para esta instalação
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
index 6e4ec8eb7..5c60afe0c 100644
--- a/config/locales/ro.yml
+++ b/config/locales/ro.yml
@@ -37,6 +37,8 @@ ro:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: nu trebuie să fie gol
webhook:
@@ -52,6 +54,14 @@ ro:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index a297e8e62..2e6e0e9ef 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -37,6 +37,8 @@ ru:
account:
reporting_timezone:
invalid: неверный часовой пояс
+ support_email:
+ invalid: is not a valid email address
validations:
presence: не должен быть пустым
webhook:
@@ -52,6 +54,14 @@ ru:
not_found: Политика назначения не найдена
attachments:
invalid: Недопустимое вложение
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: Функция SAML не включена для этой учетной записи
sso_not_enabled: SSO SAML не включен для этой установки
diff --git a/config/locales/sh.yml b/config/locales/sh.yml
index 714947500..5527c21a9 100644
--- a/config/locales/sh.yml
+++ b/config/locales/sh.yml
@@ -37,6 +37,8 @@ sh:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: ne sme biti prazno
webhook:
@@ -52,6 +54,14 @@ sh:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index c452b8ce4..ec487afda 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -37,6 +37,8 @@ sk:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ sk:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index d8f0c5693..42981c8a0 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -37,6 +37,8 @@ sl:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: ne sme biti prazno
webhook:
@@ -52,6 +54,14 @@ sl:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/sq.yml b/config/locales/sq.yml
index b437e1658..6ad4e91a9 100644
--- a/config/locales/sq.yml
+++ b/config/locales/sq.yml
@@ -37,6 +37,8 @@ sq:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ sq:
not_found: Nuk u gjet politika e caktimit
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: "Nuk është dhënë asnjë skedar ose URL.\n"
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'Ndodhi një gabim i papritur'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index cd3e516b6..a86b4ad62 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -37,6 +37,8 @@ sr-Latn:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: ne sme biti prazno
webhook:
@@ -52,6 +54,14 @@ sr-Latn:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 06c6b19f2..08550469c 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -37,6 +37,8 @@ sv:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ sv:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/ta.yml b/config/locales/ta.yml
index 2c1b34ef4..b6a3c610e 100644
--- a/config/locales/ta.yml
+++ b/config/locales/ta.yml
@@ -37,6 +37,8 @@ ta:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ ta:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 94e32e821..b278ec442 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -37,6 +37,8 @@ th:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ th:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/tl.yml b/config/locales/tl.yml
index 7353177fe..0c536c4ec 100644
--- a/config/locales/tl.yml
+++ b/config/locales/tl.yml
@@ -37,6 +37,8 @@ tl:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: hindi dapat walang laman
webhook:
@@ -52,6 +54,14 @@ tl:
not_found: Hindi matagpuan ang patakaran sa pagtatalaga
attachments:
invalid: Hindi wastong kalakip
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: Hindi naka-enable ang tampok na SAML para sa account na ito
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 78feff87a..ac77a7282 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -37,6 +37,8 @@ tr:
account:
reporting_timezone:
invalid: geçerli bir saat dilimi değil
+ support_email:
+ invalid: is not a valid email address
validations:
presence: boş bırakılmamalı
webhook:
@@ -52,6 +54,14 @@ tr:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: Bu hesap için SAML özelliği etkinleştirilmemiş
sso_not_enabled: SAML SSO bu kurulum için etkinleştirilmemiş
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 45b637468..e0b007835 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -37,6 +37,8 @@ uk:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: не повинно бути пустим
webhook:
@@ -52,6 +54,14 @@ uk:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/ur.yml b/config/locales/ur.yml
index 48251a0c6..3d66bfed1 100644
--- a/config/locales/ur.yml
+++ b/config/locales/ur.yml
@@ -37,6 +37,8 @@ ur:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ ur:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/ur_IN.yml b/config/locales/ur_IN.yml
index 94d0e54ef..952b2b6fc 100644
--- a/config/locales/ur_IN.yml
+++ b/config/locales/ur_IN.yml
@@ -37,6 +37,8 @@ ur:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: must not be blank
webhook:
@@ -52,6 +54,14 @@ ur:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/vi.yml b/config/locales/vi.yml
index 3fbb47a63..c53f8de4c 100644
--- a/config/locales/vi.yml
+++ b/config/locales/vi.yml
@@ -37,6 +37,8 @@ vi:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: không được để trống
webhook:
@@ -52,6 +54,14 @@ vi:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index 5253f6769..9552f7133 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -244,11 +244,11 @@ zh:
removed: '%{user_name} 取消了优先级'
assignee:
self_assigned: '%{user_name} 自行分配这次会话'
- assigned: '由 %{assignee_name} 分配给 %{user_name}'
+ assigned: '由 %{user_name} 分配给 %{assignee_name}'
removed: '对话未被 %{user_name} 分配'
team:
- assigned: '由 %{team_name} 分配给 %{user_name}'
- assigned_with_assignee: '由 %{assignee_name} 分配给 %{team_name} 团队的 %{user_name}'
+ assigned: '由 %{user_name} 分配给 %{team_name}'
+ assigned_with_assignee: '由 %{user_name} 通过 %{team_name} 团队分配给 %{assignee_name}'
removed: '由 %{user_name} 从 %{team_name} 中取消分配'
labels:
added: '%{user_name} 添加 %{labels}'
diff --git a/config/locales/zh_CN.yml b/config/locales/zh_CN.yml
index 00e5a409f..0f6cd069f 100644
--- a/config/locales/zh_CN.yml
+++ b/config/locales/zh_CN.yml
@@ -37,6 +37,8 @@ zh_CN:
account:
reporting_timezone:
invalid: is not a valid timezone
+ support_email:
+ invalid: is not a valid email address
validations:
presence: 不能为空
webhook:
@@ -52,6 +54,14 @@ zh_CN:
not_found: Assignment policy not found
attachments:
invalid: Invalid attachment
+ upload:
+ missing_input: 'No file or URL provided'
+ invalid_url: 'Invalid URL provided'
+ fetch_failed: 'Failed to fetch file from URL'
+ fetch_failed_with_message: 'Failed to fetch file from URL: %{message}'
+ file_too_large: 'File exceeds the maximum allowed size'
+ unsupported_content_type: 'File type not supported (only images and videos are allowed)'
+ unexpected: 'An unexpected error occurred'
saml:
feature_not_enabled: SAML feature not enabled for this account
sso_not_enabled: SAML SSO is not enabled for this installation
@@ -247,11 +257,11 @@ zh_CN:
removed: '%{user_name} 取消了优先级'
assignee:
self_assigned: '%{user_name} 自行分配这次会话'
- assigned: '由 %{assignee_name} 分配给 %{user_name}'
+ assigned: '由 %{user_name} 分配给 %{assignee_name}'
removed: '对话未被 %{user_name} 分配'
team:
- assigned: '由 %{team_name} 分配给 %{user_name}'
- assigned_with_assignee: '由 %{assignee_name} 分配给 %{team_name} 团队的 %{user_name}'
+ assigned: '由 %{user_name} 分配给 %{team_name}'
+ assigned_with_assignee: '由 %{user_name} 通过 %{team_name} 团队分配给 %{assignee_name}'
removed: '由 %{user_name} 从 %{team_name} 中取消分配'
labels:
added: '%{user_name} 添加 %{labels}'
diff --git a/config/locales/zh_TW.yml b/config/locales/zh_TW.yml
index 8f5f069ae..775bcf000 100644
--- a/config/locales/zh_TW.yml
+++ b/config/locales/zh_TW.yml
@@ -37,6 +37,8 @@ zh_TW:
account:
reporting_timezone:
invalid: '不是有效的時區'
+ support_email:
+ invalid: '不是有效的電子郵件地址'
validations:
presence: '不能為空白'
webhook:
@@ -52,6 +54,14 @@ zh_TW:
not_found: '找不到分配策略'
attachments:
invalid: '無效的附件'
+ upload:
+ missing_input: '未提供檔案或 URL'
+ invalid_url: '提供的 URL 無效'
+ fetch_failed: '無法從 URL 擷取檔案'
+ fetch_failed_with_message: '無法從 URL 擷取檔案:%{message}'
+ file_too_large: '檔案超過允許的最大大小'
+ unsupported_content_type: '不支援的檔案類型(僅允許圖片和影片)'
+ unexpected: '發生未預期的錯誤'
saml:
feature_not_enabled: '此帳號尚未啟用 SAML 功能'
sso_not_enabled: '此安裝尚未啟用 SAML SSO'
diff --git a/db/migrate/20260410092751_add_edited_to_captain_assistant_responses.rb b/db/migrate/20260410092751_add_edited_to_captain_assistant_responses.rb
new file mode 100644
index 000000000..916bae3e5
--- /dev/null
+++ b/db/migrate/20260410092751_add_edited_to_captain_assistant_responses.rb
@@ -0,0 +1,5 @@
+class AddEditedToCaptainAssistantResponses < ActiveRecord::Migration[7.0]
+ def change
+ add_column :captain_assistant_responses, :edited, :boolean, default: false, null: false
+ end
+end
diff --git a/db/migrate/20260410092752_add_sync_columns_to_captain_documents.rb b/db/migrate/20260410092752_add_sync_columns_to_captain_documents.rb
new file mode 100644
index 000000000..f1a86b44c
--- /dev/null
+++ b/db/migrate/20260410092752_add_sync_columns_to_captain_documents.rb
@@ -0,0 +1,11 @@
+class AddSyncColumnsToCaptainDocuments < ActiveRecord::Migration[7.0]
+ def change
+ change_table :captain_documents, bulk: true do |t|
+ t.integer :sync_status
+ t.datetime :last_synced_at
+ t.datetime :last_sync_attempted_at
+ end
+
+ add_index :captain_documents, [:account_id, :sync_status]
+ end
+end
diff --git a/db/migrate/20260410092753_backfill_edited_on_captain_assistant_responses.rb b/db/migrate/20260410092753_backfill_edited_on_captain_assistant_responses.rb
new file mode 100644
index 000000000..eb0235e70
--- /dev/null
+++ b/db/migrate/20260410092753_backfill_edited_on_captain_assistant_responses.rb
@@ -0,0 +1,20 @@
+class BackfillEditedOnCaptainAssistantResponses < ActiveRecord::Migration[7.0]
+ def up
+ return unless ChatwootApp.enterprise?
+
+ # rubocop:disable Rails/SkipsModelValidations
+ # NOTE: Since there is no way of knowing currently which FAQs were edited by a human
+ # we use a heuristic based on time passed between created_at and updated_at.
+ # 15 days is arbitrary but seems reasonable for a user to go back and edit an FAQ.
+ Captain::AssistantResponse
+ .where('updated_at - created_at > make_interval(days := ?)', 15)
+ .in_batches(of: 1000) do |batch|
+ batch.update_all(edited: true)
+ end
+ # rubocop:enable Rails/SkipsModelValidations
+ end
+
+ def down
+ # no-op: rolling back migration of edited column will drop the edited column entirely
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 6841c252a..9d634681d 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[7.1].define(version: 2026_04_09_091202) do
+ActiveRecord::Schema[7.1].define(version: 2026_04_10_092753) do
# These extensions should be enabled to support this database
enable_extension "pg_stat_statements"
enable_extension "pg_trgm"
@@ -329,6 +329,7 @@ ActiveRecord::Schema[7.1].define(version: 2026_04_09_091202) do
t.datetime "updated_at", null: false
t.integer "status", default: 1, null: false
t.string "documentable_type"
+ t.boolean "edited", default: false, null: false
t.index ["account_id"], name: "index_captain_assistant_responses_on_account_id"
t.index ["assistant_id"], name: "index_captain_assistant_responses_on_assistant_id"
t.index ["documentable_id", "documentable_type"], name: "idx_cap_asst_resp_on_documentable"
@@ -377,10 +378,14 @@ ActiveRecord::Schema[7.1].define(version: 2026_04_09_091202) do
t.datetime "updated_at", null: false
t.integer "status", default: 0, null: false
t.jsonb "metadata", default: {}
+ t.integer "sync_status"
+ t.datetime "last_synced_at"
+ t.datetime "last_sync_attempted_at"
t.index ["account_id"], name: "index_captain_documents_on_account_id"
t.index ["assistant_id", "external_link"], name: "index_captain_documents_on_assistant_id_and_external_link", unique: true
t.index ["assistant_id"], name: "index_captain_documents_on_assistant_id"
t.index ["status"], name: "index_captain_documents_on_status"
+ t.index ["account_id", "sync_status"], name: "index_captain_documents_on_account_id_and_sync_status"
end
create_table "captain_inboxes", force: :cascade do |t|
diff --git a/enterprise/app/jobs/enterprise/create_stripe_customer_job.rb b/enterprise/app/jobs/enterprise/create_stripe_customer_job.rb
index 6b90cbec5..18223ae4b 100644
--- a/enterprise/app/jobs/enterprise/create_stripe_customer_job.rb
+++ b/enterprise/app/jobs/enterprise/create_stripe_customer_job.rb
@@ -3,5 +3,22 @@ class Enterprise::CreateStripeCustomerJob < ApplicationJob
def perform(account)
Enterprise::Billing::CreateStripeCustomerService.new(account: account).perform
+ ensure
+ # Always clear the is_creating_customer flag, even if the job fails
+ # This prevents users from getting stuck on the billing page
+ clear_creating_flag(account)
+ end
+
+ private
+
+ def clear_creating_flag(account)
+ # Atomic JSONB key removal — avoids clobbering concurrent writes to custom_attributes
+ # rubocop:disable Rails/SkipsModelValidations
+ Account.where(id: account.id).update_all(
+ "custom_attributes = custom_attributes - 'is_creating_customer'"
+ )
+ # rubocop:enable Rails/SkipsModelValidations
+ rescue StandardError => e
+ Rails.logger.error("Failed to clear is_creating_customer flag for account=#{account.id}: #{e.full_message}")
end
end
diff --git a/enterprise/app/models/captain/assistant_response.rb b/enterprise/app/models/captain/assistant_response.rb
index 12dcab1cc..db2ac058a 100644
--- a/enterprise/app/models/captain/assistant_response.rb
+++ b/enterprise/app/models/captain/assistant_response.rb
@@ -5,6 +5,7 @@
# id :bigint not null, primary key
# answer :text not null
# documentable_type :string
+# edited :boolean default(FALSE), not null
# embedding :vector(1536)
# question :string not null
# status :integer default("approved"), not null
@@ -35,6 +36,7 @@ class Captain::AssistantResponse < ApplicationRecord
before_validation :ensure_account
before_validation :ensure_status
+ before_validation :mark_as_edited, on: :update
after_commit :update_response_embedding
scope :ordered, -> { order(created_at: :desc) }
@@ -55,6 +57,10 @@ class Captain::AssistantResponse < ApplicationRecord
self.status ||= :approved
end
+ def mark_as_edited
+ self.edited = true if question_changed? || answer_changed?
+ end
+
def ensure_account
self.account = assistant&.account
end
diff --git a/enterprise/app/models/captain/document.rb b/enterprise/app/models/captain/document.rb
index 751162b28..d8e07a2d9 100644
--- a/enterprise/app/models/captain/document.rb
+++ b/enterprise/app/models/captain/document.rb
@@ -2,20 +2,24 @@
#
# Table name: captain_documents
#
-# id :bigint not null, primary key
-# content :text
-# external_link :string not null
-# metadata :jsonb
-# name :string
-# status :integer default("in_progress"), not null
-# created_at :datetime not null
-# updated_at :datetime not null
-# account_id :bigint not null
-# assistant_id :bigint not null
+# id :bigint not null, primary key
+# content :text
+# external_link :string not null
+# last_sync_attempted_at :datetime
+# last_synced_at :datetime
+# metadata :jsonb
+# name :string
+# status :integer default("in_progress"), not null
+# sync_status :integer
+# created_at :datetime not null
+# updated_at :datetime not null
+# account_id :bigint not null
+# assistant_id :bigint not null
#
# Indexes
#
# index_captain_documents_on_account_id (account_id)
+# index_captain_documents_on_account_id_and_sync_status (account_id,sync_status)
# index_captain_documents_on_assistant_id (assistant_id)
# index_captain_documents_on_assistant_id_and_external_link (assistant_id,external_link) UNIQUE
# index_captain_documents_on_status (status)
@@ -44,6 +48,8 @@ class Captain::Document < ApplicationRecord
available: 1
}
+ enum :sync_status, { syncing: 0, synced: 1, failed: 2 }, prefix: :sync
+
before_create :ensure_within_plan_limit
after_create_commit :enqueue_crawl_job
after_create_commit :update_document_usage
@@ -68,6 +74,22 @@ class Captain::Document < ApplicationRecord
pdf_file.blob.byte_size if pdf_file.attached?
end
+ def content_fingerprint
+ metadata&.dig('content_fingerprint')
+ end
+
+ def content_fingerprint=(value)
+ self.metadata = (metadata || {}).merge('content_fingerprint' => value)
+ end
+
+ def last_sync_error_code
+ metadata&.dig('last_sync_error_code')
+ end
+
+ def last_sync_error_code=(value)
+ self.metadata = (metadata || {}).merge('last_sync_error_code' => value)
+ end
+
def openai_file_id
metadata&.dig('openai_file_id')
end
diff --git a/enterprise/app/views/api/v1/models/captain/_assistant_response.json.jbuilder b/enterprise/app/views/api/v1/models/captain/_assistant_response.json.jbuilder
index c118c7647..9412b8c03 100644
--- a/enterprise/app/views/api/v1/models/captain/_assistant_response.json.jbuilder
+++ b/enterprise/app/views/api/v1/models/captain/_assistant_response.json.jbuilder
@@ -29,3 +29,4 @@ json.id resource.id
json.question resource.question
json.updated_at resource.updated_at.to_i
json.status resource.status
+json.edited resource.edited
diff --git a/enterprise/app/views/api/v1/models/captain/_document.json.jbuilder b/enterprise/app/views/api/v1/models/captain/_document.json.jbuilder
index 8064a5181..62710bc64 100644
--- a/enterprise/app/views/api/v1/models/captain/_document.json.jbuilder
+++ b/enterprise/app/views/api/v1/models/captain/_document.json.jbuilder
@@ -11,4 +11,8 @@ json.file_size resource.file_size
json.id resource.id
json.name resource.name
json.status resource.status
+json.sync_status resource.sync_status
+json.last_synced_at resource.last_synced_at&.to_i
+json.last_sync_attempted_at resource.last_sync_attempted_at&.to_i
+json.last_sync_error_code resource.last_sync_error_code
json.updated_at resource.updated_at.to_i
diff --git a/lib/captain/summary_service.rb b/lib/captain/summary_service.rb
index 16ee57b51..030c0e510 100644
--- a/lib/captain/summary_service.rb
+++ b/lib/captain/summary_service.rb
@@ -5,7 +5,7 @@ class Captain::SummaryService < Captain::BaseTaskService
make_api_call(
model: GPT_MODEL,
messages: [
- { role: 'system', content: prompt_from_file('summary') },
+ { role: 'system', content: system_prompt },
{ role: 'user', content: conversation.to_llm_text(include_contact_details: false) }
]
)
@@ -13,6 +13,14 @@ class Captain::SummaryService < Captain::BaseTaskService
private
+ def system_prompt
+ <<~PROMPT
+ #{prompt_from_file('summary')}
+
+ Reply in #{account.locale_english_name}.
+ PROMPT
+ end
+
def event_name
'summarize'
end
diff --git a/lib/custom_markdown_renderer.rb b/lib/custom_markdown_renderer.rb
index fea10388c..e7eefe5c8 100644
--- a/lib/custom_markdown_renderer.rb
+++ b/lib/custom_markdown_renderer.rb
@@ -9,6 +9,12 @@ class CustomMarkdownRenderer < CommonMarker::HtmlRenderer
@embed_regexes ||= config.transform_values { |embed_config| Regexp.new(embed_config['regex']) }
end
+ def table(node)
+ out('')
+ super
+ out('
')
+ end
+
def text(node)
content = node.string_content
diff --git a/lib/integrations/openai/openai_prompts/summary.liquid b/lib/integrations/openai/openai_prompts/summary.liquid
index 4ec5ffd5b..1ac05419a 100644
--- a/lib/integrations/openai/openai_prompts/summary.liquid
+++ b/lib/integrations/openai/openai_prompts/summary.liquid
@@ -17,7 +17,7 @@ Make sure you strongly adhere to the following rules when generating the summary
13. Do not insert your own opinions about the conversation.
-Reply in the user's language, as a markdown of the following format.
+Use markdown with the following format. Translate all section headings to match the reply language:
**Customer Intent**
diff --git a/lib/llm/config.rb b/lib/llm/config.rb
index 48de51022..6528e90c8 100644
--- a/lib/llm/config.rb
+++ b/lib/llm/config.rb
@@ -20,6 +20,7 @@ module Llm::Config
end
def with_api_key(api_key, api_base: nil)
+ initialize!
context = RubyLLM.context do |config|
config.openai_api_key = api_key
config.openai_api_base = api_base
@@ -34,6 +35,7 @@ module Llm::Config
RubyLLM.configure do |config|
config.openai_api_key = system_api_key if system_api_key.present?
config.openai_api_base = openai_endpoint.chomp('/') if openai_endpoint.present?
+ config.model_registry_file = Rails.root.join('config/llm_models.json').to_s
config.logger = Rails.logger
end
end
diff --git a/lib/tasks/ruby_llm.rake b/lib/tasks/ruby_llm.rake
new file mode 100644
index 000000000..0884f80c1
--- /dev/null
+++ b/lib/tasks/ruby_llm.rake
@@ -0,0 +1,17 @@
+# Refresh the RubyLLM model registry from models.dev and configured providers.
+# Updates config/llm_models.json so new models are available without a gem upgrade.
+#
+# Usage:
+# bundle exec rake ruby_llm:refresh_models
+#
+# Run this when new models are released, commit the updated config/llm_models.json.
+namespace :ruby_llm do
+ desc 'Refresh RubyLLM model registry from models.dev'
+ task refresh_models: :environment do
+ registry_path = Rails.root.join('config/llm_models.json').to_s
+ puts 'Refreshing RubyLLM model registry...'
+ RubyLLM.models.refresh!
+ RubyLLM.models.save_to_json(registry_path)
+ puts "RubyLLM model registry updated with #{RubyLLM.models.all.size} models at #{registry_path}"
+ end
+end
diff --git a/package.json b/package.json
index ddb6c09cc..8d45183e0 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@chatwoot/chatwoot",
- "version": "4.12.1",
+ "version": "4.13.0",
"license": "MIT",
"scripts": {
"eslint": "eslint app/**/*.{js,vue}",
@@ -34,7 +34,7 @@
"@amplitude/analytics-browser": "^2.11.10",
"@breezystack/lamejs": "^1.2.7",
"@chatwoot/ninja-keys": "1.2.3",
- "@chatwoot/prosemirror-schema": "1.3.9",
+ "@chatwoot/prosemirror-schema": "1.3.10",
"@chatwoot/utils": "^0.0.52",
"@formkit/core": "^1.7.2",
"@formkit/vue": "^1.7.2",
@@ -59,7 +59,7 @@
"@vueuse/components": "^12.0.0",
"@vueuse/core": "^12.0.0",
"activestorage": "^5.2.6",
- "axios": "^1.13.6",
+ "axios": "^1.15.0",
"camelcase-keys": "^9.1.3",
"chart.js": "~4.4.4",
"color2k": "^2.0.2",
@@ -85,6 +85,8 @@
"mitt": "^3.0.1",
"opus-recorder": "^8.0.5",
"pinia": "^3.0.4",
+ "prosemirror-commands": "^1.7.1",
+ "prosemirror-schema-list": "^1.5.1",
"qrcode": "^1.5.4",
"semver": "7.6.3",
"snakecase-keys": "^8.0.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cb4b2b148..ab9e7b241 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -26,8 +26,8 @@ importers:
specifier: 1.2.3
version: 1.2.3
'@chatwoot/prosemirror-schema':
- specifier: 1.3.9
- version: 1.3.9
+ specifier: 1.3.10
+ version: 1.3.10
'@chatwoot/utils':
specifier: ^0.0.52
version: 0.0.52
@@ -101,8 +101,8 @@ importers:
specifier: ^5.2.6
version: 5.2.8
axios:
- specifier: ^1.13.6
- version: 1.13.6
+ specifier: ^1.15.0
+ version: 1.15.0
camelcase-keys:
specifier: ^9.1.3
version: 9.1.3
@@ -178,6 +178,12 @@ importers:
pinia:
specifier: ^3.0.4
version: 3.0.4(typescript@5.6.2)(vue@3.5.12(typescript@5.6.2))
+ prosemirror-commands:
+ specifier: ^1.7.1
+ version: 1.7.1
+ prosemirror-schema-list:
+ specifier: ^1.5.1
+ version: 1.5.1
qrcode:
specifier: ^1.5.4
version: 1.5.4
@@ -454,8 +460,8 @@ packages:
'@chatwoot/ninja-keys@1.2.3':
resolution: {integrity: sha512-xM8d9P5ikDMZm2WbaCTk/TW5HFauylrU3cJ75fq5je6ixKwyhl/0kZbVN/vbbZN4+AUX/OaSIn6IJbtCgIF67g==}
- '@chatwoot/prosemirror-schema@1.3.9':
- resolution: {integrity: sha512-nbzvW4Rfe7EC+tHF/wWJK5pIxRzfQj/DDAtZI7pwM9uJfv9yQz6bAUCA7kz7Vq1NF29XOisZaT5W0005ygk1pg==}
+ '@chatwoot/prosemirror-schema@1.3.10':
+ resolution: {integrity: sha512-MtOXqFPHptFHu/AoIPhQ9TskVXOxOXCgBY/tgAtCAQRut978F7I3QxozQBECBz83ubsoXnBecpNjGNq0OPgONw==}
'@chatwoot/utils@0.0.52':
resolution: {integrity: sha512-e57uVqyVW4tj1gql4YJPNMykqMJPkETn5Y9AmHdhc6Y7oxDXfRXBq27fZrrDadLkZdn5RYVCZjfIhXOumyYv2Q==}
@@ -1546,7 +1552,7 @@ packages:
'@xmldom/xmldom@0.7.13':
resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==}
engines: {node: '>=10.0.0'}
- deprecated: this version is no longer supported, please update to at least 0.8.*
+ deprecated: this version has critical issues, please update to the latest version
abab@2.0.6:
resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
@@ -1716,8 +1722,8 @@ packages:
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
engines: {node: '>= 0.4'}
- axios@1.13.6:
- resolution: {integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==}
+ axios@1.15.0:
+ resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==}
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
@@ -3814,8 +3820,8 @@ packages:
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
engines: {node: '>= 0.6.0'}
- prosemirror-commands@1.6.0:
- resolution: {integrity: sha512-xn1U/g36OqXn2tn5nGmvnnimAj/g1pUx2ypJJIe8WkVX83WyJVC5LTARaxZa2AtQRwntu9Jc5zXs9gL9svp/mg==}
+ prosemirror-commands@1.7.1:
+ resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==}
prosemirror-dropcursor@1.8.1:
resolution: {integrity: sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==}
@@ -3841,8 +3847,8 @@ packages:
prosemirror-model@1.22.3:
resolution: {integrity: sha512-V4XCysitErI+i0rKFILGt/xClnFJaohe/wrrlT2NSZ+zk8ggQfDH4x2wNK7Gm0Hp4CIoWizvXFP7L9KMaCuI0Q==}
- prosemirror-schema-list@1.4.1:
- resolution: {integrity: sha512-jbDyaP/6AFfDfu70VzySsD75Om2t3sXTOdl5+31Wlxlg62td1haUpty/ybajSfJ1pkGadlOfwQq9kgW5IMo1Rg==}
+ prosemirror-schema-list@1.5.1:
+ resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==}
prosemirror-state@1.4.3:
resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==}
@@ -3853,6 +3859,9 @@ packages:
prosemirror-transform@1.10.0:
resolution: {integrity: sha512-9UOgFSgN6Gj2ekQH5CTDJ8Rp/fnKR2IkYfGdzzp5zQMFsS4zDllLVx/+jGcX86YlACpG7UR5fwAXiWzxqWtBTg==}
+ prosemirror-transform@1.12.0:
+ resolution: {integrity: sha512-GxboyN4AMIsoHNtz5uf2r2Ru551i5hWeCMD6E2Ib4Eogqoub0NflniaBPVQ4MrGE5yZ8JV9tUHg9qcZTTrcN4w==}
+
prosemirror-utils@1.2.2:
resolution: {integrity: sha512-7a2MPf99oCW8/587rQYI1/snX71Ban40+apr1hLkY8TmU9YXd7JeR6QsmktcTisJURO3WRjxIia4lTMsYgZVOw==}
peerDependencies:
@@ -3865,8 +3874,9 @@ packages:
proto-list@1.2.4:
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
- proxy-from-env@1.1.0:
- resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+ proxy-from-env@2.1.0:
+ resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==}
+ engines: {node: '>=10'}
psl@1.9.0:
resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
@@ -4966,10 +4976,10 @@ snapshots:
hotkeys-js: 3.8.7
lit: 2.2.6
- '@chatwoot/prosemirror-schema@1.3.9':
+ '@chatwoot/prosemirror-schema@1.3.10':
dependencies:
markdown-it-sup: 2.0.0
- prosemirror-commands: 1.6.0
+ prosemirror-commands: 1.7.1
prosemirror-dropcursor: 1.8.1
prosemirror-gapcursor: 1.3.2
prosemirror-history: 1.4.1
@@ -4978,7 +4988,7 @@ snapshots:
prosemirror-markdown: 1.13.0
prosemirror-menu: 1.2.4
prosemirror-model: 1.22.3
- prosemirror-schema-list: 1.4.1
+ prosemirror-schema-list: 1.5.1
prosemirror-state: 1.4.3
prosemirror-tables: 1.5.0
prosemirror-utils: 1.2.2(prosemirror-model@1.22.3)(prosemirror-state@1.4.3)
@@ -6349,11 +6359,11 @@ snapshots:
dependencies:
possible-typed-array-names: 1.0.0
- axios@1.13.6:
+ axios@1.15.0:
dependencies:
follow-redirects: 1.15.11
form-data: 4.0.5
- proxy-from-env: 1.1.0
+ proxy-from-env: 2.1.0
transitivePeerDependencies:
- debug
@@ -8704,11 +8714,11 @@ snapshots:
process@0.11.10: {}
- prosemirror-commands@1.6.0:
+ prosemirror-commands@1.7.1:
dependencies:
prosemirror-model: 1.22.3
prosemirror-state: 1.4.3
- prosemirror-transform: 1.10.0
+ prosemirror-transform: 1.12.0
prosemirror-dropcursor@1.8.1:
dependencies:
@@ -8748,7 +8758,7 @@ snapshots:
prosemirror-menu@1.2.4:
dependencies:
crelt: 1.0.5
- prosemirror-commands: 1.6.0
+ prosemirror-commands: 1.7.1
prosemirror-history: 1.4.1
prosemirror-state: 1.4.3
@@ -8756,7 +8766,7 @@ snapshots:
dependencies:
orderedmap: 2.1.0
- prosemirror-schema-list@1.4.1:
+ prosemirror-schema-list@1.5.1:
dependencies:
prosemirror-model: 1.22.3
prosemirror-state: 1.4.3
@@ -8780,6 +8790,10 @@ snapshots:
dependencies:
prosemirror-model: 1.22.3
+ prosemirror-transform@1.12.0:
+ dependencies:
+ prosemirror-model: 1.22.3
+
prosemirror-utils@1.2.2(prosemirror-model@1.22.3)(prosemirror-state@1.4.3):
dependencies:
prosemirror-model: 1.22.3
@@ -8793,7 +8807,7 @@ snapshots:
proto-list@1.2.4: {}
- proxy-from-env@1.1.0: {}
+ proxy-from-env@2.1.0: {}
psl@1.9.0: {}
diff --git a/spec/controllers/api/v1/accounts/automation_rules_controller_spec.rb b/spec/controllers/api/v1/accounts/automation_rules_controller_spec.rb
index ff882da4f..5b7c0112d 100644
--- a/spec/controllers/api/v1/accounts/automation_rules_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts/automation_rules_controller_spec.rb
@@ -68,6 +68,12 @@ RSpec.describe 'Api::V1::Accounts::AutomationRulesController', type: :request do
'action_name': :assign_team,
'action_params': [1]
},
+ {
+ 'action_name': :remove_assigned_agent
+ },
+ {
+ 'action_name': :remove_assigned_team
+ },
{
'action_name': :add_label,
'action_params': %w[support priority_customer]
diff --git a/spec/controllers/api/v1/accounts/macros_controller_spec.rb b/spec/controllers/api/v1/accounts/macros_controller_spec.rb
index 87d301d88..1af908e11 100644
--- a/spec/controllers/api/v1/accounts/macros_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts/macros_controller_spec.rb
@@ -78,6 +78,9 @@ RSpec.describe 'Api::V1::Accounts::MacrosController', type: :request do
'action_name': :add_label,
'action_params': %w[support priority_customer]
},
+ {
+ 'action_name': :remove_assigned_agent
+ },
{
'action_name': :remove_assigned_team
},
@@ -484,6 +487,22 @@ RSpec.describe 'Api::V1::Accounts::MacrosController', type: :request do
expect(conversation.reload.team_id).to be_nil
end
+
+ it 'Unassign the agent' do
+ macro.update!(actions: [
+ { 'action_name' => 'remove_assigned_agent' }
+ ])
+ conversation.update!(assignee: user_1)
+ expect(conversation.reload.assignee).to be_present
+
+ perform_enqueued_jobs do
+ post "/api/v1/accounts/#{account.id}/macros/#{macro.id}/execute",
+ params: { conversation_ids: [conversation.display_id] },
+ headers: administrator.create_new_auth_token
+ end
+
+ expect(conversation.reload.assignee).to be_nil
+ end
end
end
end
diff --git a/spec/lib/captain/summary_service_spec.rb b/spec/lib/captain/summary_service_spec.rb
index 6da3f122b..c5ec50687 100644
--- a/spec/lib/captain/summary_service_spec.rb
+++ b/spec/lib/captain/summary_service_spec.rb
@@ -35,7 +35,8 @@ RSpec.describe Captain::SummaryService do
expect(service).to receive(:make_api_call) do |args|
expect(args[:messages].length).to eq(2)
expect(args[:messages][0][:role]).to eq('system')
- expect(args[:messages][0][:content]).to eq('Summarize this')
+ expect(args[:messages][0][:content]).to include('Summarize this')
+ expect(args[:messages][0][:content]).to include("Reply in #{account.locale_english_name}")
expect(args[:messages][1][:role]).to eq('user')
expect(args[:messages][1][:content]).to be_a(String)
{ message: 'Summary' }
diff --git a/spec/models/automation_rule_spec.rb b/spec/models/automation_rule_spec.rb
index cd6297713..7ae73496c 100644
--- a/spec/models/automation_rule_spec.rb
+++ b/spec/models/automation_rule_spec.rb
@@ -37,6 +37,12 @@ RSpec.describe AutomationRule do
action_name: :assign_team,
action_params: [1]
},
+ {
+ action_name: :remove_assigned_agent
+ },
+ {
+ action_name: :remove_assigned_team
+ },
{
action_name: :add_label,
action_params: %w[support priority_customer]
diff --git a/spec/presenters/conversations/event_data_presenter_spec.rb b/spec/presenters/conversations/event_data_presenter_spec.rb
index bf0eaf6f6..76fd8f8a8 100644
--- a/spec/presenters/conversations/event_data_presenter_spec.rb
+++ b/spec/presenters/conversations/event_data_presenter_spec.rb
@@ -44,4 +44,29 @@ RSpec.describe Conversations::EventDataPresenter do
expect(presenter.push_data.except(:applied_sla, :sla_events)).to include(expected_data)
end
end
+
+ describe '#webhook_data' do
+ it 'normalizes hard-break backslashes in message content' do
+ message = create(:message, conversation: conversation, account: conversation.account,
+ message_type: :outgoing, content: "Hello\\\nWorld")
+ data = presenter.webhook_data
+ webhook_message = data[:messages].first
+
+ expect(webhook_message).to be_present
+ expect(webhook_message[:content]).to eq("Hello\nWorld")
+ expect(webhook_message[:id]).to eq(message.id)
+ end
+
+ it 'preserves normal newlines in message content' do
+ create(:message, conversation: conversation, account: conversation.account,
+ message_type: :outgoing, content: "Line one\n\nLine two")
+ webhook_message = presenter.webhook_data[:messages].first
+
+ expect(webhook_message[:content]).to eq("Line one\n\nLine two")
+ end
+
+ it 'returns empty messages when conversation has no chat messages' do
+ expect(presenter.webhook_data[:messages]).to eq([])
+ end
+ end
end
diff --git a/spec/presenters/message_content_presenter_spec.rb b/spec/presenters/message_content_presenter_spec.rb
index d12e0d4d0..8b999ec80 100644
--- a/spec/presenters/message_content_presenter_spec.rb
+++ b/spec/presenters/message_content_presenter_spec.rb
@@ -63,6 +63,26 @@ RSpec.describe MessageContentPresenter do
it 'returns raw content without markdown rendering' do
expect(presenter.webhook_content).to eq('Regular **bold** message')
end
+
+ it 'strips CommonMark hard-break backslashes before newlines' do
+ message.update!(content: "First\\\nSecond\\\nThird\\\nFourth")
+ expect(presenter.webhook_content).to eq("First\nSecond\nThird\nFourth")
+ end
+
+ it 'preserves backslashes that are not followed by a newline' do
+ message.update!(content: "path\\to\\file\\\nNext line")
+ expect(presenter.webhook_content).to eq("path\\to\\file\nNext line")
+ end
+
+ it 'handles carriage return and newline pairs' do
+ message.update!(content: "Line one\\\r\nLine two\\\r\nLine three")
+ expect(presenter.webhook_content).to eq("Line one\nLine two\nLine three")
+ end
+
+ it 'preserves normal newlines and only strips hard-break newlines' do
+ message.update!(content: "line one\\\nline two\n\nline three")
+ expect(presenter.webhook_content).to eq("line one\nline two\n\nline three")
+ end
end
context 'when message is input_csat and inbox is not web widget' do
diff --git a/spec/services/action_service_spec.rb b/spec/services/action_service_spec.rb
index f4c20b191..99ac2afc7 100644
--- a/spec/services/action_service_spec.rb
+++ b/spec/services/action_service_spec.rb
@@ -70,6 +70,33 @@ describe ActionService do
expect(conversation.reload.assignee).to eq(original_assignee)
end
end
+
+ context 'when assigning the last responding agent' do
+ it 'assigns the last agent who replied publicly' do
+ note_author = create(:user, account: account, role: :agent)
+ inbox_member
+ create(:inbox_member, inbox: conversation.inbox, user: note_author)
+ create(:message, message_type: :outgoing, account: account,
+ inbox: conversation.inbox, conversation: conversation, sender: agent)
+ create(:message, message_type: :outgoing, private: true, account: account,
+ inbox: conversation.inbox, conversation: conversation, sender: note_author)
+
+ action_service.assign_agent(['last_responding_agent'])
+
+ expect(conversation.reload.assignee).to eq(agent)
+ end
+
+ it 'does not assign the conversation when there is no public agent reply' do
+ inbox_member
+ original_assignee = conversation.assignee
+ create(:message, message_type: :outgoing, private: true, account: account,
+ inbox: conversation.inbox, conversation: conversation, sender: agent)
+
+ action_service.assign_agent(['last_responding_agent'])
+
+ expect(conversation.reload.assignee).to eq(original_assignee)
+ end
+ end
end
describe '#assign_team' do
@@ -112,4 +139,15 @@ describe ActionService do
end
end
end
+
+ describe '#remove_assigned_agent' do
+ let(:conversation) { create(:conversation, :with_assignee, account: account) }
+ let(:action_service) { described_class.new(conversation) }
+
+ it 'unassigns the conversation' do
+ expect(conversation.reload.assignee).to be_present
+ action_service.remove_assigned_agent(nil)
+ expect(conversation.reload.assignee).to be_nil
+ end
+ end
end
diff --git a/spec/services/automation_rules/action_service_spec.rb b/spec/services/automation_rules/action_service_spec.rb
index b4eaa5dd0..f24617d29 100644
--- a/spec/services/automation_rules/action_service_spec.rb
+++ b/spec/services/automation_rules/action_service_spec.rb
@@ -88,8 +88,31 @@ RSpec.describe AutomationRules::ActionService do
end
end
+ describe '#perform with remove assignment actions' do
+ let!(:team) { create(:team, account: account) }
+
+ before do
+ conversation.update!(assignee: agent, team: team)
+ rule.actions = [
+ { action_name: 'remove_assigned_agent', action_params: [] },
+ { action_name: 'remove_assigned_team', action_params: [] }
+ ]
+ rule.save!
+ end
+
+ it 'removes assignee and team from the conversation' do
+ described_class.new(rule, account, conversation).perform
+
+ expect(conversation.reload.assignee).to be_nil
+ expect(conversation.team).to be_nil
+ end
+ end
+
describe '#perform with send_email_transcript action' do
before do
+ allow(account).to receive(:email_transcript_enabled?).and_return(true)
+ allow(account).to receive(:within_email_rate_limit?).and_return(true)
+ allow(account).to receive(:increment_email_sent_count).and_return(true)
rule.actions << { action_name: 'send_email_transcript', action_params: ['contact@example.com, agent@example.com,agent1@example.com'] }
rule.save
end
@@ -178,5 +201,21 @@ RSpec.describe AutomationRules::ActionService do
described_class.new(rule, account, conversation).perform
end
end
+
+ describe '#perform with assign_agent action' do
+ before do
+ create(:inbox_member, inbox: conversation.inbox, user: agent)
+ rule.actions << { action_name: 'assign_agent', action_params: ['last_responding_agent'] }
+ end
+
+ it 'assigns the conversation to the last responding agent' do
+ create(:message, message_type: :outgoing, account: account,
+ inbox: conversation.inbox, conversation: conversation, sender: agent)
+
+ described_class.new(rule, account, conversation).perform
+
+ expect(conversation.reload.assignee).to eq(agent)
+ end
+ end
end
end
diff --git a/spec/services/macros/execution_service_spec.rb b/spec/services/macros/execution_service_spec.rb
index b5bf13044..d44f7793a 100644
--- a/spec/services/macros/execution_service_spec.rb
+++ b/spec/services/macros/execution_service_spec.rb
@@ -49,6 +49,18 @@ RSpec.describe Macros::ExecutionService, type: :service do
end
end
+ describe '#assign_team' do
+ let(:team) { create(:team, account: account, allow_auto_assign: false) }
+
+ context 'when team_id is nil' do
+ it 'unassigns the team from the conversation' do
+ conversation.update!(team_id: team.id)
+ service.send(:assign_team, ['nil'])
+ expect(conversation.reload.team).to be_nil
+ end
+ end
+ end
+
describe '#assign_agent' do
context 'when agent_ids contains self' do
it 'updates the conversation assignee to the current user' do
@@ -69,6 +81,14 @@ RSpec.describe Macros::ExecutionService, type: :service do
expect(conversation.reload.assignee).to eq(other_user)
end
end
+
+ context 'when agent_ids contains nil' do
+ it 'unassigns the conversation' do
+ conversation.update!(assignee: user)
+ service.send(:assign_agent, ['nil'])
+ expect(conversation.reload.assignee).to be_nil
+ end
+ end
end
describe '#add_private_note' do