---
title: "Get project settings"
method: GET
path: "/v1/projectId/{projectId}"
tags: ["Project"]
---

# Get project settings

`GET /v1/projectId/{projectId}`

## Request

- Base URL: `https://api.bluefox.email`
- URL: `https://api.bluefox.email/v1/projectId/{projectId}`
- Auth: HTTP bearer

## Path parameters

- `projectId` string, required

## Response `200`

OK

- object
  - `status` integer
  - `result` Project
    - `_id` string
    - `name` string
    - `logoUrl` string
    - `customSubscriptionPreferencesUrl` string: A subscriber-facing page you host yourself for managing subscription preferences. When set, unsubscribe and pause links in emails point here (with a token query param appended) instead of bluefox.email's default page. Stored and returned with a real http:// or https:// scheme - an explicit one you send is kept exactly as given (e.g. "http://localhost:3000/preferences" for local testing), otherwise https is assumed.
    - `designSystemId` string
    - `status` 'sandbox' | 'production' | 'byoAwsSes': New projects start as "sandbox". Sandbox recipients are not restricted, but sending is rate-limited to a low daily cap (a 405 once exceeded, see GET .../sandbox/deliverability) and gets automatically restricted (see the restricted field) if bounce/complaint rates run high. To leave sandbox for real production sending, verify a domain and POST .../production-access - approval is manual, see the Production Access endpoints below.
    - `restricted` boolean: Read-only - set automatically (high bounce/complaint rates) or by bluefox.email staff, never by this API. A restricted, non-byoAwsSes project cannot send at all, regardless of production-access status - applying for or already having production access does not lift a restriction, since the restriction is on bluefox.email's shared sending infrastructure specifically. The only way for a restricted project to resume sending is to switch to BYO-AWS (PATCH .../projectId/{projectId} awsConfig + status: "byoAwsSes"), which uses the project's own AWS account instead of the shared infrastructure.
    - `restrictedReason` string, nullable: Read-only. Human-readable reason, present only when restricted is true.
    - `unengagedContactSegment` object
      - `groups` object[]: OR-ed groups of AND-ed conditions - matches the segment builder in the app.
        - `conditions` object[]
          - `category` 'contact-property' | 'engagement'
          - `property` string: A custom contact field name, or "createdAt". Required unless operator is "any" or a tag operator.
          - `operator` 'any' | 'equals' | 'does-not-equal' | 'contains' | 'does-not-contain' | 'is-empty' | 'is-not-empty' | 'is-true' | 'is-false' | 'greater-than' | 'greater-than-or-equal' | 'less-than' | 'less-than-or-equal' | 'has-tag' | 'does-not-have-tag' | 'opened' | 'not-opened' | 'clicked' | 'not-clicked' | 'received' | 'not-received' | 'date-equals' | 'date-before' | 'date-after' | 'date-in-last' | 'date-more-than'
          - `value` unknown
    - `awsConfig` AwsConfig: Secrets are never returned raw - only masked hints. Empty/absent is normal and expected for a project that isn't status: "byoAwsSes" - it just means the project sends through bluefox.email's shared infrastructure instead; see GET .../production-access for that project's status there.
      - `region` string
      - `limit` integer
      - `senderIdentities` object[]
        - `name` string
        - `email` string
      - `accessKeyIdHint` string, nullable
      - `secretAccessKeyHint` string, nullable
      - `roleArnHint` string, nullable
    - `monthlyLimit` integer
    - `autoRemoveFromList` AutoRemoveFromList: What happens to a contact automatically when they bounce or complain. Sent/returned as a whole object - PATCHing just one of bounce/complaint replaces the other with its default, it is not a per-key merge.
      - `bounce` 'off' | 'removeFromLists' | 'deleteContact': "off" leaves subscriptions untouched, "removeFromLists" unsubscribes the contact from every list, "deleteContact" also deletes the contact.
      - `complaint` 'off' | 'removeFromLists' | 'deleteContact': Same modes as bounce, applied on a spam complaint instead.
    - `whiteList` string[]: Domains (bare, e.g. "example.com" - no protocol) allowed to call certain endpoints (like the direct subscribe-to-list endpoint) straight from browser JavaScript, by Origin header, without an API key.
    - `createdAt` string, date-time
    - `updatedAt` string, date-time

## Other responses

- `403`: Missing or invalid API key

---

[API](https://skmtc.dev/bluefox/apis/bluefox-email-public-api.md) · [All operations](https://skmtc.dev/bluefox/apis/bluefox-email-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bluefox/apis/bluefox-email-public-api/revisions/fa1a0a835c7f?raw)
