Setup Pika
{: .no_toc }
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
Approximately 3 minutes to complete setup steps.
---
## Create Discord account
You need a [Discord](https://discord.com) account to interact with [Pika Discord Bot](http://discord.gg/pika). Create a [new account](https://discord.com/register) if you don't have one already.
Please note even if you have an existing Discord account we are **strongly** recommending creating a separate Discord account specifically designated to be used with useapi.net API.
## Join Pika Discord Server
Follow Pika Labs [instructions](https://pikalabsai.org/pika-labs-discord-server-guide/) and join official [Pika Discord Server](http://discord.gg/pika).
## Add Pika Bot to your Direct Messages channel
Please follow [youtube video](https://www.youtube.com/watch?v=moxSKVcQt6c) to add Pika Bot to your Direct Messages channel.
## Make a note of your Direct Messages Pika channel id
Your Discord URL looks like `https://discord.com/channels/@me/
Pika API v1
January 2024 (December 15, 2025)
Pika Discord bot API has been decommissioned and no longer available.
This is [experimental](../../docs/legal) API for [Pika Discord Bot](http://discord.gg/pika) by [Pika.art](https://pika.art). Pika currently support text and images as input for video generation, and private generations by directly messaging the bot.
[Setup Pika](../../docs/start-here/setup-pika)
[Postman collection](https://www.postman.com/useapinet/useapi-net/collection) (January 20, 2026)
#### Example source code on GitHub
* [Face swap and animate images generated by Midjourney using InsightFaceSwap and Pika (using webhook)](https://github.com/useapi/examples/tree/main/imagine-faceswap-animate) February 19, 2024
* [Animate images generated by Midjourney using Pika (using webhook)](https://github.com/useapi/examples/tree/main/animate-midjourney-images-with-pika) January 29, 2024
Developer Community:
* DEL pika/account/channel
parent: Pika API v1
nav_order: 400
nav_exclude: true
---
## Delete Pika account
{: .no_toc }
Pika Discord bot API has been decommissioned and no longer available.
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
{: .delete }
> **https://api.useapi.net/v1/pika/account/`channel`**
The `channel` value should correspond to an account configured previously via a [POST](post-pika-account-channel) request.
##### Request Headers
``` yaml
Authorization: Bearer {API token}
```
- `API token` is **required**, see [Setup useapi.net](../start-here/setup-useapi) for details.
##### Responses
{% tabs del_account_Pika_response %}
{% tab del_account_Pika_response 204 %}
204 No Content
{% endtab %}
{% tab del_account_Pika_response 401 %}
401 Unauthorized
```json
{
"error": "Unauthorized",
"code": 401
}
```
{% endtab %}
{% tab del_account_Pika_response 404 %}
404 Not Found
{% endtab %}
{% endtabs %}
##### Model
```typescript
{ // TypeScript, all fields are optional
error: string,
errorDetails: string,
code: number
}
```
##### Examples
{% tabs del_account_Pika_example %}
{% tab del_account_Pika_example Curl %}
``` bash
curl -H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer …" \
-X DELETE https://api.useapi.net/v1/pika/account/GET pika/account/channel
parent: Pika API v1
nav_order: 200
nav_exclude: true
---
## Retrieve Pika configuration for `channel`
{: .no_toc }
Pika Discord bot API has been decommissioned and no longer available.
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
{: .get }
> **https://api.useapi.net/v1/pika/account/`channel`**
The `channel` value should correspond to an account configured previously via a [POST](post-pika-account-channel) request.
##### Request Headers
``` yaml
Authorization: Bearer {API token}
Content-Type: application/json
```
- `API token` is **required**, see [Setup useapi.net](../start-here/setup-useapi) for details.
##### Responses
{% tabs get_account_Pika_channel_response %}
{% tab get_account_Pika_channel_response 200 %}
200 OK
```json
{
"channel": "Discord channel id",
"discord": "Discord token",
"maxJobs": 1-10
}
```
{% endtab %}
{% tab get_account_Pika_channel_response 401 %}
401 Unauthorized
```json
{
"error": "Unauthorized",
"code": 401
}
```
{% endtab %}
{% tab get_account_Pika_channel_response 404 %}
404 Not Found
Configuration not found. To create configuration use [pika/account/`channel`](https://useapi.net/docs/api-pika-v1/post-pika-account-channel).
{% endtab %}
{% endtabs %}
##### Model
```typescript
{ // TypeScript, all fields are optional
discord: string,
channel: string,
maxJobs: number,
}
```
##### Examples
{% tabs get_account_Pika_channel_example %}
{% tab get_account_Pika_channel_example Curl %}
``` bash
curl https://api.useapi.net/v1/pika/account/GET pika/account
parent: Pika API v1
nav_order: 100
nav_exclude: true
---
## Retrieve Pika accounts information
{: .no_toc }
Pika Discord bot API has been decommissioned and no longer available.
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
For your convenience, you can specify your Pika configuration values under your Pika account. If you specify multiple Pika accounts, the API will automatically perform load balancing by randomly selecting an account with available capacity before making calls to Discord / Pika.
This endpoint retrieves the complete list of configured accounts for Pika.
{: .get }
> **https://api.useapi.net/v1/pika/account**
##### Request Headers
``` yaml
Authorization: Bearer {API token}
Content-Type: application/json
```
- `API token` is **required**, see [Setup useapi.net](../start-here/setup-useapi) for details.
##### Responses
{% tabs account_Pika_response %}
{% tab account_Pika_response 200 %}
200 OK
```json
{
"Discord channel A": {
"channel": "Discord channel A",
"discord": "Discord token A",
"maxJobs": 1-10
},
"Discord channel B": {
"channel": "Discord channel B",
"discord": "Discord token B",
"maxJobs": 1-10
},
"Discord channel N": {
"channel": "Discord channel N",
"discord": "Discord token N",
"maxJobs": 1-10
}
}
```
{% endtab %}
{% tab account_Pika_response 401 %}
401 Unauthorized
```json
{
"error": "Unauthorized",
"code": 401
}
```
{% endtab %}
{% tab account_Pika_response 404 %}
404 Not Found
Configuration not found. To create configuration use [pika/account/`channel`](https://useapi.net/docs/api-pika-v1/post-pika-account-channel).
{% endtab %}
{% endtabs %}
##### Model
```typescript
{ // TypeScript, all fields are optional
[channel: string]: {
discord: string,
channel: string,
maxJobs: number
}
}
```
##### Examples
{% tabs account_Pika_example %}
{% tab account_Pika_example Curl %}
``` bash
curl https://api.useapi.net/v1/pika/account \
-H "Accept: application/json" \
-H "Authorization: Bearer …"
```
{% endtab %}
{% tab account_Pika_example JavaScript %}
``` javascript
const token = "API token";
const apiUrl = "https://api.useapi.net/v1/pika/account";
const response = await fetch(apiUrl, {
headers: {
"Authorization": `Bearer ${token}`,
},
});
const result = await response.json();
console.log("response", {response, result});
```
{% endtab %}
{% tab account_Pika_example Python %}
``` python
import requests
token = "API token"
apiUrl = "https://api.useapi.net/v1/pika/account"
headers = {
"Content-Type": "application/json",
"Authorization" : f"Bearer {token}"
}
response = requests.get(apiUrl, headers=headers)
print(response, response.json())
```
{% endtab %}
{% endtabs %}
=== URL: https://useapi.net/docs/api-pika-v1/get-pika-jobid ===
Document URL: https://useapi.net/docs/api-pika-v1/get-pika-jobid
---
layout: default
title: GET pika/jobs/?jobid=jobid
parent: Pika API v1
nav_order: 1000
nav_exclude: true
---
## Retrieve Pika job status and results
{: .no_toc }
Pika Discord bot API has been decommissioned and no longer available.
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
Use this endpoint to retrieve status and results of
- [pika/create](../api-pika-v1/post-pika-create)
- [pika/animate](../api-pika-v1/post-pika-animate)
- [pika/encrypt_text](../api-pika-v1/post-pika-encrypt_text)
- [pika/encrypt_image](../api-pika-v1/post-pika-encrypt_image)
- [pika/button](../api-pika-v1/post-pika-button)
If you specified optional parameter [`replyUrl`](../api-pika-v1/post-pika-create#request-body) you technically do not need to use this endpoint to retrieve results since API will call provided `replyUrl` once job generation completed.
**Important** API periodically polls (checks) Discord every 15 to 60 seconds (depending on the load) and updates all currently executed jobs statuses and results. Polling interval is used for safety reasons, aiming to prevent any potential issues with Discord and Pika, such as bans or excessive requests.
Jobs lifespan guaranteed to be at least 31 days, after that they will be expired and may be recycled.
{: .get }
> **https://api.useapi.net/v1/pika/jobs/?jobid=`jobid`**
##### Request Headers
``` yaml
Authorization: Bearer {API token}
```
- `API token` is **required**, see [Setup useapi.net](../start-here/setup-useapi) for details.
##### Query Parameter
`jobid` is **required**, use value returned by
- [pika/create](../api-pika-v1/post-pika-create)
- [pika/animate](../api-pika-v1/post-pika-animate)
- [pika/encrypt_text](../api-pika-v1/post-pika-encrypt_text)
- [pika/encrypt_image](../api-pika-v1/post-pika-encrypt_image)
- [pika/button](../api-pika-v1/post-pika-button)
##### Responses
{:toc}
{% tabs get_pika_jobid_response %}
{% tab get_pika_jobid_response 200 %}
200 OK
If field `status` value is *created*, *started* or *progress* wait in a loop for **at least** 10..30 seconds and retry again. When completed retrieve generated video from `attachments` field. Field `content` contains message generated by Pika reflecting current generation parameters and progress. Optional array `embeds` contains additional information.
```json
{
"jobid": "GET …/cancel/?jobid=jobid
parent: Pika API v1
nav_order: 2000
nav_exclude: true
---
## Cancel Pika job
{: .no_toc }
Pika Discord bot API has been decommissioned and no longer available.
✔️ Added May 27, 2024
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
Cancel execution of job created by
- [pika/create](post-pika-create)
- [pika/animate](post-pika-animate)
- [pika/encrypt_text](post-pika-encrypt_text)
- [pika/encrypt_image](post-pika-encrypt_image)
- [pika/button](post-pika-button)
{: .get }
> **https://api.useapi.net/v1/pika/jobs/cancel/?jobid=`jobid`**
##### Request Headers
``` yaml
Authorization: Bearer {API token}
```
- `API token` is **required**, see [Setup useapi.net](../start-here/setup-useapi) for details.
##### Query Parameter
`jobid` is **required**, use value returned by
- [pika/create](post-pika-create)
- [pika/animate](post-pika-animate)
- [pika/encrypt_text](post-pika-encrypt_text)
- [pika/encrypt_image](post-pika-encrypt_image)
- [pika/button](post-pika-button)
##### Responses
{:toc}
{% tabs post_pika_cancel_response %}
{% tab post_pika_cancel_response 200 %}
```json
{
"jobid": "GET pika/jobs
parent: Pika API v1
nav_order: 3000
nav_exclude: true
---
## Get list of currently executing Pika jobs
{: .no_toc }
Pika Discord bot API has been decommissioned and no longer available.
✔️ Added May 27, 2024
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
{: .get }
> **https://api.useapi.net/v1/pika/jobs**
##### Request Headers
``` yaml
Authorization: Bearer {API token}
```
- `API token` is **required**, see [Setup useapi.net](../start-here/setup-useapi) for details.
##### Responses
{:toc}
{% tabs post_pika_jobs_response %}
{% tab post_pika_jobs_response 200 %}
200 OK
```json
[ "POST pika/account/channel
parent: Pika API v1
nav_order: 300
nav_exclude: true
---
## Create or update Pika account information
{: .no_toc }
Pika Discord bot API has been decommissioned and no longer available.
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
For your convenience, you can specify your Pika configuration values under your account. If you specify multiple Pika accounts, the API will automatically perform load balancing by randomly selecting an account with available capacity before making calls to Discord / Pika.
{: .post }
> **https://api.useapi.net/v1/pika/account/`channel`**
##### Request Headers
``` yaml
Authorization: Bearer {API token}
Content-Type: application/json
```
- `API token` is **required**, see [Setup useapi.net](../start-here/setup-useapi) for details.
##### Request Body
```json
{
"discord": "Discord token",
"channel": "Discord channel id",
"maxJobs": 1-10,
}
```
- `discord`, `channel` are **required**. Please see [Setup Pika](../start-here/setup-pika) for details.
- `channel` value specified in the request body **must match** the channel value specified in the URL path https://api.useapi.net/v1/pika/account/`channel`.
- `maxJobs` is **required**. Currently, it should be between 1 and 10.
##### Responses
{% tabs post_account_Pika_response %}
{% tab post_account_Pika_response 204 %}
204 No Content
{% endtab %}
{% tab post_account_Pika_response 400 %}
400 Bad Request
```json
{
"error":
"Required param discord is missing or empty"
"Required param channel is missing or empty"
"Required param channel (POST pika/animate
parent: Pika API v1
nav_order: 600
nav_exclude: true
---
## Pika [/animate](https://pikalabsai.org/pika-labs-commands-and-parameters) command
{: .no_toc }
Pika Discord bot API has been decommissioned and no longer available.
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
Use this endpoint to submit the Pika [/animate](https://pikalabsai.org/pika-labs-commands-and-parameters) command to your [Discord Pika channel](../start-here/setup-pika). Results obtained as a callback via optional parameter [`replyUrl`](#request-body) or by querying [pika/jobs/?jobid=jobid](../api-pika-v1/get-pika-jobid) endpoint.
It is **important** not to use the Pika account setup for API access for any purposes other than its intended use, such as executing `/animate` or any other Pika commands _manually_ or in conjunction with _any other_ automation tools. The useapi.net API internally tracks the usage of the Pika account, including the number of currently active executions. Using it for other activities may cause API to function incorrectly.
{: .post }
> **https://api.useapi.net/v1/pika/animate**
##### Request Headers
``` yaml
Authorization: Bearer {API token}
Content-Type: multipart/form-data
```
- `API token` is **required**, see [Setup useapi.net](../start-here/setup-useapi) for details.
##### Request Body
```json
{
"image": "Pika image File or Blob",
"prompt": "Pika prompt",
"discord": "Discord token",
"channel": "Discord channel id",
"maxJobs": 10,
"replyUrl": "Place your call back URL here",
"replyRef": "Place your reference id here"
}
```
- `image` is **required**, use it to prompt the Pika Bot to begin your video with the provided image. Must be either a [File](https://developer.mozilla.org/en-US/docs/Web/API/File) or [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) object when included in this [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) POST request.
- `prompt` is optional, must contain Pika [/animate](https://pikalabsai.org/pika-labs-commands-and-parameters) prompt.
Maximum length 1500 characters.
- `discord`, `channel` are optional, if not provided randomly selected available account from [pika/account](../api-pika-v1/get-pika-account) will be used. See [Setup Pika](../start-here/setup-pika) for details.
**Note** You may specify the `channel` value alone (omitting `discord`) when you wish to use a specific account from the configured list at [pika/account](../api-pika-v1/get-pika-account).
- `maxJobs` is optional, if not provided value for `channel` account selected above will be used, if not provided defaulted to 10.
- `replyUrl` is optional, if not provided value from [useapi.net account](../account-management/get-account) will be used.
Place here your callback URL. API will call the provided `replyUrl` once job completed or failed.
Maximum length 1024 characters.
We recommend using sites like [webhook.site](https://webhook.site) to test callback URL functionality.
- `replyRef` is optional, place here your reference id which will be stored and returned along with this job response / result.
Maximum length 1024 characters.
##### Responses
{% tabs post_pika-animate_response %}
{% tab post_pika-animate_response 200 %}
200 OK
Use returned `jobid` to [retrieve Pika job status and results](../api-pika-v1/get-pika-jobid). `content` contains message generated by Pika reflecting current generation parameters and progress.
```json
{
"jobid": "POST pika/button
parent: Pika API v1
nav_order: 900
nav_exclude: true
---
## [Pika](https://pikalabsai.org/pika-labs-commands-and-parameters) button command
{: .no_toc }
Pika Discord bot API has been decommissioned and no longer available.
## Table of contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
Use this endpoint to submit the Pika button command to your [Discord Pika channel](../start-here/setup-pika). Results obtained as a callback via optional parameter [`replyUrl`](#request-body) or by querying [pika/jobs/?jobid=jobid](../api-pika-v1/get-pika-jobid) endpoint.
Currently only the `retry` button is supported. The API does not support the `remix` button. Since both buttons simply offer a convenient way of rerunning a job without the need to re-upload content, this limitation does not result in any loss of functionality.
It is **important** not to use the Pika account setup for API access for any purposes other than its intended use, such as executing `/button` or any other Pika commands _manually_ or in conjunction with _any other_ automation tools. The useapi.net API internally tracks the usage of the Pika account, including the number of currently active executions. Using it for other activities may cause API to function incorrectly.
{: .post }
> **https://api.useapi.net/v1/pika/button**
##### Request Headers
``` yaml
Authorization: Bearer {API token}
Content-Type: multipart/form-data
```
- `API token` is **required**, see [Setup useapi.net](../start-here/setup-useapi) for details.
##### Request Body
```json
{
"jobid": "jobid",
"button": "button",
"discord": "Discord token",
"maxJobs": 10,
"replyUrl": "Place your call back URL here",
"replyRef": "Place your reference id here"
}
```
- `jobid` is **required**, `jobid` of successfully completed (`status` set to [*completed*](../api-pika-v1/get-pika-jobid#model) [pika/create](../api-pika-v1/post-pika-create), [pika/animate](../api-pika-v1/post-pika-animate), [pika/encrypt_text](../api-pika-v1/post-pika-encrypt_text), [pika/encrypt_image](../api-pika-v1/post-pika-encrypt_image) or [pika/button](../api-pika-v1/post-pika-button) job.
- `button` is **required**, button from buttons array of job referenced via `jobid` above, see [*button*](#model).
- `discord` is optional, if provided will override `discord` value of referenced above `jobid`, see [Setup Pika](../start-here/setup-pika) for details. If the `channel` corresponding to the `jobid` mentioned above has an account configured under [pika/account](../api-pika-v1/get-pika-account), the current account's `discord` value will be used if it is not explicitly provided. This ensures that even jobs executed some time ago can still be successfully executed by this endpoint, even after possible changes to the account's `discord` value.
- `maxJobs` is optional, if provided will override `maxJobs` value of referenced above `jobid`, if not provided defaulted to 10.
- `replyUrl` is optional, if not provided value from [useapi.net account](../account-management/get-account) will be used.
Place here your callback URL. API will call the provided `replyUrl` once job completed or failed.
Maximum length 1024 characters.
We recommend using sites like [webhook.site](https://webhook.site) to test callback URL functionality.
- `replyRef` is optional, place here your reference id which will be stored and returned along with this job response / result.
Maximum length 1024 characters.
##### Responses
{% tabs post_pika-button_response %}
{% tab post_pika-button_response 200 %}
200 OK
Use returned `jobid` to [retrieve Pika job status and results](../api-pika-v1/get-pika-jobid). `content` contains message generated by Pika reflecting current generation parameters and progress.
```json
{
"jobid": "