---
title: "Create Reinforcement Fine-tuning Step"
method: POST
path: "/v1/accounts/{account_id}/rlorTrainerJobs"
tags: ["Gateway"]
---

# Create Reinforcement Fine-tuning Step

`POST /v1/accounts/{account_id}/rlorTrainerJobs`

## Path parameters

- `account_id` string, required

## Query parameters

- `rlorTrainerJobId` string
- `trainingShape` string

## Request body

- GatewayRlorTrainerJob
  - `name` string
  - `displayName` string
  - `createTime` string, date-time
  - `completedTime` string, date-time
  - `dataset` string — The name of the dataset used for training.
  - `evaluationDataset` string — The name of a separate dataset to use for evaluation.
  - `evalAutoCarveout` boolean — Whether to auto-carve the dataset for eval.
  - `state` 'JOB_STATE_UNSPECIFIED' | 'JOB_STATE_CREATING' | 'JOB_STATE_RUNNING' | 'JOB_STATE_COMPLETED' | 'JOB_STATE_FAILED' | 'JOB_STATE_CANCELLED' | 'JOB_STATE_DELETING' | 'JOB_STATE_WRITING_RESULTS' | 'JOB_STATE_VALIDATING' | 'JOB_STATE_DELETING_CLEANING_UP' | 'JOB_STATE_PENDING' | 'JOB_STATE_EXPIRED' | 'JOB_STATE_RE_QUEUEING' | 'JOB_STATE_CREATING_INPUT_DATASET' | 'JOB_STATE_IDLE' | 'JOB_STATE_CANCELLING' | 'JOB_STATE_EARLY_STOPPED' | 'JOB_STATE_PAUSED' | 'JOB_STATE_DELETED' | 'JOB_STATE_ARCHIVED' — JobState represents the state an asynchronous job can be in. - JOB_STATE_PAUSED: Job is paused, typically due to account suspension or manual intervention. - JOB_STATE_DELETED: Job has been deleted. - JOB_STATE_ARCHIVED: User-facing state for jobs whose row is retained post-delete (e.g. RLOR trainers within the checkpoint retention window). The internal row is still in JOB_STATE_DELETED; the gateway translates it to ARCHIVED on public responses.
  - `status` GatewayStatus
    - `code` 'OK' | 'CANCELLED' | 'UNKNOWN' | 'INVALID_ARGUMENT' | 'DEADLINE_EXCEEDED' | 'NOT_FOUND' | 'ALREADY_EXISTS' | 'PERMISSION_DENIED' | 'UNAUTHENTICATED' | 'RESOURCE_EXHAUSTED' | 'FAILED_PRECONDITION' | 'ABORTED' | 'OUT_OF_RANGE' | 'UNIMPLEMENTED' | 'INTERNAL' | 'UNAVAILABLE' | 'DATA_LOSS' — - OK: Not an error; returned on success. HTTP Mapping: 200 OK - CANCELLED: The operation was cancelled, typically by the caller. HTTP Mapping: 499 Client Closed Request - UNKNOWN: Unknown error. For example, this error may be returned when a `Status` value received from another address space belongs to an error space that is not known in this address space. Also errors raised by APIs that do not return enough error information may be converted to this error. HTTP Mapping: 500 Internal Server Error - INVALID_ARGUMENT: The client specified an invalid argument. Note that this differs from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments that are problematic regardless of the state of the system (e.g., a malformed file name). HTTP Mapping: 400 Bad Request - DEADLINE_EXCEEDED: The deadline expired before the operation could complete. For operations that change the state of the system, this error may be returned even if the operation has completed successfully. For example, a successful response from a server could have been delayed long enough for the deadline to expire. HTTP Mapping: 504 Gateway Timeout - NOT_FOUND: Some requested entity (e.g., file or directory) was not found. Note to server developers: if a request is denied for an entire class of users, such as gradual feature rollout or undocumented allowlist, `NOT_FOUND` may be used. If a request is denied for some users within a class of users, such as user-based access control, `PERMISSION_DENIED` must be used. HTTP Mapping: 404 Not Found - ALREADY_EXISTS: The entity that a client attempted to create (e.g., file or directory) already exists. HTTP Mapping: 409 Conflict - PERMISSION_DENIED: The caller does not have permission to execute the specified operation. `PERMISSION_DENIED` must not be used for rejections caused by exhausting some resource (use `RESOURCE_EXHAUSTED` instead for those errors). `PERMISSION_DENIED` must not be used if the caller can not be identified (use `UNAUTHENTICATED` instead for those errors). This error code does not imply the request is valid or the requested entity exists or satisfies other pre-conditions. HTTP Mapping: 403 Forbidden - UNAUTHENTICATED: The request does not have valid authentication credentials for the operation. HTTP Mapping: 401 Unauthorized - RESOURCE_EXHAUSTED: Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space. HTTP Mapping: 429 Too Many Requests - FAILED_PRECONDITION: The operation was rejected because the system is not in a state required for the operation's execution. For example, the directory to be deleted is non-empty, an rmdir operation is applied to a non-directory, etc. Service implementors can use the following guidelines to decide between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`: (a) Use `UNAVAILABLE` if the client can retry just the failing call. (b) Use `ABORTED` if the client should retry at a higher level. For example, when a client-specified test-and-set fails, indicating the client should restart a read-modify-write sequence. (c) Use `FAILED_PRECONDITION` if the client should not retry until the system state has been explicitly fixed. For example, if an "rmdir" fails because the directory is non-empty, `FAILED_PRECONDITION` should be returned since the client should not retry unless the files are deleted from the directory. HTTP Mapping: 400 Bad Request - ABORTED: The operation was aborted, typically due to a concurrency issue such as a sequencer check failure or transaction abort. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 409 Conflict - OUT_OF_RANGE: The operation was attempted past the valid range. E.g., seeking or reading past end-of-file. Unlike `INVALID_ARGUMENT`, this error indicates a problem that may be fixed if the system state changes. For example, a 32-bit file system will generate `INVALID_ARGUMENT` if asked to read at an offset that is not in the range [0,2^32-1], but it will generate `OUT_OF_RANGE` if asked to read from an offset past the current file size. There is a fair bit of overlap between `FAILED_PRECONDITION` and `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific error) when it applies so that callers who are iterating through a space can easily look for an `OUT_OF_RANGE` error to detect when they are done. HTTP Mapping: 400 Bad Request - UNIMPLEMENTED: The operation is not implemented or is not supported/enabled in this service. HTTP Mapping: 501 Not Implemented - INTERNAL: Internal errors. This means that some invariants expected by the underlying system have been broken. This error code is reserved for serious errors. HTTP Mapping: 500 Internal Server Error - UNAVAILABLE: The service is currently unavailable. This is most likely a transient condition, which can be corrected by retrying with a backoff. Note that it is not always safe to retry non-idempotent operations. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 503 Service Unavailable - DATA_LOSS: Unrecoverable data loss or corruption. HTTP Mapping: 500 Internal Server Error
    - `message` string — A developer-facing error message in English.
  - `createdBy` string — The email address of the user who initiated this fine-tuning job.
  - `trainingConfig` GatewayBaseTrainingConfig
    - `outputModel` string — The model ID to be assigned to the resulting fine-tuned model. If not specified, the job ID will be used.
    - `baseModel` string — The name of the base model to be fine-tuned Only one of 'base_model' or 'warm_start_from' should be specified.
    - `warmStartFrom` string — The PEFT addon model in Fireworks format to be fine-tuned from Only one of 'base_model' or 'warm_start_from' should be specified.
    - `jinjaTemplate` string — Deprecated: literal Jinja templates are not supported by Training V2. Conversation rendering is selected from the base model's registered renderer configuration instead.
    - `learningRate` number, float — The learning rate used for training.
    - `maxContextLength` integer — The maximum context length to use with the model.
    - `loraRank` integer — The rank of the LoRA layers.
    - `epochs` integer — The number of epochs to train for.
    - `batchSize` integer — Deprecated: legacy V1 token budget. Training V2 batches by samples via batch_size_samples.
    - `gradientAccumulationSteps` integer — Deprecated: legacy V1 gradient accumulation. Training V2 batches by samples via batch_size_samples and rejects this field when set.
    - `learningRateWarmupSteps` integer
    - `batchSizeSamples` integer — The number of samples per gradient batch.
    - `optimizerWeightDecay` number, float — Weight decay (L2 regularization) for optimizer.
    - `trainerShardingScheme` GatewayTrainerShardingScheme — Structured parallelism/sharding profile used by trainer launches.
      - `tensorParallelism` integer — Tensor-parallel degree. 0 means unspecified (server defaults to 1).
      - `pipelineParallelism` integer — Pipeline-parallel degree. 0 means unspecified (server defaults to 1).
      - `contextParallelism` integer — Context-parallel degree. 0 means unspecified (server defaults to 1).
      - `expertParallelism` integer — Expert-parallel degree. 0 means unspecified (server defaults to 1).
      - `sequenceParallelism` boolean — Whether sequence parallelism should be enabled.
    - `loraAlpha` integer — LoRA alpha scaling factor. If not specified (or 0), trainer defaults are used.
    - `loraDropout` number, float — LoRA dropout probability.
    - `loraTargetModules` string[] — Optional LoRA target module names (e.g. q_proj, k_proj, v_proj).
    - `lrScheduler` GatewayLearningRateScheduler — Learning-rate scheduler applied on top of the base learning rate (after the shared learning_rate_warmup_steps warmup). It mirrors the trainer-side fireworks.training.sdk.training_spec.LRSchedulerSpec discriminated union: the schedule variant that is set selects the shape, and each variant carries only the knobs that apply to it. Add a new schedule by adding a message and one `oneof schedule` entry; existing clients are unaffected. When unset, the trainer uses the legacy constant schedule.
      - `constant` GatewayConstantLRSchedule — Constant learning rate held flat after warmup (legacy default). No decay knobs.
      - `linear` GatewayLinearLRSchedule — Linear decay from the peak learning rate toward min_lr_ratio after warmup.
        - `minLrRatio` number, float — Floor learning rate as a fraction of the peak learning rate (0.0 = decay to zero, 0.1 = decay to 10% of the peak learning rate).
        - `decayRatio` number, float — Fraction of total training steps over which to decay. 0 (unset) decays over the full run.
      - `cosine` GatewayCosineLRSchedule — Cosine annealing from the peak learning rate toward min_lr_ratio after warmup.
        - `minLrRatio` number, float — Floor learning rate as a fraction of the peak learning rate (0.0 = decay to zero, 0.1 = decay to 10% of the peak learning rate).
        - `decayRatio` number, float — Fraction of total training steps over which to decay. 0 (unset) decays over the full run.
  - `rewardWeights` string[] — A list of reward metrics to use for training in format of "<reward_name>=<weight>".
  - `wandbConfig` GatewayWandbConfig — WandbConfig is the configuration for the Weights & Biases (wandb) logging which will be used by a training job.
    - `enabled` boolean — Whether to enable wandb logging.
    - `apiKey` string — The API key for the wandb service.
    - `project` string — The project name for the wandb service.
    - `entity` string — The entity name for the wandb service.
    - `runId` string — The run ID for the wandb service.
    - `url` string — The URL for the wandb service.
  - `awsS3Config` GatewayAwsS3Config — AwsS3Config is the configuration for AWS S3 dataset access which will be used by a training job.
    - `credentialsSecret` string
    - `iamRoleArn` string
  - `azureBlobStorageConfig` GatewayAzureBlobStorageConfig — AzureBlobStorageConfig is the configuration for Azure Blob Storage dataset access which will be used by a training job.
    - `credentialsSecret` string — Reference to a Secret resource containing Azure credentials. Format: accounts/{account_id}/secrets/{secret_id} The secret value must be JSON: {"connection_string": "..."} or {"sas_token": "..."} or {"account_key": "..."} Mutually exclusive with managed_identity_client_id.
    - `managedIdentityClientId` string — Managed Identity Client ID for GCP-to-Azure Workload Identity Federation. Format: uuid Mutually exclusive with credentials_secret.
    - `tenantId` string
  - `jobProgress` GatewayJobProgress — Progress of a job, e.g. RLOR, EVJ, BIJ etc.
    - `percent` integer — Progress percent, within the range from 0 to 100.
    - `epoch` integer — The epoch for which the progress percent is reported, usually starting from 0. This is optional for jobs that don't run in an epoch fasion, e.g. BIJ, EVJ.
    - `totalInputRequests` integer — Total number of input requests/rows in the job.
    - `totalProcessedRequests` integer — Total number of requests that have been processed (successfully or failed).
    - `successfullyProcessedRequests` integer — Number of requests that were processed successfully.
    - `failedRequests` integer — Number of requests that failed to process.
    - `outputRows` integer — Number of output rows generated.
    - `inputTokens` integer — Total number of input tokens processed.
    - `outputTokens` integer — Total number of output tokens generated.
    - `cachedInputTokenCount` integer — The number of input tokens that hit the prompt cache.
  - `keepAlive` boolean
  - `rolloutDeploymentName` string — Rollout deployment name associated with this RLOR trainer job. This is optional. If not set, trainer will not trigger weight sync to rollout engine.
  - `lossConfig` GatewayReinforcementLearningLossConfig — Loss method + hyperparameters for reinforcement-learning-style fine-tuning (e.g. RFT / RL trainers). For preference jobs (DPO API), the default loss method is GRPO when METHOD_UNSPECIFIED.
    - `method` 'METHOD_UNSPECIFIED' | 'GRPO' | 'DAPO' | 'DPO' | 'ORPO' | 'GSPO_TOKEN'
    - `klBeta` number, float — KL coefficient (beta) override for GRPO-like methods. If unset, the trainer default is used.
    - `dpo` GatewayDpoConfig — Hyperparameters for Direct Preference Optimization (DPO) training.
      - `beta` number, float — DPO temperature parameter (beta in the paper). Must be > 0 and < 0.5.
      - `refCacheConcurrency` integer — Max concurrent reference forward passes during cache warm-up.
      - `refCacheBatchSize` integer — Number of preference pairs per reference forward call during caching.
    - `orpo` GatewayOrpoConfig — Hyperparameters for Odds Ratio Preference Optimization (ORPO) training.
      - `lambda` number, float — Weight for the ORPO odds-ratio loss term.
  - `nodeCount` integer — The number of nodes to use for the fine-tuning job. If not specified, the default is 1.
  - `acceleratorSeconds` object — Accelerator seconds used by the job, keyed by accelerator type (e.g., "NVIDIA_H100_80GB"). Updated periodically.
  - `serviceMode` boolean
  - `directRouteHandle` string
  - `hotLoadDeploymentId` string — The deployment ID used for hot loading. When set, checkpoints are saved to this deployment's hot load bucket, enabling weight swaps on inference. Only valid for service-mode or keep-alive jobs.
  - `purpose` 'PURPOSE_UNSPECIFIED' | 'PURPOSE_PILOT' — Scheduling purpose for training jobs and deployments.
  - `forwardOnly` boolean — When true, run the trainer in forward-only mode (no backward/optimizer). Used for reference models in GRPO that only need forward passes.
  - `managedBy` string — For managed service use only. Users do not need to set this field.
  - `trainerReplicaCount` integer — Data-parallel replica count for service-mode trainers. When unset or 0, defaults to 1. Values greater than 1 launch replicated HSDP training.
  - `inactivityTimeout` string — Trainer inactivity timeout. The trainer reports tracked activity, including trainer API operations and active-session heartbeats. If no tracked activity is observed for this duration, the trainer is automatically stopped. When unset or 0, defaults to 60 minutes. Set disable_inactivity_cleanup to true to disable automatic cleanup. GPU usage continues to accrue while the trainer is running.
  - `disableInactivityCleanup` boolean — Disable trainer inactivity cleanup. When true, the trainer is not automatically stopped due to inactivity. GPU usage continues to accrue while the trainer is running.
  - `encryptionState` 'ENCRYPTION_STATE_UNSPECIFIED' | 'ENCRYPTION_STATE_PLAINTEXT' | 'ENCRYPTION_STATE_CMEK' — EncryptionState is the authoritative, per-resource CMEK marker: the single source of truth for whether a resource's customer-data artifacts are encrypted. It is stamped at resource creation from the owning account's CMEK config and is immutable for the resource's life, so a resource always reads back with the state it was created under regardless of the account's current flag. The encrypt-on-write / decrypt-on-read decision for the resource's data keys off this field. - ENCRYPTION_STATE_UNSPECIFIED: Unstamped/legacy rows that predate CMEK. Treated as PLAINTEXT. - ENCRYPTION_STATE_PLAINTEXT: Customer-data artifacts are stored as plaintext (Fireworks-owned, no CMEK). - ENCRYPTION_STATE_CMEK: Customer-data artifacts are CMEK-encrypted; reads MUST decrypt (fail-closed).

## Response `200`

A successful response.

- GatewayRlorTrainerJob
  - `name` string
  - `displayName` string
  - `createTime` string, date-time
  - `completedTime` string, date-time
  - `dataset` string — The name of the dataset used for training.
  - `evaluationDataset` string — The name of a separate dataset to use for evaluation.
  - `evalAutoCarveout` boolean — Whether to auto-carve the dataset for eval.
  - `state` 'JOB_STATE_UNSPECIFIED' | 'JOB_STATE_CREATING' | 'JOB_STATE_RUNNING' | 'JOB_STATE_COMPLETED' | 'JOB_STATE_FAILED' | 'JOB_STATE_CANCELLED' | 'JOB_STATE_DELETING' | 'JOB_STATE_WRITING_RESULTS' | 'JOB_STATE_VALIDATING' | 'JOB_STATE_DELETING_CLEANING_UP' | 'JOB_STATE_PENDING' | 'JOB_STATE_EXPIRED' | 'JOB_STATE_RE_QUEUEING' | 'JOB_STATE_CREATING_INPUT_DATASET' | 'JOB_STATE_IDLE' | 'JOB_STATE_CANCELLING' | 'JOB_STATE_EARLY_STOPPED' | 'JOB_STATE_PAUSED' | 'JOB_STATE_DELETED' | 'JOB_STATE_ARCHIVED' — JobState represents the state an asynchronous job can be in. - JOB_STATE_PAUSED: Job is paused, typically due to account suspension or manual intervention. - JOB_STATE_DELETED: Job has been deleted. - JOB_STATE_ARCHIVED: User-facing state for jobs whose row is retained post-delete (e.g. RLOR trainers within the checkpoint retention window). The internal row is still in JOB_STATE_DELETED; the gateway translates it to ARCHIVED on public responses.
  - `status` GatewayStatus
    - `code` 'OK' | 'CANCELLED' | 'UNKNOWN' | 'INVALID_ARGUMENT' | 'DEADLINE_EXCEEDED' | 'NOT_FOUND' | 'ALREADY_EXISTS' | 'PERMISSION_DENIED' | 'UNAUTHENTICATED' | 'RESOURCE_EXHAUSTED' | 'FAILED_PRECONDITION' | 'ABORTED' | 'OUT_OF_RANGE' | 'UNIMPLEMENTED' | 'INTERNAL' | 'UNAVAILABLE' | 'DATA_LOSS' — - OK: Not an error; returned on success. HTTP Mapping: 200 OK - CANCELLED: The operation was cancelled, typically by the caller. HTTP Mapping: 499 Client Closed Request - UNKNOWN: Unknown error. For example, this error may be returned when a `Status` value received from another address space belongs to an error space that is not known in this address space. Also errors raised by APIs that do not return enough error information may be converted to this error. HTTP Mapping: 500 Internal Server Error - INVALID_ARGUMENT: The client specified an invalid argument. Note that this differs from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments that are problematic regardless of the state of the system (e.g., a malformed file name). HTTP Mapping: 400 Bad Request - DEADLINE_EXCEEDED: The deadline expired before the operation could complete. For operations that change the state of the system, this error may be returned even if the operation has completed successfully. For example, a successful response from a server could have been delayed long enough for the deadline to expire. HTTP Mapping: 504 Gateway Timeout - NOT_FOUND: Some requested entity (e.g., file or directory) was not found. Note to server developers: if a request is denied for an entire class of users, such as gradual feature rollout or undocumented allowlist, `NOT_FOUND` may be used. If a request is denied for some users within a class of users, such as user-based access control, `PERMISSION_DENIED` must be used. HTTP Mapping: 404 Not Found - ALREADY_EXISTS: The entity that a client attempted to create (e.g., file or directory) already exists. HTTP Mapping: 409 Conflict - PERMISSION_DENIED: The caller does not have permission to execute the specified operation. `PERMISSION_DENIED` must not be used for rejections caused by exhausting some resource (use `RESOURCE_EXHAUSTED` instead for those errors). `PERMISSION_DENIED` must not be used if the caller can not be identified (use `UNAUTHENTICATED` instead for those errors). This error code does not imply the request is valid or the requested entity exists or satisfies other pre-conditions. HTTP Mapping: 403 Forbidden - UNAUTHENTICATED: The request does not have valid authentication credentials for the operation. HTTP Mapping: 401 Unauthorized - RESOURCE_EXHAUSTED: Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space. HTTP Mapping: 429 Too Many Requests - FAILED_PRECONDITION: The operation was rejected because the system is not in a state required for the operation's execution. For example, the directory to be deleted is non-empty, an rmdir operation is applied to a non-directory, etc. Service implementors can use the following guidelines to decide between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`: (a) Use `UNAVAILABLE` if the client can retry just the failing call. (b) Use `ABORTED` if the client should retry at a higher level. For example, when a client-specified test-and-set fails, indicating the client should restart a read-modify-write sequence. (c) Use `FAILED_PRECONDITION` if the client should not retry until the system state has been explicitly fixed. For example, if an "rmdir" fails because the directory is non-empty, `FAILED_PRECONDITION` should be returned since the client should not retry unless the files are deleted from the directory. HTTP Mapping: 400 Bad Request - ABORTED: The operation was aborted, typically due to a concurrency issue such as a sequencer check failure or transaction abort. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 409 Conflict - OUT_OF_RANGE: The operation was attempted past the valid range. E.g., seeking or reading past end-of-file. Unlike `INVALID_ARGUMENT`, this error indicates a problem that may be fixed if the system state changes. For example, a 32-bit file system will generate `INVALID_ARGUMENT` if asked to read at an offset that is not in the range [0,2^32-1], but it will generate `OUT_OF_RANGE` if asked to read from an offset past the current file size. There is a fair bit of overlap between `FAILED_PRECONDITION` and `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific error) when it applies so that callers who are iterating through a space can easily look for an `OUT_OF_RANGE` error to detect when they are done. HTTP Mapping: 400 Bad Request - UNIMPLEMENTED: The operation is not implemented or is not supported/enabled in this service. HTTP Mapping: 501 Not Implemented - INTERNAL: Internal errors. This means that some invariants expected by the underlying system have been broken. This error code is reserved for serious errors. HTTP Mapping: 500 Internal Server Error - UNAVAILABLE: The service is currently unavailable. This is most likely a transient condition, which can be corrected by retrying with a backoff. Note that it is not always safe to retry non-idempotent operations. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 503 Service Unavailable - DATA_LOSS: Unrecoverable data loss or corruption. HTTP Mapping: 500 Internal Server Error
    - `message` string — A developer-facing error message in English.
  - `createdBy` string — The email address of the user who initiated this fine-tuning job.
  - `trainingConfig` GatewayBaseTrainingConfig
    - `outputModel` string — The model ID to be assigned to the resulting fine-tuned model. If not specified, the job ID will be used.
    - `baseModel` string — The name of the base model to be fine-tuned Only one of 'base_model' or 'warm_start_from' should be specified.
    - `warmStartFrom` string — The PEFT addon model in Fireworks format to be fine-tuned from Only one of 'base_model' or 'warm_start_from' should be specified.
    - `jinjaTemplate` string — Deprecated: literal Jinja templates are not supported by Training V2. Conversation rendering is selected from the base model's registered renderer configuration instead.
    - `learningRate` number, float — The learning rate used for training.
    - `maxContextLength` integer — The maximum context length to use with the model.
    - `loraRank` integer — The rank of the LoRA layers.
    - `epochs` integer — The number of epochs to train for.
    - `batchSize` integer — Deprecated: legacy V1 token budget. Training V2 batches by samples via batch_size_samples.
    - `gradientAccumulationSteps` integer — Deprecated: legacy V1 gradient accumulation. Training V2 batches by samples via batch_size_samples and rejects this field when set.
    - `learningRateWarmupSteps` integer
    - `batchSizeSamples` integer — The number of samples per gradient batch.
    - `optimizerWeightDecay` number, float — Weight decay (L2 regularization) for optimizer.
    - `trainerShardingScheme` GatewayTrainerShardingScheme — Structured parallelism/sharding profile used by trainer launches.
      - `tensorParallelism` integer — Tensor-parallel degree. 0 means unspecified (server defaults to 1).
      - `pipelineParallelism` integer — Pipeline-parallel degree. 0 means unspecified (server defaults to 1).
      - `contextParallelism` integer — Context-parallel degree. 0 means unspecified (server defaults to 1).
      - `expertParallelism` integer — Expert-parallel degree. 0 means unspecified (server defaults to 1).
      - `sequenceParallelism` boolean — Whether sequence parallelism should be enabled.
    - `loraAlpha` integer — LoRA alpha scaling factor. If not specified (or 0), trainer defaults are used.
    - `loraDropout` number, float — LoRA dropout probability.
    - `loraTargetModules` string[] — Optional LoRA target module names (e.g. q_proj, k_proj, v_proj).
    - `lrScheduler` GatewayLearningRateScheduler — Learning-rate scheduler applied on top of the base learning rate (after the shared learning_rate_warmup_steps warmup). It mirrors the trainer-side fireworks.training.sdk.training_spec.LRSchedulerSpec discriminated union: the schedule variant that is set selects the shape, and each variant carries only the knobs that apply to it. Add a new schedule by adding a message and one `oneof schedule` entry; existing clients are unaffected. When unset, the trainer uses the legacy constant schedule.
      - `constant` GatewayConstantLRSchedule — Constant learning rate held flat after warmup (legacy default). No decay knobs.
      - `linear` GatewayLinearLRSchedule — Linear decay from the peak learning rate toward min_lr_ratio after warmup.
        - `minLrRatio` number, float — Floor learning rate as a fraction of the peak learning rate (0.0 = decay to zero, 0.1 = decay to 10% of the peak learning rate).
        - `decayRatio` number, float — Fraction of total training steps over which to decay. 0 (unset) decays over the full run.
      - `cosine` GatewayCosineLRSchedule — Cosine annealing from the peak learning rate toward min_lr_ratio after warmup.
        - `minLrRatio` number, float — Floor learning rate as a fraction of the peak learning rate (0.0 = decay to zero, 0.1 = decay to 10% of the peak learning rate).
        - `decayRatio` number, float — Fraction of total training steps over which to decay. 0 (unset) decays over the full run.
  - `rewardWeights` string[] — A list of reward metrics to use for training in format of "<reward_name>=<weight>".
  - `wandbConfig` GatewayWandbConfig — WandbConfig is the configuration for the Weights & Biases (wandb) logging which will be used by a training job.
    - `enabled` boolean — Whether to enable wandb logging.
    - `apiKey` string — The API key for the wandb service.
    - `project` string — The project name for the wandb service.
    - `entity` string — The entity name for the wandb service.
    - `runId` string — The run ID for the wandb service.
    - `url` string — The URL for the wandb service.
  - `awsS3Config` GatewayAwsS3Config — AwsS3Config is the configuration for AWS S3 dataset access which will be used by a training job.
    - `credentialsSecret` string
    - `iamRoleArn` string
  - `azureBlobStorageConfig` GatewayAzureBlobStorageConfig — AzureBlobStorageConfig is the configuration for Azure Blob Storage dataset access which will be used by a training job.
    - `credentialsSecret` string — Reference to a Secret resource containing Azure credentials. Format: accounts/{account_id}/secrets/{secret_id} The secret value must be JSON: {"connection_string": "..."} or {"sas_token": "..."} or {"account_key": "..."} Mutually exclusive with managed_identity_client_id.
    - `managedIdentityClientId` string — Managed Identity Client ID for GCP-to-Azure Workload Identity Federation. Format: uuid Mutually exclusive with credentials_secret.
    - `tenantId` string
  - `jobProgress` GatewayJobProgress — Progress of a job, e.g. RLOR, EVJ, BIJ etc.
    - `percent` integer — Progress percent, within the range from 0 to 100.
    - `epoch` integer — The epoch for which the progress percent is reported, usually starting from 0. This is optional for jobs that don't run in an epoch fasion, e.g. BIJ, EVJ.
    - `totalInputRequests` integer — Total number of input requests/rows in the job.
    - `totalProcessedRequests` integer — Total number of requests that have been processed (successfully or failed).
    - `successfullyProcessedRequests` integer — Number of requests that were processed successfully.
    - `failedRequests` integer — Number of requests that failed to process.
    - `outputRows` integer — Number of output rows generated.
    - `inputTokens` integer — Total number of input tokens processed.
    - `outputTokens` integer — Total number of output tokens generated.
    - `cachedInputTokenCount` integer — The number of input tokens that hit the prompt cache.
  - `keepAlive` boolean
  - `rolloutDeploymentName` string — Rollout deployment name associated with this RLOR trainer job. This is optional. If not set, trainer will not trigger weight sync to rollout engine.
  - `lossConfig` GatewayReinforcementLearningLossConfig — Loss method + hyperparameters for reinforcement-learning-style fine-tuning (e.g. RFT / RL trainers). For preference jobs (DPO API), the default loss method is GRPO when METHOD_UNSPECIFIED.
    - `method` 'METHOD_UNSPECIFIED' | 'GRPO' | 'DAPO' | 'DPO' | 'ORPO' | 'GSPO_TOKEN'
    - `klBeta` number, float — KL coefficient (beta) override for GRPO-like methods. If unset, the trainer default is used.
    - `dpo` GatewayDpoConfig — Hyperparameters for Direct Preference Optimization (DPO) training.
      - `beta` number, float — DPO temperature parameter (beta in the paper). Must be > 0 and < 0.5.
      - `refCacheConcurrency` integer — Max concurrent reference forward passes during cache warm-up.
      - `refCacheBatchSize` integer — Number of preference pairs per reference forward call during caching.
    - `orpo` GatewayOrpoConfig — Hyperparameters for Odds Ratio Preference Optimization (ORPO) training.
      - `lambda` number, float — Weight for the ORPO odds-ratio loss term.
  - `nodeCount` integer — The number of nodes to use for the fine-tuning job. If not specified, the default is 1.
  - `acceleratorSeconds` object — Accelerator seconds used by the job, keyed by accelerator type (e.g., "NVIDIA_H100_80GB"). Updated periodically.
  - `serviceMode` boolean
  - `directRouteHandle` string
  - `hotLoadDeploymentId` string — The deployment ID used for hot loading. When set, checkpoints are saved to this deployment's hot load bucket, enabling weight swaps on inference. Only valid for service-mode or keep-alive jobs.
  - `purpose` 'PURPOSE_UNSPECIFIED' | 'PURPOSE_PILOT' — Scheduling purpose for training jobs and deployments.
  - `forwardOnly` boolean — When true, run the trainer in forward-only mode (no backward/optimizer). Used for reference models in GRPO that only need forward passes.
  - `managedBy` string — For managed service use only. Users do not need to set this field.
  - `trainerReplicaCount` integer — Data-parallel replica count for service-mode trainers. When unset or 0, defaults to 1. Values greater than 1 launch replicated HSDP training.
  - `inactivityTimeout` string — Trainer inactivity timeout. The trainer reports tracked activity, including trainer API operations and active-session heartbeats. If no tracked activity is observed for this duration, the trainer is automatically stopped. When unset or 0, defaults to 60 minutes. Set disable_inactivity_cleanup to true to disable automatic cleanup. GPU usage continues to accrue while the trainer is running.
  - `disableInactivityCleanup` boolean — Disable trainer inactivity cleanup. When true, the trainer is not automatically stopped due to inactivity. GPU usage continues to accrue while the trainer is running.
  - `encryptionState` 'ENCRYPTION_STATE_UNSPECIFIED' | 'ENCRYPTION_STATE_PLAINTEXT' | 'ENCRYPTION_STATE_CMEK' — EncryptionState is the authoritative, per-resource CMEK marker: the single source of truth for whether a resource's customer-data artifacts are encrypted. It is stamped at resource creation from the owning account's CMEK config and is immutable for the resource's life, so a resource always reads back with the state it was created under regardless of the account's current flag. The encrypt-on-write / decrypt-on-read decision for the resource's data keys off this field. - ENCRYPTION_STATE_UNSPECIFIED: Unstamped/legacy rows that predate CMEK. Treated as PLAINTEXT. - ENCRYPTION_STATE_PLAINTEXT: Customer-data artifacts are stored as plaintext (Fireworks-owned, no CMEK). - ENCRYPTION_STATE_CMEK: Customer-data artifacts are CMEK-encrypted; reads MUST decrypt (fail-closed).

---

[API](https://skmtc.net/fireworks/apis/fireworks-ai-anthropic-compatible-messages-api.md) · [All operations](https://skmtc.net/fireworks/apis/fireworks-ai-anthropic-compatible-messages-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fireworks/fireworks-ai-anthropic-compatible-messages-api/revisions/954d6bc5d922/schema)
