{
  "openapi": "3.0.3",
  "info": {
    "title": "Bridgeo Agent API",
    "version": "1.0.0",
    "description": "Informational planning data for cross-border money transfers: compare routes by total landed cost and speed, see the rules, documents, bank closures and rate trend, and ask a grounded assistant. Bridgeo is a planner, not a bank, transfer provider or adviser; fees are indicative, not live quotes."
  },
  "servers": [
    {
      "url": "https://w6fvxlmllh.execute-api.ap-south-1.amazonaws.com"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "scheme": "bearer",
        "description": "API key: bk_live_..."
      }
    }
  },
  "paths": {
    "/v1/corridors": {
      "get": {
        "summary": "List corridors, goals and speeds",
        "security": [
          {
            "bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/corridors/{id}": {
      "get": {
        "summary": "Reviewed facts for one corridor",
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "example": "US%3EIN"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "404": {
            "description": "Unknown corridor"
          }
        }
      }
    },
    "/v1/plan": {
      "post": {
        "summary": "Compare routes with rules, documents and journey",
        "security": [
          {
            "bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "corridor": {
                    "type": "string",
                    "example": "US>IN",
                    "description": "Corridor id from GET /v1/corridors"
                  },
                  "goal": {
                    "type": "string",
                    "enum": [
                      "family",
                      "deposit",
                      "property",
                      "invest",
                      "education",
                      "business"
                    ]
                  },
                  "amount": {
                    "type": "number",
                    "description": "In the sending currency"
                  },
                  "speed": {
                    "type": "string",
                    "enum": [
                      "instant",
                      "sameDay",
                      "flexible"
                    ]
                  },
                  "rate": {
                    "type": "number",
                    "description": "Optional destination units per 1 source unit"
                  }
                },
                "required": [
                  "corridor",
                  "goal",
                  "amount"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "429": {
            "description": "Quota exceeded"
          }
        }
      }
    },
    "/v1/recipient/check": {
      "post": {
        "summary": "Offline format check of a recipient identifier",
        "security": [
          {
            "bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "ifsc",
                      "upi",
                      "iban",
                      "clabe",
                      "aba",
                      "gbsort"
                    ]
                  },
                  "value": {
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "value"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "429": {
            "description": "Quota exceeded"
          }
        }
      }
    },
    "/v1/closures": {
      "post": {
        "summary": "Weekends and bank holidays on both sides",
        "security": [
          {
            "bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "corridor": {
                    "type": "string",
                    "example": "US>IN",
                    "description": "Corridor id from GET /v1/corridors"
                  },
                  "days": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 60
                  },
                  "start": {
                    "type": "string",
                    "example": "2026-11-10"
                  }
                },
                "required": [
                  "corridor"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "429": {
            "description": "Quota exceeded"
          }
        }
      }
    },
    "/v1/trend": {
      "post": {
        "summary": "Today's rate versus recent days (past data only)",
        "security": [
          {
            "bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "corridor": {
                    "type": "string",
                    "example": "US>IN",
                    "description": "Corridor id from GET /v1/corridors"
                  }
                },
                "required": [
                  "corridor"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "429": {
            "description": "Quota exceeded"
          }
        }
      }
    },
    "/v1/ask": {
      "post": {
        "summary": "Ask a question, answered only from reviewed facts (counts against the daily ask quota)",
        "security": [
          {
            "bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "question": {
                    "type": "string",
                    "maxLength": 400
                  },
                  "corridor": {
                    "type": "string",
                    "example": "US>IN",
                    "description": "Corridor id from GET /v1/corridors"
                  }
                },
                "required": [
                  "question"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "429": {
            "description": "Quota exceeded"
          }
        }
      }
    },
    "/v1/usage": {
      "get": {
        "summary": "Today's usage and caps for the calling key",
        "security": [
          {
            "bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  }
}