Poll job status
curl --request GET \
--url https://www.gostudio.ai/api/v2/apps/watermark-remover/{jobId} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.gostudio.ai/api/v2/apps/watermark-remover/{jobId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://www.gostudio.ai/api/v2/apps/watermark-remover/{jobId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"status": 200,
"data": {
"job_id": 123,
"status": "pending",
"model_id": "<string>",
"output_urls": [
"<string>"
],
"credits_deducted": 123,
"error": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}{
"status": 400,
"error": {
"type": "validation_error",
"code": "invalid_input",
"dev": 40001,
"message": "Some information is invalid."
}
}{
"status": 401,
"error": {
"type": "authentication_error",
"code": "unauthorized",
"dev": 40100,
"message": "Missing or invalid Authorization Bearer token."
}
}{
"status": 403,
"error": {
"type": "permission_error",
"code": "forbidden",
"dev": 40300,
"message": "You don't have permission for this action."
}
}{
"status": 404,
"error": {
"type": "not_found_error",
"code": "job_not_found",
"dev": 40404,
"message": "Job not found."
}
}{
"status": 429,
"error": {
"type": "rate_limit_error",
"code": "rate_limited",
"dev": 42900,
"message": "You're doing that too often. Please wait a moment."
}
}{
"status": 500,
"error": {
"type": "system_error",
"code": "internal_error",
"dev": 50000,
"message": "Something went wrong on our end."
}
}{
"status": 503,
"error": {
"type": "system_error",
"code": "service_unavailable",
"dev": 50300,
"message": "Auth service is temporarily unavailable."
}
}Watermark Remover
Poll job status
Looks up a watermark removal job by its job_id. output_urls and credits_deducted appear once status is completed; error appears when it is failed.
You do not need this to complete a normal generation — POST /api/v2/apps/watermark-remover already waits for the result. Use it to re-fetch the outputs of an earlier job, or to check on one submitted by a request whose connection dropped.
Allowed callers: user. An internal service token passes the auth gate but carries no user context, so every lookup returns 404.
GET
/
api
/
v2
/
apps
/
watermark-remover
/
{jobId}
Poll job status
curl --request GET \
--url https://www.gostudio.ai/api/v2/apps/watermark-remover/{jobId} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.gostudio.ai/api/v2/apps/watermark-remover/{jobId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://www.gostudio.ai/api/v2/apps/watermark-remover/{jobId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"status": 200,
"data": {
"job_id": 123,
"status": "pending",
"model_id": "<string>",
"output_urls": [
"<string>"
],
"credits_deducted": 123,
"error": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}{
"status": 400,
"error": {
"type": "validation_error",
"code": "invalid_input",
"dev": 40001,
"message": "Some information is invalid."
}
}{
"status": 401,
"error": {
"type": "authentication_error",
"code": "unauthorized",
"dev": 40100,
"message": "Missing or invalid Authorization Bearer token."
}
}{
"status": 403,
"error": {
"type": "permission_error",
"code": "forbidden",
"dev": 40300,
"message": "You don't have permission for this action."
}
}{
"status": 404,
"error": {
"type": "not_found_error",
"code": "job_not_found",
"dev": 40404,
"message": "Job not found."
}
}{
"status": 429,
"error": {
"type": "rate_limit_error",
"code": "rate_limited",
"dev": 42900,
"message": "You're doing that too often. Please wait a moment."
}
}{
"status": 500,
"error": {
"type": "system_error",
"code": "internal_error",
"dev": 50000,
"message": "Something went wrong on our end."
}
}{
"status": 503,
"error": {
"type": "system_error",
"code": "service_unavailable",
"dev": 50300,
"message": "Auth service is temporarily unavailable."
}
}Authorizations
Supabase user JWT (or an internal service token). Send as Authorization: Bearer <token>.
Path Parameters
The job_id returned when the generation was submitted.
Example:
12345

