Subscribe to mutations for creating real-time clients: ```java ApiOperation subscription = Amplify.API.subscribe( ModelSubscription.onCreate(Todo.class), onEstablished -> Log.i("ApiQuickStart", "Subscription established"), onCreated -> Log.i("ApiQuickStart", "Todo create subscription received: " + ((Todo) onCreated.getData()).getName()), onFailure -> Log.e("ApiQuickStart", "Subscription failed", onFailure), () -> Log.i("ApiQuickStart", "Subscription completed") ); // Cancel the subscription listener when you're finished with it subscription.cancel(); ``` ```kotlin val subscription = Amplify.API.subscribe( ModelSubscription.onCreate(Todo::class.java), { Log.i("ApiQuickStart", "Subscription established") }, { Log.i("ApiQuickStart", "Todo create subscription received: ${(it.data as Todo).name}") }, { Log.e("ApiQuickStart", "Subscription failed", it) }, { Log.i("ApiQuickStart", "Subscription completed") } ) // Cancel the subscription listener when you're finished with it subscription.cancel(); ``` ```kotlin val job = activityScope.launch { try { Amplify.API.subscribe(ModelSubscription.onCreate(Todo::class.java)) .catch { Log.e("ApiQuickStart", "Error on subscription", it) } .collect { Log.i("ApiQuickStart", "Todo created! ${it.data.name}") } } catch (notEstablished: ApiException) { Log.e("ApiQuickStart", "Subscription not established", it) } } // When done with subscription job.cancel() ``` ```java RxSubscriptionOperation> subscription = RxAmplify.API.subscribe(request); subscription .observeConnectionState() .subscribe(connectionStateEvent -> Log.i("ApiQuickStart", String.valueOf(connectionStateEvent))); subscription .observeSubscriptionData() .subscribe( data -> Log.i("ApiQuickStart", data), exception -> Log.e("ApiQuickStart", "Subscription failed.", exception), () -> Log.i("ApiQuickStart", "Subscription completed.") ); // Cancel the subscription listener when you're finished with it subscription.cancel(); ```