Platfrom Update: Bondora API Sandbox is Up and Running!

Platform Updates

We are proud to announce that Bondora API (Application Program Interface) Sandbox environment is up and running. People interested in the API now can access the documentation and start implementing their client applications. The Sandbox is a test environment that emulates the behaviour of the production API. This means that the auctions are not real and making bids into auctions is not causing any actual bids or transactions. The Sandbox environment can also change a bit, because the development is still in progress. The changes should not cause any breaking changes though.

API is an additional interface for accessing the functionality of Bondora platform without the user interface (UI). It’s an alternative to Bondora web UI and is to be accessed programmatically via custom client application. Every investor can create their own implementation of the client application. You can choose any programming language and platform. You could even create a browser plugin and have the UI look the way you want and show the data that you are interested in. We are expecting lots of different client application implementations that other investors can also use. More proficient investors can create automated bidders that request auctions, filter them by predefined parameters and automatically make bids into them.

API is implemented as a RESTful web service, meaning that all the communication is sent via HTTP, like accessing any website. For accessing different API resources (aka uri like https://api.bondora.com), the user must be authenticated prior with his/her username and password. On authentication the API responds with unique token that is generated for the user and is valid until provided date. When accessing API resources (requesting data), the user must provide the issued API token for every request. The token must be set to the request Authorization header as „Token “.

For more information you are welcome to check the API site where you can find more detailed description of the API and a technical reference documentation for all the API resources.


77 responses to “Platfrom Update: Bondora API Sandbox is Up and Running!”

  1. Hi,

    I don’t understand why does Bondora use the Basic Authorization as the user must disclose his credentials to each app that uses Bondora API.

    Any chance to have OAuth2 in the near future?

    • Exactly… We need users to generate their API keys (one for each 3rd party app) and to set privileges for these keys (readonly, primary market bidding, secondary market selling, secondary market buying).

    • OAuth2 is planned and is in development. The current documentation is the first public version. We are still adding functionality to the API.

  2. >Users are authenticated by /login resource which can be requested with user credentials in Basic Authorization header

    This i quite a bad practice for this kind of sensitive API.
    The user should generate the token itself at bondora.com UI and to third party apps he should give only the token. Never password! And token could be cancelled any time.

    • Logout revokes the current API token. Yes, it might be confusing. We can change the name to more obvious one. Thank for your feedback.

  3. Will you also make and provide a tool every investor can use, to take advantage of the API? Or will this only benefit the programmers and professional investors who have the capital to develop a program/interface?

    • API is for programmers. they(programmers) can build some user friendly webpages and provide to public (free or by some fee)

  4. Gets Auction info by auction identifier des not retur all info available on auction page now. As Example – duration of debts, number of debts, to whom debts were occurred. Do you plan to add this info? And more important there is no info about liabilities

    • We are planning to add additional information. Currently API is in beta and we are still adding functionality. By making the API documentation public, we wanted to get early feedback from investors, so we would know, what to add and what should we change.

      Thank you for your feedback!

    • Not at the moment. We are considering additional functionality. Feedback from investors is important, so we would know what funtionality investors are expecting from API.

    • Thanks for the reply. Buying/selling at secondary market is really important to me as for investor. I think I won’t be investing my time to developing system, if there will be no API for secondary market.

    • Trading on secondary market was requested repeatedly…

      Also Jevgenijs Kazanins confirmed in previous comment to blog post August 27, 2015 at 11:07 that “Investor will have an option to sell their investments through both automated product and the API even after the change.”

      So we all see it as crucial!

  5. The API documentation and Sandbox was made public so we could get feedback from investors as early as possible. It’s still in Beta. Your feedback is very valuable, because You are going to use the API. We will consider all the feedback and provide best solutions possible.

    The API is still in development and we will add more functionality over the time. OAuth2 authentication for 3rd party applications is planned and is in development. Basic auth was added so you could start implementing and testing the API as soon as possible.

  6. Very nice, but I’d like to see reporting functionality added as well. Retreiving data using the “beta” reporting with scripts and multiple accounts has become a nightmare for weeks, since the login and change role functionality on the website became quite erroneous. My definite wish would be to be able to retreive this kind of data from a reliable development friendly interface.

    • I feel need for more user functions – getting stats of user account (account value, deposited amount) and status of current portfolio (get loan ids and amount, get details of loan by id).

    • We are planning to add more functionality when the basic investing is ready and, lots of API users are requesting some new functionality.

    • Can you please confirm, that management of Bondora concluded that Secondary Market is vital and will be present in API?

    • Yes, I can confirm that Bondora’s management supports adding secondary market functionality to the API.

  7. Are there any XML schemas available for the ‘application/xml’ response formats? For example: In order to validate an XML response stating ‘xmlns=”http://schemas.datacontract.org/2004/07/Sobralaen.Api.Models”‘ the XML schema must be made available to the parser/validator. There is no ‘schemaLocation’ mentioned, AFAIK.

  8. Please add support to use GET parameters in api/v1/auctions request in order to find auctions by some criteria (GET api/v1/bids already has such feature).

  9. I’d also suggest assigning each bid unique ID so we can differentiate between more bids in one auction and get status of bid by ID.

  10. The documentation is lacking a lot of enumeration types. For example, there is ‘ApiBidFailureReason’ and ‘ApiBidStatusCode’ provided for ‘BidSummary’. Such types need to be defined for all other integer based enumeration types. ‘Auction’ is lacking almost all information regarding integer codes (NewCreditCustomer, VerificationType, LanguageCode, Gender, UseOfLoan, Education, MaritalStatus, EmploymentStatus, OccupationArea, HomeOwnershipType). It would be great if you could update the documentation to document the various codes in use. The integers are quite meaningless without.

  11. You are goofing on users – 4 weeks search on secondary market not corrected. How we can trust you, Bondora?

    • Well the same problem is with https://www.bondora.cz/marketing/media/ResaleArchive.xlsx, which is supposed to be updated daily.

      >All our datasets are updated daily. We recommend that you use the datasets to run your own portfolio analysis and adjust your investment strategy.

      Current time stamp is 28.7.2015… So more than month old. You have informed me 18/8 that the issue is fixed and gave me no ETA after I reminded you that the bug hasn’t been fixed.

    • The issue is now fixed. It just took time to release the fix together with other updates and fixes.

    • The second market filter issues are now fixed. Releasing the fix was delayed due other fixes and updates. Sorry for the inconvenience it caused for you.

  12. Interesting.

    One question: Why does a list of auctions need login? Can the list be different for different logged in users?
    Currently i see all the functionality behind an actual user login. Some generic “data-getters” could be public in one or other sense. (That is, not attached to actual user in bondora at least)

    • You need to be registered at Bondora site and fully identified before you can start investing. We don’t show the auctions to the users that cannot invest into them.

    • Thank you for the answer.

      Yes, i understand it. But at the same time, it’s logically incorrect that a list of loans is tied to a particular user in bondora… unless each user may have different list when conditions sent in the request are the same.

      Quick example: Let’s say i create a webpage that allows multiple users to use my webpage to bid into the loans. While it’s totally logical to user bondora’s user to make a bid, then the full list of loans is not tied to any particular user. It would be logically incorrect to use random person’s user to show list of loans to completely different random user. (Let’s say, we’re caching the loans list result for some time)

      I believe, what i want to say is that it’s kind-of illogical, while at the same time, i don’t say getting the list of loans should not be done while authenticated. Maybe there should be possibility to create some application keys/users, that are not connected to actual users. I really don’t have the answer to that right now (unless you are going to let the list of loans completely public), but current situation just scratches something inside me.

      Nevertheless, thanks for the sandbox environment. Gonna play with it very soon.

  13. How the bidding system works?

    API allows to place a bid with Amount and also with MinAmount. Later, when i ask for all the bids, i see RequestedBidAmount, RequestedBidMinimumLimit and also ActualBidAmount, that at first at least is 0.

    There’s also BidProcessedDate and API specs describe it as “when bid is placed by autobidder”.

    So how the bidding really works? Is it like registering a bid and then your own autobidder starts to use that data? Is that autobidder working in sandbox environment?

    Thank you!

    • All bids made through API are collected to “Bid Pool” and executed periodically with the passive investment. The exact algorithm for bids ordering is still in development with the new “Passive Investing” platform update.

      The Sandbox bidding is currently not making any bids into auctions. The bids are just collected into Bid Pool. It is a test environment for validating your API implementation against and not live system. But, we have plans to add some bidding simulation logic to the API bids, so that you would get more dynamic results when bidding using the Sandbox API.

    • Very cool, thank you.

      When the autobidder’s algorithm is more solid, let us know, how the it works exactly. :)

      Is there also going to be a “cancelBid” functionality? In case the autobidder hasn’t yet run the bid through, it might be nice to have this ability to remove the bid from pool.

    • Glad to be helpful.

      Bid canceling functionality is in development backlog. Good to know that users are interested in it. As soon as the main functionality is ready and stable, we will start to develop additional functionality.

    • Can you give us some estimated time it will stay in Bid Pool? The problem I see is another case of blocking users funds without knowing if the Bid has passed and been accepted in auction.

      Anyway there should be unique ID for each Bid so we can ask through API about the state of Bid (and probably to cancel them).

    • Bids in a pool do not block user funds. These are basically requests for bids that user wants to make into auctions. When system starts processing bids from the pool, then the system will check if the user has enough funds and if the auction has available unfunded amount. Only after that actual bid into auction is made and funds are reserved.

    • For how long does bid stay in Pool?

      I don’t know if you are aware of it but it doesn’t matter if pool blocks funds or not…

      When I decide to make bid on something I just need to take care of funds reservation myself if your system won’t do it…So I need to block my funds until I know result of the bid.

    • There’s also another interesting thing: In fact, you can put multiple bids on the same loan.
      In a sense i feel, it’s a good thing to have. This way, instead of putting 25€ in the loan, i can put 5×5€ into the loan. Then later on i can sell 2×5€ on the secondary market and keep 3×5€ of the loan.

      Can you confirm, this is the intended behavior? Or it’s a “bug”? (I would love to have that bug :) )

    • The intended behavior was to be able to invest into multiple loans by making only one request. But, yes, you can also invest multiple times into same loan. It’s not limited by any ways.

    • Sorry, but only intended thing I see is that you don’t allow us to see results of bidding immediately and instead offer some blackbox called BidPool that allows you to prioritize bids on your own.

      This is not transparent way to do it.

  14. Currently bids are processed every 2 hours. The bids are ordered by bid time. The period and prioritizing will change in the future and we will notify users about the changes.

    The rules, how the bids are processed from the bid pool (prioritizing), are still open and thus we cannot further comment on that. We will make the decision rules public when the rules are ready and added to the bid processing.

    • You have announced API, that “gives investors a lot of flexibility”… We though this will be transparent and open system. After this discussion what we see is you are giving us closed blackbox.

      There is a lot more that you don’t want to comment now. Now we see why…

    • What I don’t understand is if you really want 3rd party to offer services on top of your API… Do you think anybody will invest time to development of tools for clients just to find that in some time Bondora with one click gave their service zero priority in bid pool?

      We know that you offer 1% of invested amount to agent that will negotiate and find funds willing to invest.

      So these hedge funds will be the ones getting priority. Tell us – why waste our time when you are showing us that you don’t want to be transparent, don’t want fair rules for all parties and want become blackbox for VIP clients so you can gather comissions?

    • Looks like they like us to test/bugfix API that will be provided to VIP’s with less bugs after our test

    • 3rd party services (eg lendingrobot) usually disclose priority policy to show users that it is fair to all their users and that everybody has chance to invest in best loans.

      With Bondora 3rd parties can practically throw their policies to trash as (they cannot enforce their policy because) Bondora does their own prioritizing.

    • Wow, this is an eye opener. Thanks for this post, n3tcarlos.

      Bondora has likely become a whor* of institutional money. Retail Investors, move on.

  15. Hi!

    I have looked a bit more into actions information and see that there’s some information missing really. For example, there’s income information but nothing about expenses.

    In addition, it would be nice, if there would be a list of auction ids, that the same client has applied before. And those ids can be used to retrieve information of those historical loans too.

    Thank you.

    • Actually this is why I would really like to see current “Dataset Export” feature (both public and private) available through the API. This way you could cache the whole Loan dataset and wouldn’t need to retrieve each row separately.

    • Well, if it would also include filtering option based on dates or last known loan to you, then we could write incremental loan list update, which would be more efficient…

    • We will add total expenses and dept data under auctions list data and detailed expenses and dept data under auction detail. We will also consider adding the previous auction ids for the lender.

      We have the goal to add all the data, that is visible on web loan/auction data, under the API’s auction detail information.

  16. As others already mentioned. There needs to be an easy way to fetch all active auctions incrementally (if-modified-since, for example). Most clients will do just that and perform all other operations (filtering,sorting,etc.) client side. This would make a lot of things possible. Sorting the auctions of a a single page does not make sense, for example.

    • Thank you for your feedback. We are adding the auction created date and time. We are also adding filter to the field, so it would be possible to get newer than auctions.

    • Yeah, create timestamp (the system’s one, you have there) would be perfect. Then it would be really easy to ask for incremental updates.

      Another way could be that i could send the newest auction id in the request and based on that you could respond with all the auctions that are newer than the one i have mentioned in request.

    • Sorry for spamming… Create timestamp wouldn’t be too cool really. “Modified timestamp” would be perfect. So when some data about the loan changes, it gets newer timestamp and so i would then re-download the data about it.

    • Well, all available timestamps would be cool to have (create,update,delete). The create timestamp to only fetch auctions having been added. The modified timestamp to only fetch auctions having been updated. Not sure about deletions of auctions. Can that ever happen? If yes, a client would need to have a way to test for a deletion as well. It’s mainly just about keeping the list of auctions in sync with the server in an efficient way. That list can get huge so the amount of data to transfer should be minimal.

    • Christian, Well, at creation, modified timestamp should be same as create timestamp, so it would not be necessary for incremental update. Also, deletion is not a real deletion, but some kind of status, so it would, again, affect the modified timestamp.

      So in the end, modified timestamp would be all that is needed for incremental update.

    • That depends on how those timestamps are maintained. I would expect the modified timestamp to be null after creation, as there has not been any modification. Only an update sets that timestamp. I am not saying that just having the modified timestamp would not work. Any API allowing a client to sync with the server without having to transfer masses of data would do, of course.

      I am thinking about a ‘SyncRequest’ with just one parameter ‘timestampLastSynced’. The response is a collection of auction identifiers only of any auction created since ‘timestampLastSynced’ and a collection of auction identifiers only of any auction updated since ‘timestampLastSynced’ and a value to provide as the ‘timestampLastSynced’ in the next request. An auction could be marked as ‘outdated’ in the UI and a user may choose to sync that single auction manually. Maybe that specific auction does not match any filter so does not need to be synced. Things like that. As a client will have to poll for changes periodically, I am heading after not needing to download lots of data every other minute. Bandwidth matters.

  17. As a client application may allow a user to choose between different kinds of strategies to place bids, I would like to request a feature allowing a user to identify the strategy used for bidding. For example, add a string parameter ‘strategyIdentifier’ to ‘Bid’ of ‘BidRequest’ and add a column ‘Strategy’ to the table ‘MY INVESTMENTS’ -> ‘INVESTMENTS’ displaying that value.

    • Looks like a user-based comment/misc. data field, which you can populate with whatever string you want… (Y)

    • Exactly. No processing involved. Just some optional information passed through and getting displayed.

    • What about allowing service providers to register their own “service keys” so that they can “sign” bid transaction with this key. (They can set name for the key or possibly use some strategy id).

      It would be useful for users to be able to distinguish even between multiple services so they can use them simultaneously. User can then examine each bid transaction and see which provider did the tx (and see provider, key name).

      Its like comment field but with authorship proof.

    • @Joonatan: Adding a comment column to the table reading “Investor,Offer amount,Accepted amount,Offer time,Offer status” of loan applications and letting a client application provide a value displayed there via the ‘Bid’ API is exactly what I am looking after.

      @n3tcarlos: In my case, I really just need a way to allow the users of the client application to comment on bids for theire personal use. The data entered is completely up to them. Nothing provable.

    • Christian, What you need is bid id, that is currently not shown. All the commenting data you can keep on your own really…

      In the end, if we would have IDs of everything we can receive from bondora, we would need nothing else from them.

  18. Exactly, you can save custom data in your application database. We need Bondora to assign unique identificators, as I recommended earlier.

    I think registering app keys would be great way to allow define cross-app investment policies and app behaviour.

    • I would not want to store any bids locally. Use cases may vary, of course. My use case is just “fetch auctions, filter by custom strategies, place matching bids, repeat”. The results are made available through the Bondora web UI. As I understood things, users will always need to login to the Bondora web UI and there is no way to provide an application replacing that web UI. Not beeing able to see all data there would be bad, IMHO.

    • Well my interpretation of original blog post is different. Bondora will of course provide UI to monitor current active investments.

      But bidding process (auction listing, bidding) on both primary and secondary market will be strictly through the API as Bondora doesn’t want to provide support to “limited group of customers”.

      Hopefully somebody from Bondora will explain it better as I don’t want to speak for them!

      For your application to be able get status of bids you need to differentiate between your app’s bids and other app’s bid by storing bid-ID locally or to pass app key with bid request as I suggested earlier.

    • That’s how I understood it as well. A client application will not have any information about loans/investments (there is no API for it). So the only place users can gather information about loans they’ve invested in is the Bondora web UI. There is a link between loans and the corresponding auction. The bids are shown for the auction. Those bids need to contain some additional information provided by a user/client application. A good place would be comments on bids. Having unique keys for everything always is a good thing, of course. It does not help in this situation.

      Say a user has setup 5 different investment strategies in a client application. That application has performed 1000 bids in a few weeks leading to 200 active investments. The user has no way to see which investment strategy is performing good or bad as that information cannot be provided to Bondora. Passing a comment along a bid and displaying that will do just fine.

    • The goal of API is to include all investment functionality that is available on website and even surpass that in the end. Currently we have timeline to add all investment related capabilities to the API during Q4 this year.

      We are open to all suggestions and ideas regarding to the API.

    • Seems like the fact that we are helping to debug two-speed API has been confirmed:

      Citation from current TC:

      We may also offer preferred access to the matketplace and additional non-standard advisory services to institutional investors, as stipulated in the Terms of Use.

  19. “The rules, how the bids are processed from the bid pool (prioritizing), are still open”
    Any news on this topic? Please share the options you are considering, if possible.

    • More you pay for preferred access to the marketplace, higher the priority… See current terms & conditions above…