Skip to content

Choose the plan for your free trial

Open .md

POST/v1/api/store/{team_slug}/setting/subscription/plan/select_trial

v1Operation ID v1_public_setting_subscription_plan_select_trial

Sets which plan's features the team gets during its free trial. Send a trial_plan_id from the plan list. It charges nothing.

It works only while the team can still trial: its trial hasn't ended and it has no subscription. Returns your company details.

Permission

The team owner, or a member with the Manage Billing permission. Manage Settings alone is not enough.

Side effects

  • Changes which features the team has during the trial.

Path parameters

  • team_slugstringrequired

    Your team slug, shown as Team ID next to your API key in Profile.

    • Example your-team

Request body

application/json, required.

  • plan_idstringrequired

    A trial_plan_id from the plan list.

    • At most 191 characters

Response

200Successful response.

  • dataobjectrequired
    Child fields (25)
    • custom_domainstring | nullrequired

      The host your customer portal is served on, or null.

    • idstringrequired
    • namestringrequired
    • payment_gatewayarray of objectsrequired

      The payment gateways your customers can pay through, with only their public identifiers (for example a Stripe publishable key). Empty when the plan has no payment integration.

    • planobjectrequired

      The team's YoPrint plan.

      Child fields (4)
      • activebooleanrequired

        Whether the plan is active now.

      • detailobjectrequired

        With a subscription: name, status, active and need_to_select_plan. On a trial or free plan: id, name, archive, need_to_select_plan, and on a trial expire_at and status (active or expired).

        Child fields (7)
        • activeboolean
        • archiveboolean
        • expire_atstring (date-time) | null
        • idstring
        • namestring | null

          With a subscription, always default; otherwise the trial or free plan's name.

        • True when the team must choose a plan before it can go on.

        • statusstring | null
      • featuresobjectrequired

        What the plan allows: features, limits and integrations, keyed by name.

      • typestringrequired

        paid with a subscription; otherwise trial or free.

        • One of: "paid", "trial", "free"
    • slugstringrequired

      The {team_slug} in every path.

    • timezonestringrequired
    • channel_idinteger

      The team's number, used by YoPrint's live-update channel.

    • customer_portal_bgstring | null

      The customer portal background image, or null.

    • dimensionstring | null

      Length unit: m, cm, mm or in.

    • emailstring | null
    • favicon_urlstring | null

      The customer portal favicon (the icon in the browser tab), or null when none is uploaded.

    • ga_idstring

      An analytics id: YxPx and the team's number (channel_id).

    • logo_urlstring | null
    • onboard_statusstring | null
    • phonestring | null
    • phone_countrystring | null
    • plan_regionstring | null
    • seededboolean
    • tax_numberstring | null
    • trial_expires_atstring (date-time)
    • websitestring | null
    • weightstring | null

      Weight unit: kg, g, lbs or oz.

  • statusintegerrequired
  • successbooleanrequired

Errors

  • 401The API key is missing or wrong (unauthenticated).

  • 403You are not allowed to do this. api_access_not_in_plan: your team's plan doesn't include API access (Pro and above, with an active subscription or trial), so every request answers this until the team upgrades. When your role lacks the permission the operation needs, the body is only {"message": "Insufficient Permission"}. Other refusals use the error envelope, with unauthorized or user_is_not_authorized.

    When
    You are not the owner and your role lacks Manage Billing. The body is {"message": "Insufficient Permission"}, without the error envelope.
    Fix
    Use the owner's key, or that of a member with Manage Billing.
  • 404Not found. page_not_found: the team slug is unknown, you are not a member of the team, or an id in the path is not one of this team's. code: null, with a message that starts "No query results for": there is no record with that id.

  • 422The request was refused and changed nothing. validation_failed lists what to fix in error.fields; other codes name a business rule, explained in error.message. A few checks answer with only {"message": "..."}. An operation that calls another service (a payment provider, a carrier, an accounting app) can answer connect_timeout ("Please retry again") when that service does not answer in time: the change may or may not have happened there, so read the record back before you retry.

    When
    The plan is not a trial plan you can choose, or the team can no longer trial: error.code invalid_plan. A missing plan_id is validation_failed.
    Fix
    Use a trial_plan_id from the plan list, or subscribe with checkout.

Notes

  • Part of your YoPrint subscription: what your shop pays YoPrint, not your customers' payments.
  • AI apps (MCP connections) can't call this operation: they get 403 agent_operation_not_available. Use a personal API key.