<!--
{
  "availability" : [
    "iOS: 13.0.0 -",
    "iPadOS: 13.0.0 -",
    "macCatalyst: 13.0.0 -",
    "macOS: 10.15.0 -",
    "tvOS: 13.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 6.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Combine",
  "identifier" : "/documentation/Combine/Subscription",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "Combine"
    ],
    "preciseIdentifier" : "s:7Combine12SubscriptionP"
  },
  "title" : "Subscription"
}
-->

# Subscription

A protocol representing the connection of a subscriber to a publisher.

```
protocol Subscription : Cancellable, CustomCombineIdentifierConvertible
```

## Overview

Subscriptions are class constrained because a [`Subscription`](/documentation/Combine/Subscription) has identity, defined by the moment in time a particular subscriber attached to a publisher. Canceling a [`Subscription`](/documentation/Combine/Subscription) must be thread-safe.

You can only cancel a [`Subscription`](/documentation/Combine/Subscription) once.

Canceling a subscription frees up any resources previously allocated by attaching the [`Subscriber`](/documentation/Combine/Subscriber).

## Topics

### Requesting elements

[`request(_:)`](/documentation/Combine/Subscription/request(_:))

Tells a publisher that it may send more values to the subscriber.

[`Subscribers.Demand`](/documentation/Combine/Subscribers/Demand)

A requested number of items, sent to a publisher from a subscriber through the subscription.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)