---
title: "Get WordPress.com OAuth connect URL"
method: GET
path: "/v1/connect/wordpress"
tags: ["Connect"]
---

# Get WordPress.com OAuth connect URL

`GET /v1/connect/wordpress`

Initiates OAuth for a WordPress.com site or a Jetpack-connected site.
WordPress is a connect-only blog platform: the connected account powers
the Blogs API (`/v1/accounts/{accountId}/blogs`) and does not support
social posts, inbox, analytics, ads, or Shopify product operations.
Redirect the user to `authUrl`; after authorization, WordPress returns
the browser to Zernio's internal callback and Zernio redirects to
`redirect_url` (or the dashboard when omitted). Reconnecting the same
site and profile updates the stored connection in place. The consent
request omits `scope` to use WordPress.com's default single-site grant.
Granular scopes cannot access the `/wp/v2` article API. Zernio checks
that API before saving the connection and does not request explicit
`global` authorization across all sites.

## Query parameters

- `profileId` string, required
- `redirect_url` string

## Response `200`

OAuth authorization URL and authenticated state

- object
  - `authUrl` string, uri, required — WordPress.com URL to open in the user agent.
  - `state` string, required — Authenticated, expiring OAuth state handled by the callback.

## Other responses

- `400` — Invalid `profileId` or `redirect_url`.
- `401` — Unauthorized
- `402` — Payment method or enterprise contract required. The authenticated account hit a billing gate before the connection could proceed. Three reasons: - `free_tier_exceeded`: the team has connected more accounts than the free tier allows. Add a payment method on the dashboard to continue (the user will be billed per additional connected account). - `twitter_passthrough`: connecting an X account requires a card on file from day one because X API calls incur real per-call pass-through costs. Applies to the 1st X account, not only the 3rd+. - `enterprise_required`: the team is on an enterprise contract with a negotiated connected-account cap and has reached it. Self-service teams have NO connected-account cap (the $1/account rate continues at any scale), so this reason can only fire for teams whose contract sets an explicit limit. `dashboard_url` deep-links to the enterprise contact page rather than the billing tab. The end-user already has a card on file; this gate is about contract terms, not card collection. SDK consumers should switch on `reason` to render the right prompt. For `free_tier_exceeded` and `twitter_passthrough`, redirect the end-user to `dashboard_url`: it opens the add-payment-method drawer on the Zernio billing page, and the request succeeds once the card is on file. For `enterprise_required`, redirect to `dashboard_url` (the enterprise contact form) to adjust the contract's limit.
- `403` — API key does not have access to this profile.
- `404` — Profile not found or access denied.
- `503` — WordPress.com OAuth or state signing is not configured.

## Changes

- **2026-09-17** `fdaf9a9fb1a7` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/connect/wordpress/get.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/dd3865482f9f?raw)
