Search Documentation
Search across all documentation pages
Apps

Apps

An App represents an isolated project or environment within an Organization. Each app has its own API keys, origins, presets, and jobs, making it easy to separate production from staging, or to run multiple independent products under a single billing entity.

Overview

Apps provide resource isolation within an organization. A typical setup might look like:

Acme Corporation (org)
  ├── Production (app) — live API keys, production origins
  ├── Staging (app)    — test API keys, staging origins
  └── Analytics (app)  — separate project with its own config

Creating an App

curl -X POST https://api.transcodely.com/transcodely.v1.AppService/Create 
  -H "Authorization: Bearer {{API_KEY}}" 
  -H "X-Organization-ID: org_a1b2c3d4e5" 
  -H "Content-Type: application/json" 
  -d '{
    "org_id": "org_a1b2c3d4e5",
    "name": "Production",
    "description": "Live video transcoding for our streaming platform"
  }'
{
  "app": {
    "id": "app_k1l2m3n4o5",
    "org_id": "org_a1b2c3d4e5",
    "name": "Production",
    "description": "Live video transcoding for our streaming platform",
    "status": "active",
    "created_at": "2026-01-15T10:30:00Z",
    "updated_at": "2026-01-15T10:30:00Z"
  }
}

App names must be unique within an organization (case-insensitive) and are limited to 60 characters.

App Status

StatusDescriptionBehavior
activeNormal operationFull access to all resources
archivedSoft-deletedNo new resources can be created; existing jobs continue to completion

Archive an app when you no longer need it. Existing jobs will finish processing, but no new jobs, API keys, or origins can be created.

curl -X POST https://api.transcodely.com/transcodely.v1.AppService/Archive 
  -H "Authorization: Bearer {{API_KEY}}" 
  -H "X-Organization-ID: org_a1b2c3d4e5" 
  -H "Content-Type: application/json" 
  -d '{ "id": "app_k1l2m3n4o5" }'

Webhook Configuration

Each app can have a webhook endpoint configured to receive real-time notifications about job events. Webhooks are configured at the app level and apply to all jobs within that app.

curl -X POST https://api.transcodely.com/transcodely.v1.AppService/Create 
  -H "Authorization: Bearer {{API_KEY}}" 
  -H "X-Organization-ID: org_a1b2c3d4e5" 
  -H "Content-Type: application/json" 
  -d '{
    "org_id": "org_a1b2c3d4e5",
    "name": "Production",
    "webhook": {
      "url": "https://api.yourapp.com/webhooks/transcodely",
      "generate_secret": true,
      "events": ["job.completed", "job.failed", "job.progress"]
    }
  }'

When generate_secret is true, the response includes a one-time webhook secret for signature verification:

{
  "app": {
    "id": "app_k1l2m3n4o5",
    "webhook": {
      "url": "https://api.yourapp.com/webhooks/transcodely",
      "has_secret": true,
      "secret_hint": "...f4g5",
      "events": ["job.completed", "job.failed", "job.progress"]
    }
  },
  "webhook_secret": "whsec_a1b2c3d4e5f6g7h8i9j0..."
}

Store the webhook_secret securely. It is only returned once at creation (or when regenerated).

Supported Webhook Events

EventDescription
job.completedAll outputs finished successfully
job.failedJob failed with an error
job.canceledJob was canceled by the user
job.progressJob progress updated (batched)
output.completedA single output finished
output.failedA single output failed

If no events are specified, the default is ["job.completed", "job.failed"].

Updating Webhook Configuration

You can update the webhook URL, regenerate the secret, or change the event subscriptions:

curl -X POST https://api.transcodely.com/transcodely.v1.AppService/Update 
  -H "Authorization: Bearer {{API_KEY}}" 
  -H "X-Organization-ID: org_a1b2c3d4e5" 
  -H "Content-Type: application/json" 
  -d '{
    "id": "app_k1l2m3n4o5",
    "webhook": {
      "url": "https://api.yourapp.com/v2/webhooks",
      "regenerate_secret": true,
      "events": ["job.completed", "job.failed"]
    }
  }'

To disable webhooks, set the URL to an empty string.

Listing Apps

curl -X POST https://api.transcodely.com/transcodely.v1.AppService/List 
  -H "Authorization: Bearer {{API_KEY}}" 
  -H "X-Organization-ID: org_a1b2c3d4e5" 
  -H "Content-Type: application/json" 
  -d '{
    "org_id": "org_a1b2c3d4e5",
    "pagination": { "limit": 20 },
    "include_archived": false
  }'