Developers
Set your API contextPick a region and space ID once. Every sample fills in your base URL.
Where do I find these?

In Coevera: open your space's API application and choose Show Access. It shows the space ID and the base URL, whose host starts with your region.

From the API: if you know the space ID, the discovery endpoint GET /api/discovery/spaces/{space_id} returns its region and base URLs, without credentials.

Only the region and space ID are kept, in this browser. Never paste a key or password here.

More in the quickstart

Get startedRegions and base URLs

Regions and base URLs

Every Coevera space lives in one of four regions. Its base URLs name the region and the space, and the discovery endpoint finds them from the space ID alone.

Answer

Every space lives in one of four regions: us-east, eu-central, ca-central or ap-southeast. Call https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}, with the host from Show Access › Service URL or from GET /api/discovery/spaces/{space_id}, which needs no credentials. A call to another region's host still works: it is forwarded, only slower.

A space's data stays in the region the customer chose, and its API answers there. Your base URL names that region and the space.

Regions

Region Name Data centre REST base URL
us-east US East Virginia, USA https://us-east.api.coevera.com/api/v100/rest/spaces/{space_id}
eu-central EU Central Frankfurt, Germany https://eu-central.api.coevera.com/api/v100/rest/spaces/{space_id}
ca-central CA Central Toronto, Canada https://ca-central.api.coevera.com/api/v100/rest/spaces/{space_id}
ap-southeast AP Southeast Sydney, Australia https://ap-southeast.api.coevera.com/api/v100/rest/spaces/{space_id}

The data centres are the ones the Coevera security page lists, which also says that customer data is not moved between regions.

Take the host from Service URL in Show Access, or from the discovery endpoint below. Do not build it by hand from the space ID. Each region's host has the form {region}.api.coevera.com, the form the discovery endpoint returns.

Base URLs

What URL
REST https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}
GraphQL https://{region}.api.coevera.com/api/v100/app/space/{space_id}/graphql/public, POST only: a GET answers 405
OpenAPI for your space …/rest/spaces/{space_id}/openapi.json. It needs your credentials and is built for your space, with its custom fields and custom entities.
Public GraphQL schema …/graphql/public/schema.json, the introspection result as JSON. It needs no credentials.
Version v100, the only API version; see Versioning and deprecation.

The published contract, without your space's custom fields, is in the REST and GraphQL reference and its downloads.

Find a space's region

The discovery endpoint answers GET /api/discovery/spaces/{space_id}. It needs no credentials, and each of the four regional hosts answers it for every space, so the request works whichever region the context bar shows. It returns the space's region and its REST and GraphQL URLs:

DISCOVERY_URL="https://{region}.api.coevera.com/api/discovery/spaces/{space_id}"

# Public: no credentials. Prints the region's host and the space's REST base URL.
curl -sS --fail-with-body "$DISCOVERY_URL" | jq -r '.region_url, .rest.space.endpoint'
import process from "node:process";

const discoveryUrl = `https://{region}.api.coevera.com/api/discovery/spaces/{space_id}`;

// Public: no credentials.
const res = await fetch(discoveryUrl);
const space = await res.json();
if (!res.ok) {
  console.error(`HTTP ${res.status} ${space.name}: ${space.message}`);
  process.exit(1);
}
console.log(space.region_url);
console.log(space.rest.space.endpoint);
import os
import sys

import requests

DISCOVERY_URL = "https://{region}.api.coevera.com/api/discovery/spaces/{space_id}"

# Public: no credentials.
response = requests.get(DISCOVERY_URL, timeout=30)
space = response.json()
if not response.ok:
    sys.exit(f"HTTP {response.status_code} {space.get('name')}: {space.get('message')}")
print(space["region_url"])
print(space["rest"]["space"]["endpoint"])
DISCOVERY_URL="https://{region}.api.coevera.com/api/discovery/spaces/{space_id}"

# Public: no credentials. Prints the region's host and the space's GraphQL endpoint.
curl -sS --fail-with-body "$DISCOVERY_URL" | jq -r '.region_url, .graphql.space.endpoint'
import process from "node:process";

const discoveryUrl = `https://{region}.api.coevera.com/api/discovery/spaces/{space_id}`;

// Public: no credentials.
const res = await fetch(discoveryUrl);
const space = await res.json();
if (!res.ok) {
  console.error(`HTTP ${res.status} ${space.name}: ${space.message}`);
  process.exit(1);
}
console.log(space.region_url);
console.log(space.graphql.space.endpoint);
import os
import sys

import requests

DISCOVERY_URL = "https://{region}.api.coevera.com/api/discovery/spaces/{space_id}"

# Public: no credentials.
response = requests.get(DISCOVERY_URL, timeout=30)
space = response.json()
if not response.ok:
    sys.exit(f"HTTP {response.status_code} {space.get('name')}: {space.get('message')}")
print(space["region_url"])
print(space["graphql"]["space"]["endpoint"])

This is the response for a space in eu-central:

200 OKRecorded response · 2026-10-15 · docs sandbox, de-identified
{
  "space_id": "nv2_northwind_docs",
  "region_url": "https://eu-central.api.coevera.com",
  "space_version": 100,
  "server_time": "2026-10-15T09:00:00",
  "graphql": {
    "space": {
      "endpoint": "https://eu-central.api.coevera.com/api/v100/app/space/nv2_northwind_docs/graphql/public",
      "schema": "https://eu-central.api.coevera.com/api/v100/app/space/nv2_northwind_docs/graphql/public/schema.json"
    }
  },
  "rest": {
    "space": {
      "endpoint": "https://eu-central.api.coevera.com/api/v100/rest/spaces/nv2_northwind_docs",
      "schema": "https://eu-central.api.coevera.com/api/v100/rest/spaces/nv2_northwind_docs/openapi.json"
    }
  }
}
200 OKRecorded response · 2026-10-15 · docs sandbox, de-identified
{
  "space_id": "nv2_northwind_docs",
  "region_url": "https://eu-central.api.coevera.com",
  "space_version": 100,
  "server_time": "2026-10-15T09:00:00",
  "graphql": {
    "space": {
      "endpoint": "https://eu-central.api.coevera.com/api/v100/app/space/nv2_northwind_docs/graphql/public",
      "schema": "https://eu-central.api.coevera.com/api/v100/app/space/nv2_northwind_docs/graphql/public/schema.json"
    }
  },
  "rest": {
    "space": {
      "endpoint": "https://eu-central.api.coevera.com/api/v100/rest/spaces/nv2_northwind_docs",
      "schema": "https://eu-central.api.coevera.com/api/v100/rest/spaces/nv2_northwind_docs/openapi.json"
    }
  }
}
Field What it holds
region_url The host of the space's region
space_version 100, the platform version of every current space
server_time The server's clock, in UTC
rest.space.endpoint, rest.space.schema The REST base URL and the space's OpenAPI document
graphql.space.endpoint, graphql.space.schema The GraphQL endpoint and the public schema

An unknown space answers 404 with ERROR_NO_ENTITY (code 143). A space that is not on the current platform answers 400 with ERROR_UNKNOWN_VERSION (code 7).

Ask a coevera.com host: the URLs in the answer use the domain of the host you ask. The migration page covers the former domain.

Calling the wrong region

It still works, just more slowly

REST and GraphQL calls sent to another region's host are forwarded to the region that holds the space. The forwarded call answers 200 with the normal body; there is no redirect, and the same credentials work. Every call takes an extra hop. Set the right region in the context bar and in your configuration.

How much slower depends on where you call from. From Central Europe, a call to a space in eu-central takes about 0.2 s through its own host, about 1 s through the us-east host and 2.5 to 3.6 s through the ap-southeast host. Use the region the discovery endpoint returns.

Limits

  • A space lives in exactly one region, and every URL carries its space ID. There is no API across spaces: a credential works in one space only.
  • Read the host from the discovery endpoint or from Show Access; do not hard-code a region per customer.
  • The MCP server for AI assistants runs in the United States for every space; see Hosting and your data.
Verified on 2026-10-15 against API 6.5Behaviour-verified

Every sample on this page ran against the docs sandbox and returned the response shown.