=== Session creation ===
Url: Server url + "/server/config.php"
Parameters as GET:
* login: User's login in plain text.
* password: User's password in plain text.
* version: Client's version, for example 3.3.1762.
* os: Computer's operating system, at the moment only "windows", "mac" and "linux" are supported.
* os_version: Full version of os, for example "Windows 8.1".
* bits: Architecture size, at the moment only "32bit" and "64bit" are supported.
* cpu_family: CPU's family, on linux it can be found in /proc/cpuinfo via the attribute "cpu family".
* cpu_model: CPU's model, on linux it can be found in /proc/cpuinfo via the attribute "model".
* cpu_model_name: CPU's model in human readable format, on linux it can be found in /proc/cpuinfo via the attribute "model name".
* cpu_cores: Number of cores (or thread) available.
* ram: Memory available (in kilobytes).
* ram_max: Maximum memory allowed for renderer (in kilobytes).
* extras (optional): Extra data used for the configuration.
* hostname (optional): Hostname of the machine, useful for distinguishing multiple machines with the same hardware configuration. Only used for display on the website.
* ui (optional): User interface used by the client, useful for statistics
* headless: Is the machine is running headless (Eevee is not compatible with headless)
* hwid: a pseudonymous hardware hash
Answer in case of error:
where X:
* 100 => No version given.
* 101 => Client is too old.
* 102 => Authentication failure.
* 103 => WebSession has expired.
* 104 => Missing parameter.
* something else => Unknown error.
Answer with no error:
A status of "0" to specify everything is okay, publickey contains the public key for login, generated by the server, plus a list of URL paths for request, validation job, etc.
A path is provided for error, job request, job validation, download needed file, heartbeat (keepmealive), logout and speedtest results.
Also a speedtest element containing a url for each mirror leading to a payload for the ensuing speedtest.
The maximum duration between two heartbeats in seconds is given by the attribute "max-period".
The client then performs a speedtest on these mirror urls and POSTs back the 3 fastest ones using the "speedtest-answer" endpoint, together with the transfer time for the payload:
=== Session end ===
Url: use the request type "logout" from the configuration answer.
No additional parameter is required.
=== Download renderer archive ===
Url: use the request type "download-archive" from the configuration answer.
Parameter as GET or POST:
* type: "binary"
* job: ID of the job
Answer:
No error: the file
On error: an 404 http code
=== Download job archive ===
Url: use the request type "download-archive" from the configuration answer.
Parameter as GET or POST:
* type: "job"
* job: ID of the job
Answer:
No error: the file
On error: an 404 http code
=== Job request ===
Url: use the request type "request-job" from the configuration answer.
Parameter as GET or POST:
* computemethod: What compute types are available on this machine. 0 for CPU or GPU, 1 for CPU only, 2 for GPU only.
* network_dl: Download speed in bytes/second
* network_up: Upload speed in bytes/second
* cpu_cores: Number of cores currently available for rendering (optional).
* ram_max: Maximum memory allowed for renderer (in kilobytes).
* rendertime_max: Maximum allowed render time in seconds, 0 means no time limit
* gpu_type: GPU's type, (OPTIX)
* gpu_model: Model name of the GPU available for rendering
* gpu_ram: GPU memory size (in bytes)
* gpu_driver_version: GPU's driver version
Answer in case of error:
where X:
* 0 => No error
* 200 => No job available, the client should wait few minutes before requesting a new job (typical value is 1 minute).
* 201 => The client does not have rendering right.
* 202 => Client's session is dead. Client should send another config request before requesting a new job.
* 203 => Client's session has been disabled (usually because the client is sending broken frames). The client should alert the end user and logout.
* 205 => No renderer is available for Client's hardware (pair of OS and architecture). For example, Blender is not available for MacOS 32bits.
* 206 => Server is in maintenance mode, and is not issuing jobs (but it will keep the session alive). Try again in a few minutes.
* 207 => Server is overloaded, and is not issuing jobs (but it will keep the session alive). Try again in a few minutes.
* something else => unknown error
Answer with no error:
stats => Some statistics about the session and the farm
* where
* credits_session => The points earned in this session
* credits_total => Represents the total amount of points of this account
* frame_remaining => How many frames are left to be rendered on the farm in total
* waiting_project => How many projects are in the render queue
* connected_machines => How many machines are connected to the farm right now
* renderable_projects => How many projects are available to be rendered by this session/machine
job => an element containing information about the new job
* where
* job id => The job id
* use_gpu => A flag selecting the render device (CPU/GPU) according to the session settings and the project (for example when a CPU+GPU session receives a CPU only project), 0 means false, 1 true
* archive_md5 => The MD5 checksum of the project zip, used to verify integrity after download
* path => The path to the blend file within the archive
* frame => The frame number to be rendered
* synchronous_upload => A flag indicating whether the job result can be queued up for uploading (0) or should be sent back immediately (1, only for the test frames)
* validation_url => The URL to send the job validation to
* name => The project name that will be displayed in the ui
* password => The archive password
renderer => An element containing information about the blender binary used for the job
* where
* md5 => The MD5 checksum of the binary archive, used to validate file integrity after download
* commandline => Launch arguments for the blender executable
* update_method => Whether to keep track of progress by remaining time (remainingtime) or render tile (by_tile)
script => A server generated python script setting blender up with the right farm-related settings for the project
=== Job validation ===
Url: use the url of job's node for 'validationurl'.
Parameter as GET or POST:
* job: Job ID
* frame: Job's frame number
* rendertime: Job's render time
* preptime: Job's preparation time
* file: Frame to validate as form-data post
* memoryused (optional): Max memory used for the render
* cores (optional): Number of cores used from the render
* speedsamples (optional): Number of cycles samples done in 1 second
Parameter as form-urlencoded:
* file: the frame to send
Answer in case of error:
where X:
* 0 => No error
* 300 => Missing parameter in request.
* 301 => Client generated a broken frame (usually an too old gpu who generated black frame).
* 302 => File uploaded was not an image.
* 303 => Failed to upload the image to the server.
* 304 => Client's session is disabled or dead.
* something else => unknown error
=== Session heartbeat ===
Url: use the request type "keepmealive" from the configuration answer.
Parameter as GET or POST:
* job: ID of the rendering job
* frame: Frame number of the rendering job
* rendertime: current render time (optional)
* remainingtime: current remaining time to render the frame (optional)
* paused: whether the client is actively paused or not
Answer:
where X:
* 0 => No error.
* 400 => Stop this job (usually because the job has been cancelled).
=== Error send ===
Url: use the request type "error" from the configuration answer.
Parameter as GET or POST:
* type: X
where X:
* 1 => The client received a wrong configuration
* 2 => Authentication with www failed
* 3 => Client version too old
* 4 => The session got disabled
* 5 => Blender binary not available
* 6 => Blender binary missing
* 7 => Couldn't find a scene in the blend file
* 8 => Rendering produced no output file
* 9 => File download failed
* 10 => Can not create directory
* 11 => Network issue
* 12 => Renderer crashed
* 13 => Renderer failed due to running out of VRAM
* 14 => Render process got killed by OS
* 15 => Renderer is missing libraries
* 16 => Process execution failed
* 17 => OS not supported
* 18 => CPU not supported
* 19 => GPU not supported
* 20 => Renderer got killed by user
* 21 => Renderer failed due to running out of RAM
* 22 => Renderer got killed by server
* 23 => Renderer got killed due to exceeding the user time limit
* 24 => Renderer crashed with a python error
* 25 => Job validation failed
* 26 => Final image is too large
* 27 => Render engine not available
* 99 => Unknown error
* job: job ID
* frame: job's frame number
* render_time (optional): job's frame number
* memoryused (optional): max memory used for the render (in kilo bytes)
Parameter as form-urlencoded:
* file: the error log to send