> ## Documentation Index
> Fetch the complete documentation index at: https://docs.1eye.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Workspace Info

> Retrieve and update your workspace company information, contacts, address, and timezone.

Retrieve and update the company information, contacts, address, and timezone of your workspace. The Workspace object is returned directly, without an `info` or `workspace_settings` wrapper.

Snowbricks is a fictional cloud data platform used in these examples.

## Base URL

```text theme={null}
https://api.1eye.ai/v1/workspace
```

## Authentication

All requests require a workspace API key:

```http theme={null}
Authorization: Bearer 1eye_live_xxxxxxxxx
```

The examples use `$API_KEY` for your API key. The key determines the workspace; you do not supply a workspace ID. See [Authentication](https://docs.1eye.ai/api-reference/auth.md).

## Endpoints

| Method | Endpoint | Description |
| - | - | - |
| `GET` | `/v1/workspace` | Retrieve the Workspace. |
| `PATCH` | `/v1/workspace` | Partially update permitted fields. |

## Workspace object

```json theme={null}
{
  "id": "wor_123456789012345678",
  "name": "Snowbricks",
  "logo": "https://example.com/assets/snowbricks-logo.png",
  "primary_domain": "snowbricks.example",
  "linkedin_url": "https://www.linkedin.com/company/example-snowbricks",
  "description": "Snowbricks is a fictional cloud data platform for analytics, data engineering, and enterprise AI.",
  "enabled": true,
  "primary_contact": {
    "name": "Jane Doe",
    "email": "jane@snowbricks.example"
  },
  "billing_contact": {
    "name": "Alex Doe",
    "email": "billing@snowbricks.example"
  },
  "address": {
    "line1": "123 Market Street",
    "line2": "Suite 100",
    "city": "San Francisco",
    "state": "CA",
    "country": "United States",
    "postal_code": "94105"
  },
  "currency": "USD",
  "language": "EN",
  "time_zone": "America/Los_Angeles",
  "created_at": "2026-10-18T18:00:00Z",
  "updated_at": "2026-10-20T18:00:00Z"
}
```

All names, domains, identifiers, amounts, URLs, and timestamps in these examples are illustrative.

### Fields and update permissions

| Field | Type | PATCH | Description |
| - | - | - | - |
| `id` | string | No | Workspace ID (`wor_`). |
| `name` | string | Yes | Workspace display name. |
| `logo` | string or null | Yes | Absolute HTTPS logo URL. |
| `primary_domain` | string | No | Primary company domain. |
| `linkedin_url` | string or null | No | Company LinkedIn Page URL. |
| `description` | string or null | Yes | Company description. |
| `enabled` | boolean | No | Platform-managed Workspace state. |
| `primary_contact` | object | Yes | Independent contact with `name` and `email`. |
| `billing_contact` | object | Yes | Independent billing contact with `name` and `email`. |
| `address` | object | Yes | Business address. |
| `currency` | string | No | Billing currency. |
| `language` | string | No | Workspace language. |
| `time_zone` | string | Yes | Valid IANA timezone. |
| `created_at` | datetime | No | Creation timestamp in UTC. |
| `updated_at` | datetime | No | Modification timestamp in UTC. |

Contacts are standalone contact records. They do not need to be workspace users, and their email domains do not need to match the primary company domain. Changing a contact does not invite a user or grant workspace access.

## 1. Retrieve the Workspace

`GET /v1/workspace`

```bash theme={null}
curl "https://api.1eye.ai/v1/workspace" \
  -H "Authorization: Bearer $API_KEY"
```

**200 OK** — returns the complete Workspace object shown above. This endpoint accepts no query parameters and has no pagination.

## 2. Update the Workspace

`PATCH /v1/workspace`

Send one or more writable fields as a JSON object.

```bash theme={null}
curl -X PATCH "https://api.1eye.ai/v1/workspace" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "description": "Snowbricks provides unified data infrastructure for enterprise analytics and AI.",
  "primary_contact": {
    "name": "Jane Doe"
  },
  "address": {
    "city": "Palo Alto"
  },
  "time_zone": "America/Los_Angeles"
}'
```

### Example response

**200 OK** — returns the complete updated Workspace, including unchanged fields.

```json theme={null}
{
  "id": "wor_123456789012345678",
  "name": "Snowbricks",
  "logo": "https://example.com/assets/snowbricks-logo.png",
  "primary_domain": "snowbricks.example",
  "linkedin_url": "https://www.linkedin.com/company/example-snowbricks",
  "description": "Snowbricks provides unified data infrastructure for enterprise analytics and AI.",
  "enabled": true,
  "primary_contact": {
    "name": "Jane Doe",
    "email": "jane@snowbricks.example"
  },
  "billing_contact": {
    "name": "Alex Doe",
    "email": "billing@snowbricks.example"
  },
  "address": {
    "line1": "123 Market Street",
    "line2": "Suite 100",
    "city": "Palo Alto",
    "state": "CA",
    "country": "United States",
    "postal_code": "94105"
  },
  "currency": "USD",
  "language": "EN",
  "time_zone": "America/Los_Angeles",
  "created_at": "2026-10-18T18:00:00Z",
  "updated_at": "2026-10-21T18:00:00Z"
}
```

### Partial update behavior

Nested contact and address objects merge by field. Updating `address.city` preserves the other address fields. Omitted fields retain their current values.

All supplied values are validated before a change is applied. A read-only field, unknown field, invalid value, empty object, or empty PATCH request is rejected; invalid requests do not partially update the Workspace.

### Clear nullable fields

Explicit `null` clears a nullable field:

```json theme={null}
{
  "logo": null,
  "description": null,
  "address": {
    "line2": null
  }
}
```

You cannot set `name`, `time_zone`, contact emails, or the parent `primary_contact`, `billing_contact`, or `address` objects to `null`.

### Validation

| Field | Validation |
| - | - |
| `name` | Nonempty string after trimming; maximum 120 characters. |
| `logo` | Absolute HTTPS URL, maximum 2,048 characters, or `null`. |
| `description` | String up to 2,000 characters, or `null`. |
| Contact `name` | String up to 160 characters, or `null`. |
| Contact `email` | Valid email, maximum 254 characters; cannot be cleared. |
| Address fields | Strings or `null`; `line1`, `line2`, `city`, `state`, `country`, and `postal_code` are writable. |
| `time_zone` | Valid IANA timezone such as `America/Los_Angeles`. |

## Separate resources

Use [Users](https://docs.1eye.ai/api-reference/users.md) to manage memberships, [Website Pixel](https://docs.1eye.ai/api-reference/website-pixel.md) to manage tracking domains, and [Signal Settings](https://docs.1eye.ai/api-reference/signal-settings.md) to control Signal sources. [Billing](https://docs.1eye.ai/api-reference/billing.md) and [Usage](https://docs.1eye.ai/api-reference/usage.md) are separate read-only resources.

These resources are not embedded in the Workspace object and cannot be updated through this endpoint.

## Errors

| Status | Error code | Description |
| - | - | - |
| 400 | `invalid_parameter` | A request field or query parameter is invalid. |
| 401 | `authentication_error` | The API key is missing, invalid, or revoked. |
| 403 | `permission_denied` | The key does not have permission for this operation. |
| 429 | `rate_limit_exceeded` | The workspace API rate limit was exceeded. |
| 500 | `internal_error` | An unexpected server error occurred. |
| 503 | `service_unavailable` | The service is temporarily unavailable. |

Errors use the standard [error envelope](https://docs.1eye.ai/api-reference/errors.md). Use `request_id` when contacting support.

### Read-only field error

```json theme={null}
{
  "error": {
    "code": "invalid_parameter",
    "message": "Field primary_domain is read-only.",
    "param": "primary_domain",
    "request_id": "req_123456789012345678"
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.