---
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`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/connect/wordpress`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Connect-Token`
- TypeScript: <https://skmtc.dev/zernio/apis/zernio-api/docs/v1/connect/wordpress/get.ts> (a function with typed inputs; its response is checked against the schema)

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`). It does not support social posts, inbox, analytics, ads, or Shopify product operations.

### Flow

1. Redirect the user to `authUrl`.
2. After authorization, WordPress returns the browser to Zernio's internal callback.
3. Zernio redirects to `redirect_url` (or the dashboard when omitted).

Reconnecting the same site and profile updates the stored connection in place.

### Scopes

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`: Missing or invalid API key. `code` is `missing_credentials` when no Authorization header was sent and `invalid_credentials` when the key is unknown, revoked or expired.
- `402`: Payment method or enterprise contract required: the authenticated account hit a billing gate before the connection could proceed. Switch on `reason` to render the right prompt: - `free_tier_exceeded`: the team has connected more accounts than the free tier allows. Add a payment method to continue (billed per additional connected account). - `twitter_passthrough`: connecting an X account requires a card on file, even the 1st one, because X API calls are passed through per call. Prepaid-balance accounts never get it: they pay X calls from the balance. - `enterprise_required`: the team's enterprise contract sets a connected-account cap and it has been reached. Self-service teams have NO cap (the $1/account rate continues at any scale). The user already has a card on file; this gate is about contract terms. - `card_verification_required`: the card on file was flagged at add time (prepaid, or issued in a different country than the billing address). A one-time verification charge of `details.verification_amount_cents` (USD) is pending; it is credited to the team's usage balance, not a fee. **What to do:** redirect the end-user to `dashboard_url`. - `free_tier_exceeded`, `twitter_passthrough`, `card_verification_required`: it opens the Zernio billing page (the add-payment-method drawer, or the verification step). The request succeeds once the card is on file (or verified, or paid). - `enterprise_required`: it opens the enterprise contact form (not the billing tab), 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-11-10** `d568bb00ed73`: 5 info
  - added the optional property `docsUrl` to the response with the `401` status
  - added the optional property `provider` to the response with the `401` status
  - added the optional property `providerError` to the response with the `401` status
  - added the optional property `requestId` to the response with the `401` status
  - …1 more
- **2026-10-06** `f8c8f34fb41a`: 1 warning
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `401`
- **2026-10-02** `d556591af3f6`: 7 info
  - added the optional property `code` to the response with the `401` status
  - added the optional property `details` to the response with the `401` status
  - added the optional property `docUrl` to the response with the `401` status
  - added the optional property `param` to the response with the `401` status
  - …3 more
- **2026-09-24** `f5bd490b5731`: 1 warning, 1 info
  - added the new `card_verification_required` enum value to the `reason` response property for the response status `402`
  - added the optional property `details/verification_amount_cents` to the response with the `402` status
- **2026-09-17** `fdaf9a9fb1a7`: 1 info
  - endpoint added

[Operation 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/a79c233ebf22?raw)
