Creative Kit Android


To share any files with Snapchat, your app must target the right Android support library:

  • Android support library 22+

Getting Started

We share the Creative Kit and Core Kit AARs from our Maven repository. To access them, add the following to your root project's build.gradle file:

1repositories {
2   maven {
3       url ""
4   }

Note: If you have trouble accessing Google (used in the link above), you can use our GitHub Maven repository with the following code block:

1repositories {
2   maven {
3       url ""
4   }

Next, add the following implementation to the dependencies section of your application’s build.gradle file, not the root project’s build.gradle:

1dependencies {
2   ...
3   implementation([
4           'com.snapchat.kit.sdk:creative:1.13.0',
5           'com.snapchat.kit.sdk:core:1.13.0'
6   ])

Set up your application’s AndroidManifest.xml:

1<application ...>
2   <!-- Please put your client id here -->
3   <meta-data android:name="com.snapchat.kit.sdk.clientId" android:value="your app’s client id" />
5   <!-- See below in the next section for how to setup FileProvider -->

If your app targets Android 11 (API level 30) or higher, you will need to include the following package query in your app's AndroidManifest.xml:

2  <package android:name="" />

Set up your FileProvider to share media files to Snapchat.

To share any media or sticker content to Snapchat, follow the protocol specified by FileProvider API. Once you have set this up, your AndroidManifest.xml will contain the following under <application>:

2            android:authorities="${applicationId}.fileprovider"
3            android:name=""
4            android:exported="false"
5            android:grantUriPermissions="true">
6            <meta-data
7                android:name=""
8                android:resource="@xml/file_paths"
9                />
10        </provider>

Note: The authority used by the SDK is explicitly <your-package-name>.fileprovider. Please ensure you follow this convention when setting the value. If you have different package names for debug and production builds, the ${applicationId} should resolve to it appropriately.

As of v1.4.4, Snap Kit is supported on x86 automatically. To filter out the x86 libraries, include the following snippet in your app's build.gradle:

1defaultConfig {
2  ndk {
3    abiFilters 'armeabi-v7a', 'arm64-v8a'
4  }

For older versions, to support Snap Kit on x86 and x86_64, include the following snippet in your app's build.gradle:

1configurations.all {
2    resolutionStrategy {
3        force 'com.snapchat.kit.sdk:core:' + <versionName> + ' x86'
5        }
6} // Where <versionName> is the Snap Kit version you are using (Minimum 1.2.0)

The Snap Kit SDK is initialized on application start-up by default. Auto-initialization can be disabled and the SDK can be manually initialized and de-initialized.

To disable Snap Kit SDK auto-initialization in your application, add the following provider section to your app’s AndroidManifest.xml file between the application tags as shown:

3  <provider
4    android:name="com.snapchat.kit.sdk.SnapKitInitProvider"
5    android:enabled="false"
6  />

To manually initialize the Snap Kit SDK, use the SnapKit#initSDK(Context context) method.

To de-initialize the Snap Kit SDK, use the SnapKit#deinitialize() method.


Preparing a Photo or Video to Send to Snapchat

A Snap with a still image or video is displayed in Snapchat’s preview screen, where the user can make the final modifications before sending it. Similarly, a Snap without any pre-populated content is displayed in Snapchat’s camera screen, letting users create their own content in a regular Snapchat flow. In both cases, your app can add metadata or overlays — like caption text, sticker images, and attachment URLs — to embed with the Snap.

This section explains how to use Creative Kit’s interfaces to let your users send to Snapchat.

Media Size and Length Restrictions
  • Shared media must be 300 MB or smaller.
  • Videos must be 60 seconds or shorter.
  • Videos that are longer than 10 seconds are split up into multiple Snaps of 10 seconds or less.

Suggested Media Parameters:

  • Aspect ratio - 9:16
  • Preferred file types:
    • Image - .jpg or .png
    • Video - .mp4 or .mov
  • Dimensions - 1080px x 1920px
  • Video Bitrate - 1080p at 8mbps or 720p at 5mbps

A basic call:

1SnapCreativeKitApi snapCreativeKitApi = SnapCreative.getApi(<Your-Activity>);
2SnapMediaFactory snapMediaFactory = SnapCreative.getMediaFactory(<Your-Activity>);
3snapCreativeKitApi.send(<Your-content>); // See below for examples

How your actual calls will look depends on your content. To provide still images for users to send to Snapchat, specify the photo content:

1SnapMediaFactory snapMediaFactory = SnapCreative.getMediaFactory(<Your-Activity>);
2SnapPhotoFile photoFile;
3try {
4   photoFile = snapMediaFactory.getSnapPhotoFromFile(<Your-photo-file>);
5} catch (SnapMediaSizeException e) {
6   handleError(e);
7   return;
9SnapPhotoContent snapPhotoContent = new SnapPhotoContent(photoFile);

To provide videos for your users to send to Snapchat, specify the video content:

1SnapMediaFactory snapMediaFactory = SnapCreative.getMediaFactory(<Your-Activity>);
2SnapVideoFile videoFile;
3try {
4   videoFile = snapMediaFactory.getSnapVideoFromFile(<Your-video-file>);
5} catch (SnapMediaSizeException|SnapVideoLengthException e) {
6   handleError(e);
7   return;
9SnapVideoContent snapVideoContent = new SnapVideoContent(videoFile)

Or send your users right into the live camera on Snapchat:

1SnapLiveCameraContent snapLiveCameraContent = new SnapLiveCameraContent();

Sharing With Overlay Stickers, Caption Text, and Attachment URLs

You can add sticker overlays, caption text, and attachment URLs to any Snap content type — including when deeplinking to the live camera.

  • Stickers must be JPEG or PNG 1 MB or smaller.
  • Android currently does not support animated stickers.
  • Universal links are not supported

For stickers specifically, you can set the size, rotation, and placement position. Here’s an example:

1SnapSticker snapSticker = null;
2try {
3    snapSticker = snapMediaFactory.getSnapStickerFromFile(stickerFile);
4} catch (SnapStickerSizeException e) {
5    handleError(e);
6    return;
8// Height and width~~ ~~in pixels
12// Position is specified as a ratio between 0 & 1 to place the center of the sticker
16// Specify clockwise rotation desired
17snapSticker.setRotationDegreesClockwise(0); // degrees clockwise
19// Note: Your snap content can be video, photo, or live-camera content

Provide captions for your users to easily add, letting their friends find your website directly from the Snap. Here’s how to add captions and URLs:

1SnapCreativeKitApi snapCreativeKitApi = new SnapCreativeKitApi(<your-activity>, CLIENT_ID);
2// Shows up as a caption text on top of the Snap
3// User will be able to edit the vertical position in Preview screen
6// The viewer of your Snap can swipe up to open this URL

Adding a Lens Attachment

You are able to add Lens attachments so that users will open Snapchat to specific Lenses! To enable sharing with Dynamic Lenses, you must first create and publish a Lens using Lens Studio. When you initiate a share, you will need to point to the Lens using SnapLensContent. Dynamic fields can be populated using key-value pairs in SnapLensLaunchData. You can choose to add captions or a URL attachment to a Lens, but stickers and background photos or videos are disabled in this flow. In addition, you may optionally include launch data with the Lens attachment, to add other attributes to the Lens, like hints, for example.


  • Stickers are not allowed
  • Captions are limited to 250 characters
  • The attachment URL must be a properly formatted URL in string format
  • Universal links are not supported
  • Launch data can be added in key-value pairs. The key must be a string and the value can be an int, float, double, string, or an array of any one of those types

Try the following for adding a Lens attachment:

1// Build SnapLensLaunchData
2SnapLensLaunchData launchData = new SnapLensLaunchData.Builder()
3    .addStringKeyPair("hair_color", "#b76e79")
4    .addStringKeyPair("hint", "lens_hint_raise_your_eyebrows")
5    .build();
7// Create a SnapLensContent object with SnapLensLaunchData and LensUUID to be shared
8SnapLensContent snapLensContent = SnapLensContent.createSnapLensContent("123e4567e89b12d3a456426614174000", launchData);
10// Optionally build SnapLensLaunchData, add to snapLensContent
11SnapLensLaunchData launchData = new SnapLensLaunchData.Builder()
12    .addStringKeyPair("hair_color", "#b76e79")
13    .addStringKeyPair("hint", "lens_hint_raise_your_eyebrows")
14    .build();
16// Optionally add an attachmentUrl and caption to the content
18snapLensContent.setCaptionText("Check out this Snap Kit Lens!");
20// Use the SnapCreative API to share the snapLensContent
21SnapCreativeKitApi snapCreativeKitApi = SnapCreative.getApi(context);

That’s it! You just learned how to integrate the Snapchat experience into your app.

Known Issues on Android

Animated and WebP stickers are not yet supported.

What’s Next