Deskhero Developer Hub
Back to deskhero.com
Plans

Change plan

Moves the workspace onto another plan straight away and records the change as a billing event, so the new limits apply immediately and the response is the refreshed limits and usage. Billing details and a payment method have to be on file for anything other than the free plan, the workspace cannot already be on the requested plan, a workspace that has started a paid plan cannot return to the free plan, and workspaces billed through Shopify are refused here and have to use the Shopify variant.

POST /api/{tenant:minlength(2)}/v{version:apiVersion}/plans/change_plan
Authorisation
Minimum role: OWNER

Request arguments

Name Type Source
inputDTO_tenant_change_plan_inputBody
Request body example

Response

Status
200 (OK)
Type
DTO_plan_limits
Wrapper
DTO_response_wrap
Other statuses
400 (BadRequest), 401 (Unauthorized), 403 (Forbidden), 429 (TooManyRequests)
Response body example
DTO_tenant_change_plan_input
NameTypeReadOnlyDescription
planENUM tenant_planPlan
capped_amountDoubleCapped amount
DTO_plan_limits
NameTypeReadOnlyDescription
current_planENUM tenant_planCurrent plan
is_trialBooleanIs trial
trial_end_dateDateTime (nullable)Trial end date
expired_trialBooleanExpired trial
capped_amountDTO_capped_amountCapped amount
plansDTO_plan_limit[]Plans
usageDTO_plan_limitUsage
DTO_capped_amount
NameTypeReadOnlyDescription
is_shopify_paymentBooleanReadOnlyIs shopify payment
current_user_countInt32ReadOnlyCurrent user count
current_invite_countInt32ReadOnlyCurrent invite count
require_increaseBooleanReadOnlyRequire increase
minimum_required_capDoubleReadOnlyMinimum required cap
current_capDoubleReadOnlyCurrent cap
DTO_plan_limit
NameTypeReadOnlyDescription
planENUM tenant_planPlan
price_usdDoublePrice usd
price_usd_minimumDoublePrice usd minimum
ticketsInt32Tickets
included_tickets_per_monthInt32Included billable tickets per UTC calendar month.
overage_price_per_1000_usdDecimalPrice in USD per 1,000 additional tickets; billed per ticket.
included_chat_sessions_per_monthInt32Included chat sessions per UTC calendar month.
chat_session_price_per_1000_usdDecimalPrice in USD per 1,000 additional chat sessions.
retention_monthsInt32Configured retention period in months; deletion is not enabled by this setting.
max_num_integrationsInt32Included integrations.
ai_suggested_answersBooleanAi suggested answers
mailboxesInt32Mailboxes
kbsInt32Kbs
web_scraped_pagesInt32Web scraped pages
integration_shopify_customer_cardBooleanIntegration shopify customer card
integration_shopify_product_syncInt32Was a bool hardcoded true, which hid a limit that is actually enforced (PlanSpecs.MaxNumShopifyProductsSync, PlanUsageEntity.SHOPIFY_PRODUCTS_SYNC). The public pricing page has always advertised it as a per-plan number, so this now carries the number.
automation_rulesInt32Automation rules
formsInt32Forms
multilingual_conversationsBooleanMultilingual conversations
ai_training_dataBooleanAi training data
sso_google_microsoftBooleanSso google microsoft
api_accessBooleanApi access
listsInt32Lists
list_entriesInt32List entries
fieldsInt32Fields
groupsInt32Groups
sla_policiesBooleanThe only feature flag here backed by real data (PlanSpec.EnableSla, per-tenant override on PlanSpecDeviation.EnableSla, plus the global TempEnableSla kill switch). Everything below is hardcoded true - included on every plan - and exists so the in-app plan table lists the same features as the public pricing page.
statisticsBooleanStatistics
email_attachment_readingBooleanEmail attachment reading
ai_chat_botBooleanAi chat bot
public_faqBooleanPublic faq
auto_replies_from_faqBooleanAuto replies from faq
insightsBooleanInsights
chat_bot_sessionsInt32NOT ENFORCED. The public pricing page advertises 500/2000/5000 sessions per month, but nothing in the backend counts or caps them - there is no PlanSpecs column and no PlanUsageEntity. Surfaced here so the in-app plan table can state the same thing the customer was sold; move it to real plan data if the limit is ever implemented, and populate DTO_plan_limits.usage for it at the same time.
notifications_and_mentionsBooleanNotifications and mentions
ticket_forwardingBooleanTicket forwarding
agents_includedInt32Agents included
free_trial_daysInt32Free trial days
ENUM tenant_plan

Tenant plans

ValueNameDescription
0UNKNOWNUNKNOWN
1FREEFREE
2SMALLSMALL
3MEDIUMMEDIUM
4LARGELARGE

Generated Sep 18, 2026 09:32