seo-data

PUT /v1/seo-connection/data-sources/{source}/key

Connect the site owner's own key for one SEO data source (stored in Vault).

All seo-data endpoints

All developer docs →

Authentication

Send an API key as a bearer token. The endpoint checks sites.create; a key without it is refused with 403, not 404.

This endpoint takes no organisation id. Your key already identifies the organisation it belongs to, and the response is scoped to it.

Try it

Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.

curl -X PUT https://api.zinndigital.com/v1/seo-connection/data-sources/{source}/key \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{  }'

Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console

Details

Checks the key with the vendor using a call the vendor does not charge for, then stores it in Vault (secret/orgs/<org>/seo-connections/<id>) — never in a column, a log or the WordPress database — and keeps only its last four characters. Replaces an earlier key for the same source in the organization (the old one is deleted from Vault), and every feed that used it moves to the new key and runs again. A key the vendor refuses is not stored (422 refusal.seoData.keyRefused); a real key with no units left is stored and its feeds wait. Zinn®'s own vendor keys are never used for this. Moz takes an API token, or an Access ID with a Secret Key. Needs seo.run.

Parameters

NameTypeRequiredWhat it is
source (path)string<ahrefs_free, ahrefs, majestic, moz, semrush, se_ranking, openpagerank, zinn_authority>YesThe SEO data source.

Request body

NameTypeRequiredWhat it is
api_keystringNo—
access_idstringNoMoz Links API v2 only.
secret_keystringNoMoz Links API v2 only.
databasestringNoSemrush regional database (default us).

Response

NameTypeRequiredWhat it is
vendorstringYes—
key_hintstringYesThe last four characters of the key — never more.
statusstring<active, rejected, removed>Yes—
status_reasonstringYes—
allowanceobjectYesWhat the vendor last reported for free, read at checked_at.
checked_atobjectYes—
connected_atobjectYes—

Errors this endpoint can return

401 · 403 · 404 · 422 · 429 · 503