> ## Documentation Index
> Fetch the complete documentation index at: https://docs.together.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Custom forward-backward pass

> Submits a forward-backward pass driven by externally computed gradients of the loss with respect to per-token log-probabilities.



## OpenAPI

````yaml openapi.yaml POST /rl/training-sessions/{session_id}/operations/custom-forward-backward
openapi: 3.1.0
info:
  title: Together APIs
  description: The Together REST API. See https://docs.together.ai for more details.
  version: 2.0.0
  termsOfService: https://www.together.ai/terms-of-service
  contact:
    name: Together Support
    url: https://www.together.ai/contact
  license:
    name: MIT
    url: https://github.com/togethercomputer/openapi/blob/main/LICENSE
servers:
  - url: https://api.together.ai/v1
    description: Default environment for APIs
  - url: https://api-inference.together.ai/v2
    description: Optimized environment for inference
security:
  - bearerAuth: []
paths:
  /rl/training-sessions/{session_id}/operations/custom-forward-backward:
    post:
      tags:
        - RL
      summary: Custom forward-backward pass
      description: >-
        Submits a forward-backward pass driven by externally computed gradients
        of the loss with respect to per-token log-probabilities.
      operationId: customForwardBackward
      parameters:
        - name: session_id
          in: path
          required: true
          schema:
            description: Training session ID
            type: string
        - name: Idempotency-Key
          in: header
          required: true
          schema:
            description: >-
              Required key that makes retries return the original operation; use
              a new key for changed request bodies.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RL.CustomForwardBackwardBody'
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RL.CustomForwardBackwardOperation'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorData'
components:
  schemas:
    RL.CustomForwardBackwardBody:
      type: object
      description: Request body for a custom forward-backward pass.
      required:
        - samples
        - gradients
      properties:
        samples:
          type: array
          description: Batch of training samples
          items:
            $ref: '#/components/schemas/RL.TrainingSample'
        gradients:
          type: array
          description: >-
            Per-sample per-token gradients of the loss with respect to
            log-probabilities
          items:
            $ref: '#/components/schemas/RL.TargetLogprobGradients'
    RL.CustomForwardBackwardOperation:
      type: object
      description: Async custom forward-backward pass operation
      required:
        - id
        - status
      properties:
        id:
          type: string
          example: 550e8400-e29b-41d4-a716-446655440000
          description: Operation ID
        status:
          $ref: '#/components/schemas/RL.TrainingOperationStatus'
          example: TRAINING_OPERATION_STATUS_PENDING
          description: Operation status
        output:
          $ref: '#/components/schemas/RL.CustomForwardBackwardResult'
          description: Result on success
        error:
          $ref: '#/components/schemas/RL.TrainingOperationError'
          description: Error details on failure
    ErrorData:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          properties:
            message:
              type: string
              nullable: false
            type:
              type: string
              nullable: false
            param:
              type: string
              nullable: true
              default: null
            code:
              type: string
              nullable: true
              default: null
          required:
            - type
            - message
    RL.TrainingSample:
      type: object
      required:
        - model_input
        - loss_fn_inputs
      properties:
        model_input:
          $ref: '#/components/schemas/RL.ModelInput'
          description: Model input
        loss_fn_inputs:
          type: object
          description: >-
            Per-token loss tensors keyed by name. Include `target_tokens` and
            the inputs required by the selected loss. Each tensor must declare
            `int64` or `float32`, be one-dimensional, and have the same length.
          additionalProperties:
            $ref: '#/components/schemas/RL.TensorData'
        routed_experts_key:
          type: string
          description: >-
            Opaque key returned with a sampled sequence. Pass it unchanged with
            the corresponding training sample to reuse the same expert
            selections. The selections must cover the entire training sample or
            all but its final token. Training fails if the key is no longer
            available.
          minLength: 1
          maxLength: 256
          pattern: ^routing/[A-Za-z0-9._-]+/[0-9a-f]{32}\.[1-9][0-9]*$
    RL.TargetLogprobGradients:
      type: object
      description: Per-token gradients of the loss with respect to target log-probabilities
      required:
        - data
      properties:
        data:
          type: array
          description: Float array of per-token gradients (d loss / d log p)
          example:
            - -0.1
            - 0.05
            - -0.08
            - 0.12
            - -0.03
          items:
            type: number
        dtype:
          $ref: '#/components/schemas/RL.DType'
          example: D_TYPE_FLOAT32
          description: Data type of the float array
    RL.TrainingOperationStatus:
      type: string
      enum:
        - TRAINING_OPERATION_STATUS_UNSPECIFIED
        - TRAINING_OPERATION_STATUS_PENDING
        - TRAINING_OPERATION_STATUS_RUNNING
        - TRAINING_OPERATION_STATUS_COMPLETED
        - TRAINING_OPERATION_STATUS_FAILED
      default: TRAINING_OPERATION_STATUS_UNSPECIFIED
    RL.CustomForwardBackwardResult:
      type: object
      description: Result of a custom forward-backward pass operation
      properties: {}
      additionalProperties: false
      x-stainless-empty-object: true
    RL.TrainingOperationError:
      type: object
      description: Error details for a failed training operation
      properties:
        code:
          $ref: '#/components/schemas/RL.TrainingOperationErrorCode'
          description: Application error code
          example: TRAINING_OPERATION_ERROR_CODE_TIMEOUT
        message:
          description: Human-readable error message
          type: string
          example: Operation timed out
    RL.ModelInput:
      type: object
      required:
        - chunks
      properties:
        chunks:
          description: Input chunks for the model
          type: array
          items:
            $ref: '#/components/schemas/RL.ModelInputChunk'
            type: object
    RL.TensorData:
      type: object
      description: A tensor encoded as flattened row-major values, with an optional shape.
      required:
        - data
        - dtype
      properties:
        data:
          type: array
          description: Flattened one-dimensional values encoded as JSON numbers.
          example:
            - 1
            - 2
            - 3
          items:
            type: number
            format: double
        dtype:
          type: string
          enum:
            - int64
            - float32
          description: Tensor element type, either `int64` or `float32`.
          example: int64
        shape:
          type: array
          description: >-
            Optional tensor shape; training operations accept one-dimensional
            tensors only, and the dimension must match the data length.
          example:
            - 3
          items:
            type: integer
        sparse_crow_indices:
          type: array
          description: Unsupported for training operations. Omit this field.
          example:
            - 0
            - 2
          items:
            type: integer
        sparse_col_indices:
          type: array
          description: Unsupported for training operations. Omit this field.
          example:
            - 0
            - 2
          items:
            type: integer
    RL.DType:
      type: string
      enum:
        - D_TYPE_UNSPECIFIED
        - D_TYPE_INT64
        - D_TYPE_FLOAT32
        - D_TYPE_BFLOAT16
      default: D_TYPE_UNSPECIFIED
    RL.TrainingOperationErrorCode:
      type: string
      description: Application error code for a failed training operation
      enum:
        - TRAINING_OPERATION_ERROR_CODE_UNSPECIFIED
        - TRAINING_OPERATION_ERROR_CODE_RESOURCE_EXHAUSTED
        - TRAINING_OPERATION_ERROR_CODE_TIMEOUT
        - TRAINING_OPERATION_ERROR_CODE_INTERNAL_ERROR
        - TRAINING_OPERATION_ERROR_CODE_SESSION_NOT_ACTIVE
        - TRAINING_OPERATION_ERROR_CODE_INVALID_INPUT
        - TRAINING_OPERATION_ERROR_CODE_NON_FINITE_LOSS
      default: TRAINING_OPERATION_ERROR_CODE_UNSPECIFIED
    RL.ModelInputChunk:
      type: object
      description: A single chunk of model input content.
      required:
        - encoded_text
      properties:
        encoded_text:
          $ref: '#/components/schemas/RL.EncodedTextChunk'
          description: Pre-tokenized text content for this input chunk.
    RL.EncodedTextChunk:
      type: object
      description: Pre-tokenized text content for a model input chunk.
      required:
        - tokens
      properties:
        tokens:
          description: Pre-tokenized text input
          type: array
          example:
            - 123
            - 456
            - 789
          items:
            oneOf:
              - type: string
              - type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      x-bearer-format: bearer
      x-default: default

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.