# List what the account can do (/docs/api/capabilities/list-capabilities)

The products (payin, payout, remittance), methods, currencies and countries available to the account, with the fields each one requires and whether it can be used right now. Countries and rails are discovered here; they never have endpoints of their own.

The operation, from the OpenAPI contract (https://docs.caibopay.app/openapi.json):

```json

{
  "method": "GET",
  "path": "/v1/capabilities",
  "description": "The products (payin, payout, remittance), methods, currencies and countries available to the account, with the fields each one requires and whether it can be used right now. Countries and rails are discovered here; they never have endpoints of their own.",
  "operationId": "listCapabilities",
  "parameters": [
    {
      "description": "Only this product: payin, payout or remittance.",
      "in": "query",
      "name": "product",
      "required": false,
      "schema": {
        "enum": [
          "payin",
          "payout",
          "remittance"
        ],
        "type": "string"
      }
    },
    {
      "description": "Only this country (ISO 3166-1 alpha-2). For a remittance, the destination's.",
      "in": "query",
      "name": "country",
      "required": false,
      "schema": {
        "type": "string"
      }
    },
    {
      "description": "Only this currency. For a remittance, the destination's.",
      "in": "query",
      "name": "currency",
      "required": false,
      "schema": {
        "type": "string"
      }
    },
    {
      "description": "Only this method. For a remittance, the payout method.",
      "in": "query",
      "name": "method",
      "required": false,
      "schema": {
        "type": "string"
      }
    }
  ],
  "responses": {
    "200": {
      "content": {
        "application/json": {
          "schema": {
            "properties": {
              "data": {
                "items": {
                  "$ref": "#/components/schemas/Capability"
                },
                "type": "array"
              },
              "has_more": {
                "type": "boolean"
              },
              "next_cursor": {
                "type": "string"
              }
            },
            "required": [
              "data",
              "has_more"
            ],
            "type": "object"
          }
        }
      },
      "description": "OK"
    },
    "400": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ErrorResponse"
          }
        }
      },
      "description": "The request is not valid."
    },
    "401": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ErrorResponse"
          }
        }
      },
      "description": "The API key is missing or not valid."
    },
    "403": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ErrorResponse"
          }
        }
      },
      "description": "The API key lacks the required scope."
    },
    "429": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ErrorResponse"
          }
        }
      },
      "description": "Too many requests."
    },
    "500": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ErrorResponse"
          }
        }
      },
      "description": "An error on our side. Safe to retry with the same Idempotency-Key."
    },
    "503": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ErrorResponse"
          }
        }
      },
      "description": "Temporarily unavailable or suspended. Safe to retry with the same Idempotency-Key."
    }
  },
  "summary": "List what the account can do",
  "tags": [
    "Capabilities"
  ],
  "x-required-scope": "read",
  "x-codeSamples": [
    {
      "lang": "js",
      "label": "Node.js",
      "source": "import { Caibo } from \"caibopay\";\n\nconst caibo = new Caibo(process.env.CAIBO_API_KEY);\n\nfor await (const item of caibo.capabilities.list()) {\n  console.log(item);\n}"
    },
    {
      "lang": "python",
      "label": "Python",
      "source": "import os\n\nimport caibopay\n\nclient = caibopay.Client(os.environ[\"CAIBO_API_KEY\"])\n\nfor item in client.capabilities.list():\n    print(item)"
    },
    {
      "lang": "go",
      "label": "Go",
      "source": "client, err := caibopay.NewClient(os.Getenv(\"CAIBO_API_KEY\"))\nif err != nil {\n\treturn err\n}\nctx := context.Background()\n\nresult, err := client.Capabilities.List(ctx, nil)\nif err != nil {\n\treturn err\n}\nfmt.Println(result)"
    }
  ]
}

```