For AI agents: this page is also available as Markdown at https://docs.refabric.com/api-reference/platform/tasks/run-a-task.md, and the index of every page is https://docs.refabric.com/llms.txt.
Platform API › Tasks
Run a task
202 with the new job's job_id and its status, result and cancel URLs — or, while waiting, the job's result itself.
https://api.refabric.com/v1/tasks/{name}import os
import requests
url = "https://api.refabric.com/v1/tasks/{name}"
payload = {}
headers = {
"Authorization": f"Key {os.environ['REFABRIC_API_KEY']}",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json()){
"job_id": "9b2f4c1d0e8a",
"files": [],
"has_more": false,
"next_cursor": null,
"summary": {}
}Modes
- 1. Asynchronous (the default) — answers
202at once; follow the job at its status URL, or name awebhook_urlto be called when it ends. - 2. Wait (
Prefer: wait=N) — holds the answer up to N seconds and answers the result when the job ends in time; otherwise202, as when asynchronous.
Authentication. A key with tasks:run: a job spends your credits.
Key features
Prefer: waitwaits 60 seconds at most.X-Refabric-Start-Timeouttakes 0.1 seconds to 24 hours: a job that has not started by then ends without starting.- A webhook is tried up to 31 times.
- A body field the task's input schema (
GET /v1/tasks/{name}) does not list is refused (422 field_not_accepted, naming it), never ignored.
Common use cases
- Start a job from your server and poll it or wait for its webhook.
- Run a short job and take its result in the same call with
Prefer: wait.
Conflicts. An Idempotency-Key sent again with another body answers 409 idempotency_key_reused; sent again while the first request runs, 409 request_in_progress.
See also
POST /v1/tasks/{name}/estimateGET /v1/jobs/{job_id}GET /v1/tasks/{name}
Authorization
Authorization: Key $REFABRIC_API_KEYScope: tasks:run
Parameters
Path parameters
- stringrequired
Query parameters
- stringoptionalDefault:
An https endpoint of yours to POST the result to. Signed with ED25519 — verify it with
/.well-known/jwks.json. Tried up to 31 times; a 3xx or 4xx is final.
Header parameters
- stringoptional
The contract version you wrote against (a date). Absent: the current version.
format: date
- stringoptional
Your own id for this request; we answer it back under X-Client-Request-ID.
max length 128
- stringoptional
Makes a retry safe: the same key with the same request answers the first answer again; with a different request it is refused.
- stringoptional
wait=N: hold the answer up to N seconds for the job to end (60 at most).
- numberoptional
Seconds the job may wait to start, from 0.1 to 86400; past it, it ends without running.
Body
application/json
Response
200 — Done: the answer is in the body.
- stringrequired
The job.
Example:
9b2f4c1d0e8a - array<object>required
The files, in the order the job delivered them.
- stringrequired
Where the file is. A public, permanent address you can open or download.
Example:
https://files.refabric.com/art/3f2a.png - stringrequired
The file's standard media type.
Example:
image/png - stringrequired
Its address; pass it to a task as it is.
Example:
art:3f2a - stringoptionalnullable
The task that made it.
Example:
image.expand - stringoptionalnullable
The job that made it.
Example:
9b2f4c1d0e8a - stringoptionalnullable
When it was made, ISO-8601 in UTC.
Example:
2026-10-05T09:30:12Z - objectoptionalnullable
What the file means, in the record vocabulary.
- stringoptionalnullable
The record's name.
Example:
SS27 - stringoptionalnullable
What the record is, in words.
Example:
A calm palette. - stringoptionalnullable
Whether it can be used yet.
Values
processing— Still being made or analysed. Read it again later.ready— Finished. It can be passed to a task.failed— It could not be made. Its content is missing.
Example:
ready - array<object>optionalnullable
Its colours.
Example:
[{"hex":"#1f2a44"}]- stringrequired
The colour as
#rrggbb.Example:
#1f2a44 - stringoptionalnullable
Its name, when known.
Example:
Navy - stringoptionalnullable
The nearest Pantone code, when known.
Example:
19-4024 TCX
- array<object>optionalnullable
Its parts (a pose preset: its poses and views).
Example:
[{"type":"fabric"}]ItemEntry
- stringrequired
What the part is.
Values
fabric— A fabric: its swatch or a photo of it. When the image is a fabric swatch or a photo of a fabric.print— A print or pattern. When the image is a print or pattern.look— A garment or outfit, as a photo or a design. When the image is a garment or an outfit.detail— A close crop of one detail of a look or a product (a collar, a pocket). When the image is a close crop of one detail.design— One cell of a range plan: a design made for one garment line.other— Any other image the record holds. When the image is none of the other kinds.product— A photo of the product itself, as supplied (view: which side). When the photo is the product itself;viewsays which side.label— A photo of the product's label (care, size or brand label). When the photo is of the product's label.ghost— The product on an invisible (ghost) mannequin (view: which side). When you want the product shown on an invisible mannequin.flat— The product laid flat, as a flat-lay photo (view: which side). When you want the product laid flat.close_up— A close-up of the product's fabric and finish (one per product in a shoot). Notdetail, which is a crop of one trim or component of a look. When you want a close-up of the product's fabric and finish.
Example:
fabric - stringoptionalnullable
Which side it shows.
Example:
front - stringoptionalnullable
Its name.
Example:
Wool twill - stringoptionalnullable
Your own id for it, when you sent one.
Example:
SKU-1 - stringoptionalnullable
What it is, in words.
Example:
A navy wool twill. - stringoptionalnullable
Its image — pass it to a task as it is.
Example:
https://files.refabric.com/art/3f2a.png - stringoptionalnullable
Whether it can be used yet.
Values
processing— Still being made or analysed. Read it again later.ready— Finished. It can be passed to a task.failed— It could not be made. Its content is missing.
Example:
ready
PresetItem
- stringrequired
How the entry names what it wants: a saved pose, an image, words, or a product view.
Example:
view - stringrequired
The pose's address (
pose:…); empty for a view.Example:
pose:812 - stringrequirednullable
The pose's camera angle.
Example:
front - stringrequirednullable
The product view it shows.
Example:
back
- array<string>optionalnullable
Words that sum it up.
Example:
["tailoring"]
- booleanrequired
More files are on the next page.
Example:
false - stringoptionalnullable
Present when
has_more: send it ascursorto the result read for the rest. - objectoptionalnullable
Present when the task has words to count.
- integeroptionalnullable
Outputs asked for.
Example:
3 - integeroptionalnullable
Outputs made.
Example:
2 - array<object>optionalnullable
Notes on what was not made.
- stringrequired
The warning's catalogue code.
Example:
output_not_produced - stringrequired
What happened, in words.
Example:
This pose was not made. - stringoptionalnullable
The request field it is about.
Example:
poses.items[1]
202 — Accepted: the work goes on after this answer; the body says where to follow it.
- stringrequired
The job you started.
Example:
9b2f4c1d0e8a - stringrequired
Where the job is now.
Values
queued— Accepted and waiting to start.running— Being made.terminal— Ended.outcomesays how.
Example:
queued - stringrequired
Read the job here (
GET), as often as you like.Example:
http://v3-api.refabric.com/v1/jobs/9b2f4c1d0e8a - stringrequired
Read its result here (
GET) once it has succeeded.Example:
http://v3-api.refabric.com/v1/jobs/9b2f4c1d0e8a/result - stringrequired
Ask for it to stop here (
PUT).Example:
http://v3-api.refabric.com/v1/jobs/9b2f4c1d0e8a/cancel
- 400 — The request cannot be read as it was sent (a header, the URL or the body's form).
- 401 — No valid API key was sent.
- 402 — Your balance does not cover this request.
- 403 — Your key or your plan does not allow this.
- 404 — Nothing has this address.
- 409 — The request conflicts with the current state of what it names.
- 410 — This was removed.
- 413 — The body is larger than this operation takes.
- 415 — The body's media type is not one this operation takes.
- 422 — A field is missing or has a value this operation cannot use.
- 429 — Too many requests: wait for the number of seconds in the Retry-After header.
- 500 — Something went wrong on our side; retry, and quote the request id if it keeps happening.
- 503 — The service cannot take this now; retry after a moment.