curl --request GET \
--url https://www.gostudio.ai/api/v2/apps/job/{job_id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.gostudio.ai/api/v2/apps/job/{job_id}', 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/job/{job_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"status": 200,
"data": {
"job_id": "5a3f1e7d-9b4c-1a51-0b36-c893429659b5",
"status": "pending",
"tool_name": "watermark_remover",
"output_urls": [
"<string>"
],
"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": "jobId is not a valid encoded job identifier."
}
}{
"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."
}
}Get job status
Returns the current status and results of a generation job by its encoded ID. Works across all GoStudio tools — watermark remover, photo generation, photo recreation, group photo, age modifier, and others.
Use the job_id value returned by the generation endpoint that created the job — photo endpoints (/api/v2/photo/* and /api/v2/image/group-photo) return an encoded string job_id that is used here directly. Do not construct or guess this value.
output_urls is only present once status is completed. error is only present when status is failed or abandoned.
Ownership: user callers can only retrieve jobs they own. Other caller types may access any job.
Allowed callers: user, internal, external.
curl --request GET \
--url https://www.gostudio.ai/api/v2/apps/job/{job_id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.gostudio.ai/api/v2/apps/job/{job_id}', 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/job/{job_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"status": 200,
"data": {
"job_id": "5a3f1e7d-9b4c-1a51-0b36-c893429659b5",
"status": "pending",
"tool_name": "watermark_remover",
"output_urls": [
"<string>"
],
"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": "jobId is not a valid encoded job identifier."
}
}{
"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."
}
}Authorizations
Supabase user JWT (or an internal service token). Send as Authorization: Bearer <token>.
Path Parameters
UUID-encoded job identifier returned by the generation endpoint.
"5a3f1e7d-9b4c-1a51-0b36-c893429659b5"

