26 days leftExisting HubSpot accounts can create legacy private apps until 26 October 2026

Keep your v1 HubSpot integration running on the date-based API

Legacy Bridge performs each v1 to v3 call through HubSpot’s date-based API and answers in the legacy format. Change the base URL, keep the code.

Your integration sendsContacts API v1

GET /contacts/v1/lists/all/contacts/all
    ?count=2&vidOffset=7000059

Legacy Bridge callsDate-based API 2026-09

GET /crm/properties/2026-09/contacts
GET /crm/objects/2026-09/contacts
  ?limit=2
  &after=7000059
  &properties=firstname,lastname,company,lastmodifieddate,email,…
and answers in v1:"contacts": [{ "vid": 7000060, … }]"has-more": true"vid-offset": 7000063Fixture hubspot/contacts-v1/list-all-page from our test suite

What HubSpot has announced

The legacy APIs lose support in steps. Integrations written against them need a path to the date-based API.

  1. 28 Sep and 26 Oct 202626 days left

    No new legacy private apps

    HubSpot disables legacy private app creation on 28 September 2026 for new accounts and on 26 October 2026 for existing ones. New tokens come from projects-based apps.

  2. v4 support ends

    HubSpot ends support for its v4 APIs, announced separately earlier in 2026.

  3. v1 to v3 become unsupported

    Endpoints with /v1/, /v2/ and /v3/ in the path, legacy public apps and legacy private apps get no more bug fixes, reliability improvements or security updates. HubSpot has not announced a switch-off date.

Source: HubSpot developer changelog, Legacy APIs and Apps: What’s Going Unsupported and When (15 September 2026), checked on 30 September 2026.

Three changes on your side, none in your code

The bridge accepts legacy v1 to v3 calls, performs them through the date-based API with a token of your portal, and answers with the same fields, paging and error bodies.

  1. Save a token of your portalOnce per portal

    Create a private app in a HubSpot project, or an app with static auth, give it the scopes of the APIs your integration calls, and paste its access token into the console. It is stored sealed and never shown again.

  2. Point the integration at the bridgeOne base URL, one credential

    # the only line that changes - https://api.hubapi.com/contacts/v1/lists/all/contacts/all + https://hubspot.avakode.com/contacts/v1/lists/all/contacts/all

    Send the bridge key where the integration sent its token: Authorization: Bearer <bridge key>, or ?hapikey=<bridge key> for code written against API keys. Paths, parameters and bodies stay as they are.

  3. Watch the gap reportHonest coverage

    Every call is counted per operation. A call the bridge cannot translate answers 501 BRIDGE_UNSUPPORTED and gets a line in your gap report, never an empty success. Agencies see the report per client portal.

What translates today, straight from the registry

Every legacy operation lives in the bridge’s registry with its status. This page is generated from it, so it cannot claim more than the code does.

1,067of 1,293 legacy HubSpot operations translated to the date-based API: 996 fully, 71 with documented limits.
  • 996 translated
  • 71 partial
  • 60 passed through
  • 166 not translated

60 more have no date-based version at all; the bridge passes them to HubSpot’s legacy endpoint while HubSpot keeps it. The 166 others answer 501 BRIDGE_UNSUPPORTED.

Coverage of the classic v1 and v2 APIs
The APIs most integrations were written againstShareAnswered
Contacts v114 / 23
Contact lists v112 / 12
Companies v28 / 10
Deals v17 / 8
Pipelines v17 / 7
Engagements v17 / 9
Associations v15 / 5
Properties v1 and v239 / 39
Owners v22 / 2
Tickets v19 / 10
Forms v1 to v37 + 3 / 11
Email subscriptions v13 + 1 / 4
Workflows v2 and v30 + 8 / 8
Blog posts v20 + 16 / 16
Timeline v10 / 13
Products and line items v10 / 20

“Answered” counts translated and partial operations, plus the ones passed through, of all the operations in that API.

Find every legacy call in your code

Upload a ZIP of your integration or paste the HubSpot URLs it calls. You get each legacy call, whether the bridge translates it, and the share it covers today. Free, and nothing is stored.

  • A ZIP of the code: JS/TS, PHP, Python, Ruby, Java, Kotlin, Go, C#, shell
  • Paths built by concatenation, template strings, f-strings, sprintf placeholders and […].join('/')
  • Or a list of URLs, optionally with the HTTP method in front
  • Skips node_modules, vendor, build and hidden folders; files up to 2 MB, 5,000 files

or

The upload is read in memory and discarded with the report. Nothing is stored or logged.

Rewrite on the date-based API, or bridge it

The version moves into the path (/crm/v3/objects/contacts becomes /crm/objects/2026-09/contacts), and not every call is a rename. In HubSpot’s own catalogue, 44 of 1,040 legacy operations have no date-based counterpart at all, 95 change in a breaking way and 18 sit in APIs with no date-based version yet (open dbv-map, 17 September 2026); the v1 and v2 APIs most integrations were written against are not in that catalogue at all.

Rewriting a HubSpot v1 integration on the date-based API compared with running it through Legacy Bridge
QuestionRewrite on the date-based APILegacy Bridge
Code changesEvery legacy call ported: object model, property history, associations, paging cursors and error bodies all change.The base URL and the credential. Paths, parameters and responses stay the v1 ones.
Paging and errorsNew cursors and error formats to handle everywhere.vid-offset, has-more and offset keep working; errors come back in the legacy form.
Integrations you cannot changePlugins, vendor connectors and old scripts break when their endpoints do.Keep working on the date-based API, for every call the bridge translates.
What HubSpot droppedYou redesign around it.Documented per operation: partial (for example contact form-submissions) or not translated, never silent.
After September 2027Works: it calls the date-based API.Works: the bridge calls the date-based API, not the unsupported endpoints.
CostDeveloper time, then maintenance.From $99 a month per portal; agencies from $790 a month for 10 portals.
Your CRM dataBetween your code and HubSpot.Through the bridge, in memory only; or self-host the bridge.

A common path: switch the base URL now, keep the business running, and use the gap report to rewrite the calls that matter most first.

Your CRM data is not our data

What the bridge keeps, what it never keeps, and what you control.

Contacts, companies and deals are never stored.

Records, property values and files pass through memory and are answered. Logs carry no request URLs, so a hapikey never lands there. How data is handled

What the bridge records about a call
{ "ts": "2026-09-30T08:14:03.512Z", "adapter": "hubspot",
  "operation": "GET:/contacts/v1/lists/all/contacts/all",
  "status": "translated", "upstream_calls": 2,
  "latency_ms": 184, "request_id": "req_…" }

Your token, sealed

The portal token is stored sealed with AES-256-GCM and never shown again. Replacing it is one paste in the console.

Scopes you choose

The bridge can only do what the token’s scopes allow. The guide lists the scopes per API your integration uses.

Keys hashed

Bridge keys are stored as SHA-256 hashes and shown once; issue and revoke them in the console at any time.

Or run it yourself

The same bridge as a Docker image on your server: CRM data never leaves your network except to HubSpot. $1,500 a year.

For agencies: every client portal under one account

The Agency plan puts up to 10 client portals under one sign-in, from $790 a month, with a volume price beyond that.

One console, many portals

The agency console signs you in by e-mail link and lists every client portal with its own bridge keys, token, usage and journal of untranslated calls.

White label on request

The bridge on your own subdomain and reports without Avakode branding, for agencies that run integrations under their name.

Pricing

Per HubSpot portal, for agencies, or a yearly licence to run the bridge yourself. Going over the monthly volume never breaks your integration: we get in touch instead.

Portal

$99/month

One HubSpot portal.

Portal Plus

$299/month

One HubSpot portal, higher request volume.

Agency

from $790/month

Up to 10 client portals under one account. Beyond that, a volume price by agreement.

Contact us

Self-hosted

$1,500/year

Run the bridge on your own server (Docker).

Payment is handled by Paddle, our reseller and Merchant of Record (buyer terms): card, invoice and sales tax. Monthly plans can be cancelled at any time and end with the paid month; the first payment is refundable for 14 days, the self-hosted licence for 14 days from purchase (Terms · Refunds · Privacy). Your licence key (FRG-…) arrives by email a few minutes later. Already have one? Sign in to the console; agencies sign in to the agency console.

Questions developers ask

Anything else: support@avakode.com.

Will HubSpot switch the v1 APIs off in September 2027?

HubSpot says the v1 to v3 APIs become unsupported after September 2027: no bug fixes, reliability improvements or security updates. It has not announced a switch-off date. The bridge moves your calls to the date-based API now, so an unsupported endpoint breaking later does not take your integration with it.

What does the bridge not do?
  • Return fields the date-based API does not have: contact form-submissions, list-memberships, merge-audits (reported as partial where they matter).
  • Proxy multipart uploads (Files, Imports) or OAuth token endpoints, yet. Forms go through HubSpot’s v3 Forms API until a date-based Forms API leaves beta.
  • Lift HubSpot’s own limits: the bridge counts as one app of your portal.
  • Keep APIs alive that HubSpot retires: a passed-through API that HubSpot switches off answers 501 BRIDGE_UNSUPPORTED.

Every limit is on the coverage page, per operation.

Is this a proxy?

No, it translates. A v1 contact call becomes the date-based calls that produce the same answer (vid, properties with versions, identity profiles), and the answer comes back in the v1 shape with the same paging.

What about APIs with no date-based version?

Some have none yet: workflows v2 to v4, blog v2, form submissions and a few more. The bridge passes them to HubSpot’s legacy endpoint unchanged while HubSpot keeps it (unsupported in September 2027; v4: 30 March 2027) and reports them apart. When HubSpot retires one, the bridge answers 501 BRIDGE_UNSUPPORTED.

Which HubSpot token does the bridge use?

A token of your portal: a private app in a HubSpot project, or an app with static auth. Legacy private apps become unsupported in September 2027 too, so the bridge does not depend on one.

Do you store our CRM data?

No. Records pass through memory only. The bridge keeps the sealed token, key hashes, daily counters, coverage metadata and short-lived paging cursors; the security page lists everything.

Does it count against HubSpot’s rate limits?

Yes: the bridge is one app of your portal, and one legacy call can take more than one HubSpot call. The bridge keeps the portal inside HubSpot’s limits and answers 429 with Retry-After, as HubSpot does.

Why is Agency from $790 a month?

Ten portals on the Portal plan would be 10 × $99 = $990 a month. The Agency plan covers up to 10 client portals under one account for $790, about 20% less, and larger portfolios get a volume price.

Can we run the bridge ourselves?

Yes. The self-hosted licence ($1,500 a year) runs the same bridge as a Docker image on your server.

How do we pay, and can we cancel?

Paddle is our reseller and Merchant of Record: card or invoice, with sales tax handled. Monthly plans can be cancelled at any time and end with the paid month; the first payment is refundable for 14 days (Refund Policy).

Who is behind Legacy Bridge

Legacy Bridge is built and run by Avakode, a small software company making bridges for retired APIs. Questions go to people who wrote the code: support@avakode.com, answered within two business days.

Company
Avakode, trading name of Tigran Avakov, a sole proprietor
Address
Mirzo-Ulugbek 45A, 100007 Tashkent, Uzbekistan
Payments
Paddle.com, our reseller and Merchant of Record: card or invoice, sales tax handled
Legal
Terms · Privacy · Refunds
Family
Avakode Bridges: EWS Bridge and Legacy Bridge