# Setapp Documentation > The first ever single subscription app store. A bargain for users, a goldmine for developers. ## Guides - [Setapp Marketplace overview](https://docs.setapp.com/docs/setapp-marketplace-overview.md) - [Setapp app requirements](https://docs.setapp.com/docs/preparing-your-application-for-setapp.md): Get to know the acceptance criteria and technical requirements. - [Integration overview](https://docs.setapp.com/docs/prepare-apps-for-setapp.md) - [Testing your apps](https://docs.setapp.com/docs/testing-your-application.md): Make final preparations before submission of the first app version. - [Troubleshooting](https://docs.setapp.com/docs/troubleshooting.md) - [Integration troubleshooting](https://docs.setapp.com/docs/integration-troubleshooting.md): When integrating your app with Setapp, you might meet one of these challenges. Please see how to overcome them quickly and efficiently. - [Distribution troubleshooting](https://docs.setapp.com/docs/distribution-troubleshooting.md) - [Integration via Vendor API](https://docs.setapp.com/docs/integrating-apps-using-vendor-api.md) - [Integration requirements](https://docs.setapp.com/docs/integration-requirements.md) - [Install Setapp Framework](https://docs.setapp.com/docs/installing-the-framework-1.md) - [Set up Setapp Framework](https://docs.setapp.com/docs/setting-up-the-framework-1.md) - [Specify supported architectures](https://docs.setapp.com/docs/specify-supported-architectures.md) - [iOS](https://docs.setapp.com/docs/integrating-the-ios-framework.md) - [Add a public key to your app](https://docs.setapp.com/docs/add-a-public-key-to-your-app.md) - [Allow Setapp to update your Catalyst app](https://docs.setapp.com/docs/allow.md) - [Initialize Setapp Framework](https://docs.setapp.com/docs/initialize-the-framework.md) - [Add custom URL scheme support to your app target](https://docs.setapp.com/docs/add-custom-url-scheme-support-to-your-application-target.md) - [Customize pop-up alerts](https://docs.setapp.com/docs/customize-pop-up-alerts.md) - [Support app extensions](https://docs.setapp.com/docs/new-support-app-extensions.md) - [Integration with an Electron app](https://docs.setapp.com/docs/integration-with-an-electron-app.md) - [Single app distribution overview](https://docs.setapp.com/docs/single-app-distribution-overview.md) - [Configure single app flow](https://docs.setapp.com/docs/configure-single-app-flow.md) - [Setapp single app appeal process](https://docs.setapp.com/docs/setapp-single-app-appeal-process.md) - [AI integration overview](https://docs.setapp.com/docs/ai-integration.md) - [AI Gateway](https://docs.setapp.com/docs/ai-gateway.md): Integrate with AI Gateway and access multiple AI models through a unified API - [Setapp AI Swift SDK](https://docs.setapp.com/docs/setapp-ai-sdk-integration.md): This guide will help you integrate Setapp AI capabilities into your iOS or macOS app. - [Setapp AI TypeScript SDK](https://docs.setapp.com/docs/typescript-sdk.md) - [Supported AI models](https://docs.setapp.com/docs/supported-ai-models.md) - [Update from Library to Setapp Framework](https://docs.setapp.com/docs/update-from-library-to-framework.md) - [Adding your policies](https://docs.setapp.com/docs/adding-your-policies.md) - [Submitting apps for review](https://docs.setapp.com/docs/submitting-apps-for-review.md): Learn the steps to start your review - [Monetizing on Setapp](https://docs.setapp.com/docs/monetizing-on-setapp.md) - [Setapp Membership revenue](https://docs.setapp.com/docs/setapp-membership-revenue.md) - [Single-app distribution revenue](https://docs.setapp.com/docs/single-app-distribution-revenue.md) - [Partner Program](https://docs.setapp.com/docs/about-partner-program.md): Learn how Setapp developers and affiliates earn more with our Partner Program. - [Add Setapp badge](https://docs.setapp.com/docs/add-setapp-badge.md): Detailed instructions on placing the badge on your website. - [App statistics & payouts](https://docs.setapp.com/docs/application-statistics.md): Find out more about your app's usage statistics and revenue results. - [Customers' reviews](https://docs.setapp.com/docs/respond-to-the-customers-reviews.md) - [Review guidelines](https://docs.setapp.com/docs/review-guidelines.md): This is a living document. Last revision: October 2025. - [Email outreach guidelines](https://docs.setapp.com/docs/email-outreach-guidelines.md) - [Quality check](https://docs.setapp.com/docs/quality-check.md) - [App description prompt](https://docs.setapp.com/docs/app-description-prompt.md) - [Setapp developer digest](https://docs.setapp.com/docs/setapp-digest-for-developers.md) - [UX checklist](https://docs.setapp.com/docs/ux-checklist.md) - [FAQ](https://docs.setapp.com/docs/faq.md): A set of frequently asked questions about Setapp. ## API Reference - [Access client's application on behalf of a user](https://docs.setapp.com/reference/post_application-access.md): Use this API when a user wants to access your application (start session, activate, login, etc). Decision whether to grant access or not should be taken depending on the response of this API. - [Report application usage](https://docs.setapp.com/reference/post_application-usage-report.md): Send usage events which are based on type of your application. For additional information visit https://docs.setapp.com/docs/library-integration#implement-usage-reporting. - [Get userinfo](https://docs.setapp.com/reference/get_userinfo.md): Please note: some data in the response requires scope that can be requested with Sign with Setapp only. - [Download video content](https://docs.setapp.com/reference/get_api_gateway_ai_v1_videos_content_by_video_id.md): Downloads the rendered video or a derived asset for the given **`video_id`**. Aligns with the [OpenAI Retrieve video content](https://developers.openai.com/api/reference/resources/videos/methods/download_content) contract: optional query **`variant`** selects **`video`** (default MP4), **`thumbnail`**, or **`spritesheet`**. **Parameters and response vary by provider.** Supported **`variant`** values, media types, and availability of preview assets depend on the upstream provider and model behind the job. In practice, almost all video models return the primary **video** asset; **`thumbnail`** and **`spritesheet`** may be unavailable or return different content types for some providers. The response body is **binary**; **`Content-Type`** reflects the actual media type. Upstream may stream the body. **Tool calling** and **prompt/context caching** are supported when the provider and model used to create the job expose those capabilities (check model info for `supports_function_calling` and `supports_prompt_caching`). - [Create video generation job](https://docs.setapp.com/reference/post_api_gateway_ai_v1_videos.md): Creates a new video generation job. The gateway routes to the provider selected by **`model`** (`provider/model` format). Supported backends include [OpenAI Create video](https://developers.openai.com/api/reference/resources/videos/methods/create) and [Google Gemini API](https://ai.google.dev/gemini-api/docs) (Veo). The **parameter set is provider-dependent**: optional body fields, allowed `seconds` and `size` values, response fields, and job status values may differ. Request and response shapes follow the OpenAI video API where applicable as a common baseline. **Tool calling** and **prompt/context caching** are supported when the selected provider and model expose those capabilities (check model info for `supports_function_calling` and `supports_prompt_caching`). **Required body fields** - **`model`** – Must be set using the **`provider/model`** format (e.g. `openai/sora-2` or `google/veo-3.1-fast-generate-001`). Do not omit the model. - **`prompt`** – Text that describes the video to generate (see the upstream provider reference for length limits). Other parameters such as `input_reference`, `seconds`, and `size` are optional and may be ignored or rejected depending on the selected provider and model. - [Retrieve video job metadata](https://docs.setapp.com/reference/get_api_gateway_ai_v1_videos_by_video_id.md): Fetches the latest metadata for a video generation job identified by **`video_id`**. Behaviour and response shape align with the [OpenAI Retrieve video](https://developers.openai.com/api/reference/resources/videos/methods/retrieve) API (same Video object as create/list flows): status, progress, timestamps, model, prompt, size, error payload, etc. **Response fields vary by provider.** Some backends omit fields that OpenAI always sends; **`progress`**, **`seconds`**, **`size`**, **`prompt`**, **`usage`**, and timestamps may be **`null`**. **`id`** may be a long provider-encoded string (e.g. `video_…` with embedded routing metadata). Job failures may surface under **`status`: `failed`** with **`error.code`** as a **number** (e.g. gRPC-style) instead of a string. - [Create transcription](https://docs.setapp.com/reference/post_api_gateway_ai_v1_audio_transcriptions.md): Transcribes audio into the input language using a unified OpenAI-compatible multipart interface. Supports non-streaming JSON responses and, for capable OpenAI models, SSE streaming. **Required fields (this endpoint):** | Field | Description | | --- | --- | | `file` | Audio (or video) file to transcribe (`format: binary`). | | `model` | Model id in **`provider/model`** format (e.g. `openai/gpt-4o-transcribe`, `elevenlabs/scribe_v2`). | **Provider-native requirements** (mapped via `model` prefix; see linked docs for full rules): | Provider | Native API | Required upstream | | --- | --- | --- | | OpenAI | [Create transcription](https://developers.openai.com/api/reference/resources/audio/subresources/transcriptions/methods/create) | `file`, `model` | | ElevenLabs | [Create transcript](https://elevenlabs.io/docs/api-reference/speech-to-text/convert) | `model_id`, and **either** `file` **or** `source_url` | On this endpoint always send `file` + `model`. ElevenLabs URL-based input (`source_url`) is only available when the platform exposes it for `elevenlabs/*` models. **Optional parameters depend on the provider.** Common examples: - **OpenAI** — `language`, `prompt`, `response_format` (`json`, `text`, `srt`, `verbose_json`, `vtt`, `diarized_json`), `temperature`, `timestamp_granularities[]`, `stream`, `include[]`, `chunking_strategy`, `known_speaker_names[]`, `known_speaker_references[]` (diarization models). - **ElevenLabs** — `language_code`, `diarize`, `num_speakers`, `timestamps_granularity`, `tag_audio_events`, `use_multi_channel`, `keyterms`, `webhook`, `source_url`, `entity_detection`, `temperature`, `seed`, and others listed in [ElevenLabs Speech-to-Text](https://elevenlabs.io/docs/api-reference/speech-to-text/convert). The set of accepted optional fields and response fields **may differ between providers and models**. Use the model/info endpoint to check capabilities (e.g. streaming, diarization, word timestamps). - [Create chat completion](https://docs.setapp.com/reference/post_api_gateway_ai_v1_chat_completions.md): Create a chat completion using the same interface as the OpenAI Chat Completions API. Supports both SSE (Server-Sent Events) streaming and non-streaming modes. Request and response formats follow the [OpenAI Create chat completion](https://developers.openai.com/api/reference/resources/chat/subresources/completions/methods/create) API. **Tools (function calling):** Optional `tools` and `tool_choice` support hybrid client and server tools. Client-tool calls return `tool_calls` for the client to execute; server tools registered on the gateway run automatically without returning `tool_calls`. Prefer the Responses API for new integrations. - [Create embeddings](https://docs.setapp.com/reference/post_api_gateway_ai_v1_embeddings.md): Creates an embedding vector representing the input text using the same interface as the OpenAI Embeddings API. Request and response formats follow the [OpenAI Create embedding](https://developers.openai.com/api/reference/resources/embeddings/methods/create) API. **`model`** is required in the request body, using the **`provider/model`** identifier format (e.g. `openai/text-embedding-3-small`), consistent with other AI Gateway operations. - [Edit image](https://docs.setapp.com/reference/post_api_gateway_ai_v1_images_edits.md): Create an edited or extended image from a source image and a prompt. Image editing is routed to **OpenAI** or **Google** depending on the **`model`** you choose. Request and response format follow the [OpenAI Images Create Edit](https://platform.openai.com/docs/api-reference/images/createEdit) API as a common contract. For **Google** models, see [Gemini API image generation](https://ai.google.dev/gemini-api/docs/image-generation). **Required body fields:** `image`, `prompt`, and `model`. **All other fields are optional and depend on the provider and model** you select via `model` — for example `mask`, `size`, `n`, `response_format`, `quality`, `input_fidelity`, `output_format`, `background`, `edit_mode`, and `mask_mode`. OpenAI GPT Image (`gpt-image-1`) and Google Gemini image models accept different subsets; see property descriptions below and provider documentation. **`model`** uses the **`provider/model`** identifier format (e.g. `openai/gpt-image-1` or `google/gemini-3.1-flash-image`), consistent with other AI Gateway operations. - [Create image](https://docs.setapp.com/reference/post_api_gateway_ai_v1_images_generations.md): Creates images from a text prompt. Generation is routed to **OpenAI** or **Google** depending on the **`model`** you choose. Request and response format follow the [OpenAI Images Create](https://platform.openai.com/docs/api-reference/images/create) API as a common contract. For **Google** models, see [Gemini API image generation](https://ai.google.dev/gemini-api/docs/image-generation). **Required body fields:** `model` and `prompt`. **All other fields are optional and depend on the provider and model** you select via `model` — for example `n`, `size`, `quality`, `response_format`, `output_format`, `background`, and `aspect_ratio`. OpenAI GPT Image (`gpt-image-1`) and Google Gemini image models accept different subsets; see property descriptions below and provider documentation. **`model`** uses the **`provider/model`** identifier format (e.g. `openai/gpt-image-1` or `google/gemini-3.1-flash-image`), consistent with other AI Gateway operations. - [Get available model information](https://docs.setapp.com/reference/get_api_gateway_ai_v1_model_info.md): Returns information about available AI models and their capabilities. Use this endpoint to discover: - Available model identifiers for use with `/responses` - Model capabilities (vision, function calling, etc.) - Token limits and other configuration Optionally filter by model ID (UUID) using the `litellm_model_id` query parameter. **Errors:** Unlike other AI Gateway routes, this operation does **not** return `401`, `402`, `403`. Documented error responses are `400` (invalid query input), `429`, and `500`. - [Create model response](https://docs.setapp.com/reference/post_api_gateway_ai_v1_responses.md): Creates a model response using the same interface as the [OpenAI Create a model response](https://developers.openai.com/api/reference/resources/responses/methods/create) API. Provide a text `input` string to generate text or JSON outputs. Supports non-streaming JSON and **Server-Sent Events** when `stream=true`. Omit `tools` for a simple text response. Send optional `tools` for function calling (client vs server tools — see overview above). **Request** – Requires `model` and `input`. Additional parameters are **provider-dependent** — see provider documentation for your `model` prefix (links in overview). **Tool calling** and **prompt/context caching** are supported when the selected provider and model expose those capabilities (check model info for `supports_function_calling` and `supports_prompt_caching`). **Tools** – Client tools return `function_call` items in `output` for your application to execute. Server tools registered on the gateway run automatically without returning intermediate `function_call` items for those tools. **Streaming** – `text/event-stream` with `data:` lines carrying typed events (`response.created`, `response.output_text.delta`, `response.completed`, etc.). Stream ends with `data: [DONE]`. - [Error response reference (documentation only)](https://docs.setapp.com/reference/get_errors_reference.md): This path is for documentation only. All AI Gateway endpoints may return the error responses described in the components below. **HTTP status and Gateway code mapping** | Status | Code (Gateway format) | Meaning | |--------|-------------------|--------| | 400 | BAD_REQUEST | Missing required fields (e.g. model, messages) or invalid request syntax | | 401 | UNAUTHORIZED | Missing, invalid, or expired authentication token | | 402 | INSUFFICIENT_CREDITS | Not enough credits to perform the request | | 403 | FORBIDDEN | Authenticated but not allowed (e.g. team not allowed to access model) | | 422 | VALIDATION | Invalid values (e.g. max_tokens < 0); check errors[] for field-level details | | 429 | RATE_LIMIT_EXCEEDED | Too many requests; retry after some time | | 500 | INTERNAL_SERVER_ERROR | Server or upstream error; use request_id when contacting support |