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).
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
| Name | Type | Required | What it is |
|---|---|---|---|
source (path) | string<ahrefs_free, ahrefs, majestic, moz, semrush, se_ranking, openpagerank, zinn_authority> | Yes | The SEO data source. |
Request body
| Name | Type | Required | What it is |
|---|---|---|---|
api_key | string | No | — |
access_id | string | No | Moz Links API v2 only. |
secret_key | string | No | Moz Links API v2 only. |
database | string | No | Semrush regional database (default us). |
Response
| Name | Type | Required | What it is |
|---|---|---|---|
vendor | string | Yes | — |
key_hint | string | Yes | The last four characters of the key — never more. |
status | string<active, rejected, removed> | Yes | — |
status_reason | string | Yes | — |
allowance | object | Yes | What the vendor last reported for free, read at checked_at. |
checked_at | object | Yes | — |
connected_at | object | Yes | — |
Errors this endpoint can return
401 · 403 · 404 · 422 · 429 · 503