# Organization API: Organizations & Members: Seo

> The 6 Organization API operations for seo.

Source: https://www.coritan.com/docs/api/reference/organizations/organizations-members/seo/

Part of [Organizations & Members](/docs/api/reference/organizations/organizations-members/).

## Operations

| Method | Path | Summary |
| --- | --- | --- |
| GET | [`/api/v1/orgs/{org_slug}/seo`](#op-get-api-v1-orgs-org-slug-seo) | Get org seo |
| PUT | [`/api/v1/orgs/{org_slug}/seo`](#op-put-api-v1-orgs-org-slug-seo) | Save the search settings sent |
| POST | [`/api/v1/orgs/{org_slug}/seo/indexnow-key`](#op-post-api-v1-orgs-org-slug-seo-indexnow-key) | Make a new IndexNow key |
| DELETE | [`/api/v1/orgs/{org_slug}/seo/indexnow-key`](#op-delete-api-v1-orgs-org-slug-seo-indexnow-key) | Remove the IndexNow key |
| POST | [`/api/v1/orgs/{org_slug}/seo/indexnow/submit`](#op-post-api-v1-orgs-org-slug-seo-indexnow-submit) | Send every page in the storefront's sitemap to IndexNow now, in batches of 100 |
| GET | [`/api/v1/orgs/{org_slug}/seo/test-path`](#op-get-api-v1-orgs-org-slug-seo-test-path) | Test org seo path |

### Get org seo {#op-get-api-v1-orgs-org-slug-seo}

`GET /api/v1/orgs/{org_slug}/seo`

The organization's saved search settings, with what each empty field falls
back to and the limits each field has.

``seo`` is the saved block: ``site_name``, ``alt_names``, ``home_title``,
``home_description``, ``og_image``, ``og_image_alt``, ``social`` (a map of
network to link), ``verification`` (``google``, ``bing``, ``yandex`` and the
three ``..._file`` names), ``robots_extra``, ``redirects`` (``from``, ``to``
and ``status``), ``indexnow_key`` and ``hold_indexing``. ``defaults`` are the
brand's own words an empty field uses. ``networks`` lists the profiles a link
may name with the addresses each belongs on, ``host`` is the storefront's
address (``has_storefront`` is false when the organization has none),
``files`` lists the addresses the storefront serves for the key and the
verification files, and ``indexnow`` says whether pages can be sent now and,
when they cannot, why. Any member may read it.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Save the search settings sent {#op-put-api-v1-orgs-org-slug-seo}

`PUT /api/v1/orgs/{org_slug}/seo`

Save the search settings sent. A field left out keeps its saved value, and
an empty one goes back to the brand's default.

Needs the Owner or Admin role. A value that breaks a rule is refused with
400 and a sentence that names the field, and nothing is saved. The answer is
the one ``GET`` gives, with ``changed`` listing each field that differs from
before as old value and new value. Saving what is already stored changes
nothing and writes no audit entry. The IndexNow key cannot be sent here: make
it with ``POST /seo/indexnow-key``. A change reaches storefront pages within
a minute.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `site_name` | string or null | no |
| `alt_names` | array of string or null | no |
| `home_title` | string or null | no |
| `home_description` | string or null | no |
| `og_image` | string or null | no |
| `og_image_alt` | string or null | no |
| `social` | object or null | no |
| `verification` | object or null | no |
| `robots_extra` | array of string or null | no |
| `redirects` | array of RedirectIn or null | no |
| `redirects[].from` | string | yes |
| `redirects[].to` | string | yes |
| `redirects[].status` | integer | no |
| `hold_indexing` | boolean or null | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Make a new IndexNow key {#op-post-api-v1-orgs-org-slug-seo-indexnow-key}

`POST /api/v1/orgs/{org_slug}/seo/indexnow-key`

Make a new IndexNow key. The storefront serves it at ``/<key>.txt``, which
is how search engines know the pages sent to them are yours. A new key
replaces the old one at once. Needs the Owner or Admin role.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Remove the IndexNow key {#op-delete-api-v1-orgs-org-slug-seo-indexnow-key}

`DELETE /api/v1/orgs/{org_slug}/seo/indexnow-key`

Remove the IndexNow key. The storefront stops serving the key file and stops
sending changed pages to search engines. Needs the Owner or Admin role.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Send every page in the storefront's sitemap to IndexNow now, in batches of 100 {#op-post-api-v1-orgs-org-slug-seo-indexnow-submit}

`POST /api/v1/orgs/{org_slug}/seo/indexnow/submit`

Send every page in the storefront's sitemap to IndexNow now, in batches of
100. Needs the Owner or Admin role and an IndexNow key, and answers 409 with
the reason while indexing is on hold or the organization has no storefront.
Limited to a few runs an hour for the whole organization, then 429.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `202` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Test org seo path {#op-get-api-v1-orgs-org-slug-seo-test-path}

`GET /api/v1/orgs/{org_slug}/seo/test-path`

What a visitor or a search engine gets for a path today, using the saved
settings: ``kind`` is ``redirect`` (with ``redirect_to`` and ``status``),
``indexable``, ``noindex`` or ``not_found``. The path starts with one ``/`` and
has no spaces, else 400. 409 when the organization has no storefront.

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `org_slug` | path | string | yes |  |
| `path` | query | string | yes | An address on the storefront, such as /old-page. |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |
