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

# Approve provider terms of service

> Approves the provider's terms of service. Must be called once before performing any staking operation with this provider.



## OpenAPI

````yaml https://docs.fireblocks.com/api/v1/swagger.yaml post /staking/providers/{providerId}/approveTermsOfService
openapi: 3.0.0
info:
  title: Fireblocks API
  description: >
    Fireblocks provides a suite of applications to manage digital asset
    operations and a complete development platform to build your business on the
    blockchain.


    - Visit our website for more information: [Fireblocks
    Website](https://fireblocks.com)

    - Visit our developer docs: [Fireblocks
    DevPortal](https://developers.fireblocks.com)
  version: 1.6.2
  contact:
    email: developers@fireblocks.com
servers:
  - url: https://api.fireblocks.io/v1
    description: Fireblocks Production Environment Base URL
  - url: https://sandbox-api.fireblocks.io/v1
    description: Fireblocks Sandbox Environment Base URL
security: []
paths:
  /staking/providers/{providerId}/approveTermsOfService:
    post:
      tags:
        - Staking
      summary: Approve provider terms of service
      description: >-
        Approves the provider's terms of service. Must be called once before
        performing any staking operation with this provider.
      operationId: approveTermsOfServiceByProviderId
      parameters:
        - name: providerId
          required: true
          in: path
          description: Unique identifier of the staking provider.
          schema:
            $ref: '#/components/schemas/StakingProvider'
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '201':
          description: Terms of service accepted.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          description: >-
            Bad request: missing/invalid fields, unsupported amount, or
            malformed payload.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '403':
          description: >-
            Forbidden: insufficient permissions, disabled feature, or restricted
            provider/validator.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: >-
            Not found: requested resource does not exist (e.g., position,
            validator, provider, or wallet).
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: >-
            const response: Promise<FireblocksResponse<void>> =
            fireblocks.staking.approveTermsOfServiceByProviderId(stakingApiApproveTermsOfServiceByProviderIdRequest);
        - lang: Java
          source: >-
            CompletableFuture<ApiResponse<Void>> response =
            fireblocks.staking().approveTermsOfServiceByProviderId(providerId,
            idempotencyKey);
        - lang: Python
          source: >-
            response =
            fireblocks.staking.approve_terms_of_service_by_provider_id(provider_id,
            idempotency_key);
components:
  schemas:
    StakingProvider:
      description: The unique identifier of the staking provider
      type: string
      example: kiln
      enum:
        - kiln
        - figment
        - lido
        - p2p
        - blockdaemon
        - galaxy
        - pierTwo
        - kraken
    ErrorSchema:
      type: object
      properties:
        message:
          type: string
        code:
          type: number
  parameters:
    X-Idempotency-Key:
      name: Idempotency-Key
      in: header
      description: >-
        A unique identifier for the request. If the request is sent multiple
        times with the same idempotency key, the server will return the same
        response as the first request. The idempotency key is valid for 24
        hours.
      required: false
      schema:
        type: string
  headers:
    X-Request-ID:
      schema:
        type: string
      description: >-
        Unique ID correlated to the API request. Please provide it in any
        support ticket you create or on Github issues related to Fireblocks SDKs
  responses:
    Error:
      description: Error Response
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorSchema'

````