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

# Get an application policy

> Read the control policy attached to a registered application identifier

The V3 response below is available on the USE2 OpenDispatch Directory with the production spec 123 chain.

Read the active application's policy from finalized chain state. The shared V3 policy map stores one policy per `application_id`. Its owner is the registered control DID. The Application policy applies independently of the recipient's DID or Persona policy. [Read the application record](/api-reference/directory/applications/get) to confirm its control DID and status.

An Application policy supplies third-party metadata and control instructions. It does not route messages or change Cache retention. [Register the Application](/api-reference/directory/applications/prepare-registration) through the Directory, then manage its V3 policy through the [policy routes](/api-reference/directory/policies/v3). This endpoint is read-only.

## Request

<ParamField path="applicationId" type="string" required>
  Lowercase application identifier containing 1 through 64 letters, digits, dots, underscores, or hyphens.
</ParamField>

```bash theme={null}
curl --request GET \
  --url "https://directory.example.com/applications/talaria/policy"
```

## Response

```json theme={null}
{
  "application_id": "talaria",
  "control_did": "did:openpayload:1111111111111111111111",
  "application_revision": 1,
  "policy_revision": 1,
  "policy_ttl_seconds": 60,
  "policy": {
    "policy_id": "0x<deterministic-64-hex-id>",
    "scope": {"type": "APPLICATION", "id": "talaria"},
    "revision": 1,
    "operator_did": "did:openpayload:1111111111111111111111",
    "policy_ttl_seconds": 60,
    "ruleset": [
      {
        "id": "notify-on-cache",
        "priority": 100,
        "conditions": [{"type": "EventEquals", "value": "CacheStored"}],
        "action": {
          "type": "DeliveryPlan/v1",
          "entry_step": "notify",
          "steps": [{
            "id": "notify",
            "operation": "Send",
            "recipient_did": "did:openpayload:1111111111111111111111",
            "payload_template": {"action": "sendPush"}
          }],
          "transitions": []
        }
      }
    ]
  },
  "block_hash": "0x<finalized-block-hash>"
}
```

The policy's rules and payload templates define the control action. `Send` delivers an encrypted control DDN envelope to its named recipient DID. `Call` sends a signed HTTPS request to a DID service endpoint on a domain registered to the policy owner. See [shared policies and control actions](/concepts/policy-v3). The application service decides what `sendPush` means; OpenPayload does not send a push notification itself.

`policy_ttl_seconds` is the maximum time a Cache may reuse this policy lookup. It is separate from message retention. A missing or inactive application policy returns `404`.

## Straight to the point

```text theme={null}
GET /applications/{applicationId}/policy
Success: 200 with the finalized policy and control DID
Absent or inactive: 404
```


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