---
title: "Get Denial"
method: GET
path: "/api/v1/spend-insights/denials/{block_id}"
tags: ["Spend Insights"]
---

# Get Denial

`GET /api/v1/spend-insights/denials/{block_id}`

## Request

- Base URL: `https://example.conductor.one`
- URL: `https://example.conductor.one/api/v1/spend-insights/denials/{block_id}`
- Auth: HTTP bearer and OAuth 2
  - Client credentials
  - Token URL: `/auth/v1/token`

Get one budget-denial episode by its unique ID.

## Path parameters

- `block_id` string, required: Unique identifier for the denial episode.

## Response `200`

GetDenialResponse contains a denial episode and its first-refusal context.

- C1ApiSpendinsightsV1GetDenialResponse: GetDenialResponse contains a denial episode and its first-refusal context.
  - `episode` C1ApiSpendinsightsV1DenialEpisode: DenialEpisode represents repeated budget refusals for one scope and budget period.
    - `attemptCount` string, int64: Best-effort lower bound for refused calls in this episode. Concurrent retry exhaustion can under-report; denial_events is exact for a window.
    - `authorityId` string: Identifier of the configuration that supplied the denying limit.
    - `authorityKind` 'AUTHORITY_KIND_UNSPECIFIED' | 'AUTHORITY_KIND_FUND_POLICY' | 'AUTHORITY_KIND_FUND_ASSIGNMENT' | 'AUTHORITY_KIND_FUND_RULE' | 'AUTHORITY_KIND_TENANT_APP_CAP' | 'AUTHORITY_KIND_SUBJECT_APP_LIMIT' | 'AUTHORITY_KIND_ENTITLEMENT_BINDING' | 'AUTHORITY_KIND_APP_USER' | 'AUTHORITY_KIND_USER': Type of configuration that supplied the denying limit.
    - `authorityVersion` string, int64: Version of the configuration used for the first refusal.
    - `blockId` string: Unique identifier for this denial episode.
    - `budgetKey` string: Stable identifier for the budget account that denied the calls.
    - `closedAt` string, date-time, nullable
    - `firstDeniedAt` string, date-time, nullable
    - `lastDeniedAt` string, date-time, nullable
    - `periodEnd` string, date-time, nullable
    - `periodKey` string: Stable key for the denied budget period.
    - `periodKind` 'PERIOD_KIND_UNSPECIFIED' | 'PERIOD_KIND_DAILY' | 'PERIOD_KIND_WEEKLY' | 'PERIOD_KIND_MONTHLY' | 'PERIOD_KIND_QUARTERLY' | 'PERIOD_KIND_YEARLY': Length of the denied budget period.
    - `periodStart` string, date-time, nullable
    - `reason` 'SPEND_DENY_REASON_UNSPECIFIED' | 'SPEND_DENY_REASON_TENANT_FROZEN' | 'SPEND_DENY_REASON_SUSPENDED_BY_ADMIN' | 'SPEND_DENY_REASON_APP_SUSPENDED' | 'SPEND_DENY_REASON_APP_PAUSED_BY_YOU' | 'SPEND_DENY_REASON_NO_SUPPLY': Reason the calls were denied.
    - `requestTaskId` string: ID of the access request task associated with this episode.
    - `requestTaskState` 'TASK_STATE_UNSPECIFIED' | 'TASK_STATE_OPEN' | 'TASK_STATE_CLOSED': Current state of the associated access request task.
    - `scopeAppId` string: Application ID for application-scoped episodes.
    - `scopeKind` 'SPEND_SCOPE_KIND_UNSPECIFIED' | 'SPEND_SCOPE_KIND_TENANT' | 'SPEND_SCOPE_KIND_SUBJECT' | 'SPEND_SCOPE_KIND_APP' | 'SPEND_SCOPE_KIND_SUBJECT_APP': Budget scope that denied the calls.
    - `scopeUserId` string: User ID for user-scoped episodes.
    - `state` 'SPEND_BLOCK_STATE_UNSPECIFIED' | 'SPEND_BLOCK_STATE_OPEN' | 'SPEND_BLOCK_STATE_CLOSED': Whether this denial episode remains open.
  - `firstDenialMoney` C1ApiSpendinsightsV1DenialMoneySnapshot: DenialMoneySnapshot captures account amounts at the first refusal.
    - `consumedNano` string, int64: Spend already settled when the first refusal occurred.
    - `currencyCode` string: Currency used for monetary values.
    - `limitNano` string, int64: Effective limit that caused the refusal.
    - `requestedNano` string, int64: Spend requested by the refused call.
    - `reservedNano` string, int64: Spend reserved by in-progress calls when the first refusal occurred.
  - `historicalTrace` C1ApiSpendinsightsV1AdmissionTrace: AdmissionTrace records the bounded authority decision made during admission.
    - `allocations` C1ApiSpendinsightsV1TraceAllocation[], nullable: Per-scope limits resolved during admission.
      - `budgetKey` string: Stable identifier for the scope's budget account.
      - `limit` C1ApiSpendinsightsV1ResolvedLimit: ResolvedLimit records the historical limit of an admitted account. This message contains a oneof named kind. Only a single field of the following list may be set at a time: - unlimited - amount
        - `amount` C1ApiSpendinsightsV1ResolvedAmount: ResolvedAmount records the admitted nano-unit limit.
          - `amountNano` string, int64: Admitted limit, in nano-units.
        - `unlimited` C1ApiSpendinsightsV1ResolvedUnlimited: ResolvedUnlimited records accounting without a finite admission limit.
      - `period` 'PERIOD_KIND_UNSPECIFIED' | 'PERIOD_KIND_DAILY' | 'PERIOD_KIND_WEEKLY' | 'PERIOD_KIND_MONTHLY' | 'PERIOD_KIND_QUARTERLY' | 'PERIOD_KIND_YEARLY': Length of the budget period.
      - `source` C1ApiSpendinsightsV1AuthorityRef: AuthorityRef identifies a configuration and the revision admission read.
        - `absent` boolean: Whether admission found no configuration of this kind.
        - `appEntitlementId` string: Application entitlement ID, for entitlement-binding authorities.
        - `appId` string: Application ID the configuration applies to.
        - `appUserId` string: Application user ID, for application-user authorities.
        - `kind` 'AUTHORITY_KIND_UNSPECIFIED' | 'AUTHORITY_KIND_FUND_POLICY' | 'AUTHORITY_KIND_FUND_ASSIGNMENT' | 'AUTHORITY_KIND_FUND_RULE' | 'AUTHORITY_KIND_TENANT_APP_CAP' | 'AUTHORITY_KIND_SUBJECT_APP_LIMIT' | 'AUTHORITY_KIND_ENTITLEMENT_BINDING' | 'AUTHORITY_KIND_APP_USER' | 'AUTHORITY_KIND_USER': Type of configuration.
        - `ruleId` string: Fund rule ID, for fund-rule authorities.
        - `userId` string: User ID the configuration applies to.
        - `version` string, int64: Configuration revision read during admission.
    - `authorityRefs` C1ApiSpendinsightsV1AuthorityRef[], nullable: Configurations read during admission.
      - `absent` boolean: Whether admission found no configuration of this kind.
      - `appEntitlementId` string: Application entitlement ID, for entitlement-binding authorities.
      - `appId` string: Application ID the configuration applies to.
      - `appUserId` string: Application user ID, for application-user authorities.
      - `kind` 'AUTHORITY_KIND_UNSPECIFIED' | 'AUTHORITY_KIND_FUND_POLICY' | 'AUTHORITY_KIND_FUND_ASSIGNMENT' | 'AUTHORITY_KIND_FUND_RULE' | 'AUTHORITY_KIND_TENANT_APP_CAP' | 'AUTHORITY_KIND_SUBJECT_APP_LIMIT' | 'AUTHORITY_KIND_ENTITLEMENT_BINDING' | 'AUTHORITY_KIND_APP_USER' | 'AUTHORITY_KIND_USER': Type of configuration.
      - `ruleId` string: Fund rule ID, for fund-rule authorities.
      - `userId` string: User ID the configuration applies to.
      - `version` string, int64: Configuration revision read during admission.

## Changes

- **2026-10-20** `fe943bedf41b`: 1 breaking, 14 warning, 15 info
  - added `#/components/schemas/c1.api.spendinsights.v1.AdmissionTrace` to the `historicalTrace` response property `oneOf` list for the response status `200`
  - added the new `SPEND_DENY_REASON_APP_PAUSED_BY_YOU` enum value to the `episode/oneOf[subschema #1: Denial Episode]/reason` response property for the response status `200`
  - added the new `SPEND_DENY_REASON_APP_SUSPENDED` enum value to the `episode/oneOf[subschema #1: Denial Episode]/reason` response property for the response status `200`
  - added the new `SPEND_DENY_REASON_NO_SUPPLY` enum value to the `episode/oneOf[subschema #1: Denial Episode]/reason` response property for the response status `200`
  - …26 more
- **2026-10-06** `918a4e749f56`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/conductorone/apis/c1-api/changes/api/v1/spend-insights/denials/:block_id/get.md)

---

[API](https://skmtc.dev/conductorone/apis/c1-api.md) - [All operations](https://skmtc.dev/conductorone/apis/c1-api/llms.txt) - [OpenAPI document](https://skmtc.dev/conductorone/apis/c1-api/revisions/fe943bedf41b?raw)
