Favicon

You are here: Home > App Distribution > API > Publications > POST - Create Publication

POST - Create a Publication

Learn how to create App Store publications in Applivery using the Integrations API and Workspace API. Control app distribution and access.

7 min read

TL;DR

Create and manage Applivery App Store publications programmatically using the Integrations or Workspace API to control app distribution and access.

Create a new publication in the Applivery App Store. A publication is the distribution configuration that controls how and to whom a specific build (or set of builds) of an app is made available — including its URL slug, security mode, visibility, access filters, and branding overrides.

For a conceptual overview of publications and how they relate to builds, see How to Distribute Your Apps.

Applivery provides two separate APIs for creating publications, each requiring a different authentication credential.


Choosing the right API

Integrations API

Workspace API

Designed for

Per-app CI/CD pipelines

Workspace-level automation across multiple apps

Authentication

App API Token (per-app)

Service Account token (workspace-level)

App context

Implicit — token is already scoped to an app

Explicit — organizationId and storeId required in the path

Typical users

Scripts that auto-publish after a build is uploaded

Platform engineers managing publications across multiple apps

Warning

Access to the different APIs might not be available in your current plan. Please check availability on our pricing page.


Integrations API

Use this endpoint when creating publications within the scope of a single app. Authentication uses an App API Token, scoped to the specific app.

To create an App API Token, see Apps API Authentication.

Endpoint

POST https://api.applivery.io/v1/integrations/distributions

Authentication

Authorization: Bearer <your_app_token>

Request format

application/json


Parameters

Parameters are grouped by area of configuration.

Required parameters

Parameter

Type

Description

slug

String

The URL-friendly identifier for this publication. Must be unique within your workspace. Used to construct the publication URL: yourworkspace.applivery.com/{slug}. Only lowercase letters, numbers, and hyphens allowed.

security

String

Authentication mode. Allowed values: public, password, logged. See Security modes below.

visibility

String

Publication visibility. Allowed values: active, inactive, unlisted. See Visibility modes below.

filter.type

String

Build selection strategy. Allowed values: last, build, builds, gitBranch, gitTag, tag. See Filter configuration below.

Build Selection Filter

Parameter

Type

Required

Description

filter.type

String

Yes

Build selection strategy. See Filter configuration.

filter.value

String

Conditional

Required for gitBranch, gitTag, and tag filter types. The branch name, git tag, or build tag to match.

filter.ios

String

Conditional

Build ID for the iOS build. Required when filter.type is build and the app has iOS builds.

filter.android

String

Conditional

Build ID for the Android build. Required when filter.type is build and the app has Android builds.

filter.macos

String

Conditional

Build ID for the macOS build. Required when filter.type is build and the app has macOS builds.

filter.builds

Array

Conditional

Required when filter.type is builds. Array of objects with buildPlatform and id.

filter.builds[].buildPlatform

String

Conditional

Platform identifier. Supported values: ios, macos, android, ps4, ps5, switch, xbox-one, xbox-series.

filter.builds[].id

String

Conditional

Build ID for the specified platform.

Access Control

Parameter

Type

Required

Description

password

String

Conditional

Required when security is password. The password users must enter to access the publication.

groups

Array

No

Restricts access to specific user groups. Supports AND/OR logic. Each inner array is an AND clause; each outer element is an OR clause. E.g. to allow users in group1 AND group2, OR users in group3: [["group1","group2"],["group3"]]. Only applies when security is logged.

activateUserAudiences

Boolean

No

Whether to enable audience-based access for this publication.

userAudienceMap

Array

No

Array of audience assignments. Each element defines an audience and its notification preference.

userAudienceMap[].id

String

Conditional

ID of the audience to assign to this publication.

userAudienceMap[].notifyNewBuildsProcessed

Boolean

No

Whether users in this audience should receive notifications when a new build is processed.

allowedCountries

Array

No

ISO 3166-1 alpha-2 country codes to allow access from. If set, only users from these countries can access the publication. Cannot be combined with blockedCountries.

blockedCountries

Array

No

ISO 3166-1 alpha-2 country codes to block access from. Cannot be combined with allowedCountries.

Build Display Options

Parameter Type Required Description
tags Array No Tags to categorize this publication. Comma-separated. E.g. ["staging", "sprint-42"].
showHistory Boolean No Whether users can browse and install previous builds of the app. Default: false.
showDevInfo Boolean No Whether to display technical build information (git metadata, certificate details, tags) to users. Default: false.
expirationDate String No ISO 8601 timestamp after which the publication becomes unavailable for download. Use to create time-limited distributions, beta programs, or promotional campaigns. E.g. "2025-12-31T23:59:59Z". Once expired, the publication behaves as if set to inactive.

Parameter

Type

Required

Description

terms.active

Boolean

No

Whether users must accept legal terms before accessing the publication.

terms.text

String

Conditional

Required when terms.active is true. The legal terms text to display.

Branding and App configuration overrides

Parameter

Type

Required

Description

configuration.application.name

String

No

Overrides the app name displayed in the publication.

configuration.application.description

String

No

Overrides the app description displayed in the publication.

configuration.branding.logo

String

No

Overrides the store logo for this publication.

configuration.branding.primaryColor

String

No

Overrides the primary branding color (hex format). E.g. #FF5733.

configuration.branding.buttonColor

String

No

Overrides the button color (hex format).


Security modes

Value

Description

public

No authentication required. Anyone with the publication URL can access and download.

password

A password (specified in the password field) is required to access the publication.

logged

Users must be logged in with an Applivery account or your workspace SSO to access the publication.

Visibility modes

Value

Description

active

The publication is listed in the App Store and accessible to all authorized users.

inactive

The publication is not accessible to anyone.

unlisted

The publication is not listed in the App Store but is accessible to anyone who has the direct URL.

Filter configuration

filter.type

Description

last

Always serves the most recently processed build. No additional filter.value needed.

build

Serves a specific build, identified by filter.ios, filter.android, or filter.macos.

builds

Serves specific builds per platform, defined in filter.builds. Supports custom platforms.

gitBranch

Serves the latest build matching the git branch specified in filter.value. E.g. develop.

gitTag

Serves the build matching the git tag specified in filter.value. E.g. v2.4.0.

tag

Serves builds matching the Applivery build tag specified in filter.value.


Example Request

Minimal publication — public, always serving the latest build:

curl 'https://api.applivery.io/v1/integrations/distributions' \
  -X POST \
  -H 'Authorization: Bearer YOUR_APP_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "slug": "my-app-staging",
    "security": "public",
    "visibility": "active",
    "filter": {
      "type": "last"
    }
  }'

Private publication with group access control and build history:

curl 'https://api.applivery.io/v1/integrations/distributions' \
  -X POST \
  -H 'Authorization: Bearer YOUR_APP_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "slug": "my-app-internal",
    "security": "logged",
    "visibility": "active",
    "filter": {
      "type": "gitBranch",
      "value": "develop"
    },
    "groups": [["qa-team", "developers"]],
    "showHistory": true,
    "showDevInfo": true,
    "tags": ["internal", "qa"]
  }'

Responses

Note

The distributionUrl field in the response contains the full public URL of the created publication. Share this URL with your users to give them access to the publication.

{
  "status": true,
  "data": {
    "id": "string",
    "updatedAt": "string",
    "createdAt": "string",
    "application": "string",
    "applicationInfo": {
      "id": "string",
      "slug": "string",
      "name": "string",
      "picture": "string"
    },
    "slug": "string",
    "filter": {
      "type": "last",
      "value": "string",
      "ios": "string",
      "android": "string",
      "windows": "string",
      "macos": "string",
      "builds": [
        {
          "buildPlatform": "string",
          "id": "string"
        }
      ]
    },
    "security": "public",
    "tags": ["string"],
    "groups": [["string"]],
    "visibility": "active",
    "showHistory": true,
    "showDevInfo": true,
    "distributionUrl": "string",
    "terms": {
      "active": true,
      "text": "string"
    }
  }
}

Slug already in use.

{
  "status": false,
  "error": {
    "code": 5024,
    "message": "Slug already used"
  }
}
{
  "status": false,
  "error": {
    "code": 4002,
    "message": "No auth token"
  }
}
{
  "status": false,
  "error": {
    "code": 3001,
    "message": "Entity not found"
  }
}

Workspace API

Use this endpoint when creating publications at the workspace level — for example, in platform engineering workflows that operate across multiple apps using a single credential.

Authentication uses a Service Account token, which is workspace-scoped and not tied to any individual app.

To create a Service Account, see Service Accounts.

Endpoint

POST https://api.applivery.io/v1/organizations/{organizationId}/stores/{storeId}/pubApps

Path parameters

Parameter

Type

Required

Description

organizationId

String

Yes

The unique identifier of your Applivery organization.

storeId

String

Yes

The unique identifier of the store (app project) to create the publication in.

Authentication

Authorization: Bearer <your_service_account_token>

Example request

curl 'https://api.applivery.io/v1/organizations/ORG_ID/stores/STORE_ID/pubApps' \
  -X POST \
  -H 'Authorization: Bearer YOUR_SERVICE_ACCOUNT_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "slug": "my-app-release",
    "security": "public",
    "visibility": "active",
    "filter": {
      "type": "last"
    }
  }'

The request body parameters and response schema are identical to the Integrations API.

Key Takeaways

  • Applivery provides two APIs for creating publications: Integrations API and Workspace API.
  • The Integrations API is designed for per-app CI/CD pipelines and uses an App API Token.
  • The Workspace API is designed for workspace-level automation and uses a Service Account token.
  • Required parameters for creating a publication include slug, security, visibility, and filter.type.
  • Build selection filters allow you to specify which builds are included in the publication.