{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"ecd7d975-5301-4dd2-beca-5795cb39197c","name":"BetHub","description":"# API Overview\n\nThe BetHub API is designed for medium to large scale wagering operations looking to simplify their wagering process. It provides a single set of API calls that handles wagering into multiple Totes without the bettor requiring knowledge of each individual agencies API’s, wagering strings, wagering calls, network requirements, VPNS’s. BetHub abstracts away all the complexity of multi agency wagering by providing one endpoint to the player.\n\nIn its current state it is most suited to those with already existing data applications and wagering strategies but looking to reroute their wagers through the Hub as a central point.  \nThe BetHub can be broken up into the following components:\n\n**Authentication API –** Authentication & token generation for subsequent API access.\n\n**Accounts API-** Account related functions\n\n**Data API's –** At this stage contains only listings of daily meetings and meet codes\n\n**Wagering API's –** Interrelated operations to place wagers, view the outcome of submissions and retrieve bet files submitted through the BetHub.\n\n# Bet Security and Confidential Wagering\n\nAt BetHub we have been dealing with high volume wagering clients for over 12 years. As such we intimately respect and acknowledge the sensitive and confidential wagers being passed through the system. Rest assured your wagers are not viewed, monitored, or followed in any way, shape or form.  \nYour wagers are stored in our system as a means for you and you only to view and review your day activity only. If required, we can follow up a wager at your request for the purposes of Tech Support. Aside from this, the data is not viewed by anyone.\n\n# Data Transmission, Errors and Liability\n\nAlthough the BetHub has been used and tested thoroughly we cannot guarantee that the wagering process will be error free during the course of the submission process. As such it is agreed and acknowledged that any user of the BetHub API and website will release any beneficiary/owner of the BetHub site, to the fullest extent possible by law, from any and all claims for loss or damage sustained by the user.\n\n# Tech Support\n\nAny general questions or tech support question should be directed to Hub Tech at [hub@bethub.com.au](https://mailto:hub@bethub.com.au)\n\nThere is also a slack channel available for live communications. Your BetHub contact would have provided you with your allocated details.\n\n# Native Bet Type Strings/Formats\n\nFor users who have systems implemented already and consider moving/porting to BetHub format too much work, we are happy to undertake the process of providing an endpoint with your preferred format.\n\nThis scope of works still needs to be done but we envisage we would provide different endpoints such as :\n\n1. Those on Tabcorp DAPI/Tab Studio [https://api.bethub.com.au/wagering/dapi/](https://api.bethub.com.au/wagering/dapi/)\n2. Those using the betstream/batch betting function through Tabcorp site [https://api.bethub.com.au/betstream](https://api.bethub.com.au/betstream)\n    \n\nThis means that your actual wagering will remain relatively unchanged and BetHub will take care of the conversions for you under the hood.\n\nPlease contact Hub Tech at [hub@bethub.com.au](https://mailto:hub@bethub.com.au) if this is your preferred option.\n\nPlease note though, it would be the preferred option to port to BetHub format. As more Totes come online to our system, the advantage of porting becomes clear. You will NOT have to make any code changes to wager into a completely separate Tote.\n\n# Base URL\n\nThe base URL for all BetHub calls is\n\n```\nhttps://api.bethub.com.au/\n\n ```\n\nThe format for all BetHub API calls is\n\n```\nhttps://api.bethub.com.au/{service}/{version}\n\n ```\n\n# Open API & Swagger\n\nThe BetHub API supports OpenAPI specification. In addition to the documentation you can also access swagger endpoints for live interaction with BetHub.\n\n[Authentication](https://api.bethub.com.au/auth/swagger/index.html)\n\n[Accounts](https://api.bethub.com.au/accounts/swagger/index.html)\n\n[Informational Data](https://api.bethub.com.au/data/swagger/index.html)\n\n**Wagering**\n\nWagering is split into 3 main categories.\n\n1. Wagering - This is the actual bet submissions\n2. Wagers - Retrieves the details of a specific betfile by providing a **betId**\n3. WagerStream - Retrieves a running list of the latest processed submissions through the BetHub\n    \n\n[Wagering](https://api.bethub.com.au/wagering/swagger/index.html)\n\n[Wagers](https://api.bethub.com.au/wagers/swagger/index.html)\n\n[WagerStream](https://api.bethub.com.au/wagerstream/swagger/index.html)\n\n# Wagering Architecture\n\nIn the previous section you could see that wagering was broken up into several pieces. This is because BetHub Wagering has been built on an event driven architecture.\n\nAs an example, the Wagering/BukPayload call will only return you a **Bet Identifier** and a **ProcessingResponse** rather than an instant success/failure/balance response. This is because once it enters the BetHub ecosystem, the Hub must perform a significant amount of work internally to route and process your bets from the sending point, to its final destination. This would lock up your calls for too long.\n\nAs such, you use the **wagerstream** service call to view the summarised processing responses as they come back from the external providers back into the BetHub ecosystem and the **Bet Identifier** you receive can be used to look up specific bet file details with the **wagers** service call.\n\n# Confidentiality\n\nBetHub has been purpose built for a very small and exclusive user base with a high level of discretion desired among end users. Please, keep the API and its existence confidential.\n\n# Trading Dates\n\nBetHub operates on the concept of \"Trading Dates\" where each provider is tied into the home tote that is being wagered into.\n\nA Trading Date begins approximately 7am and finishes at approximately 5am the following morning. Therefore, if you are searching for a competition/event that starts at 3am the following morning at 10am on the current day, it is part of the same trading date.\n\nThis keeps in line with each Tote having a \"dark period\" for end of day functions and ensures consistency in daily meeting lists.\n\n# Getting Started\n\n1. BetHub authorised account details (username & password). These will be provided to you by your BetHub contact. If required, you may also be provided an email address & password to add a layer of anonymity between BetHub and yourself.\n2. Wagering account details in the form of a Hub ProviderId and a Hub Account number.\n    \n\n# Payload Limits\n\nPlease note that the maximum payload you can send is 10485760 bytes. You will receive a 413 Payload Too Large message if your payload exceeds this.\n\n# Changelog\n\n**14 May 2020**\n\nAccounts API has been added.\n\nRetrieve a list of your authorised accounts and data providers.\n\n```\nhttps://api.bethub.com.au/accounts/v1/providers\n\n ```\n\nNew Models have been added:\n\n```\npublic class Providers\npublic class AccountInfo\npublic class ProviderInfo\n\n ```\n\nSee [\"Data Models\"](#data-models)\n\nNew Error Messages have been added:\n\n| Error Messages |\n| --- |\n| Provider Not Authorised |\n| Account Not Authorised |\n| Invalid Date Identifier |\n| Account Mismatch |\n\nSee [\"Hub Models (Static Data)\"](#hub-models-static-data)\n\n# Hub Models (Static Data)\n\nParameters used to distinguish providers/agencies/bets are known as \"Identifiers\" in the BetHub system. You will need to be familiar with the following Identifiers to successfully send payloads throug BetHub and interrogate Competitions data.\n\n**EventTypes**\n\n| EventType |\n| --- |\n| HORSE RACING |\n| GREYHOUND RACING |\n| TROT RACING |\n\n**Identifiers**\n\n| Identifier | Description |\n| --- | --- |\n| CompetitionId | The \"Meeting Code\" of the venue |\n| EventId | The \"Event Id\" of a race. Often it is the same as CompetitionId |\n| EventIdAlt | Alternate EventId when EventId above is omitted. BetHub will try automap under the hood |\n| Date | The date of the meeting, in ISO8601 format \"YYYY-MM-DD\" |\n| EventType | Populated with a value from the EventType table above |\n| BetId | when calling /wagers this is a Hub generated id specific to the bet file. NOT unique across the system |\n\n**BetTypes**\n\n| BetType |\n| --- |\n| Win |\n| Place |\n| Show |\n| Quinella |\n| Exacta |\n| Trifecta |\n| First Four |\n| Running Double |\n| Extra Double |\n| Daily Double |\n| Duet |\n| Pick 3 |\n| Pick 4 |\n| Pick 5 |\n| Pick 6 |\n| Pick 7 |\n| Pick 8 |\n| Pick 9 |\n| Pick 10 |\n| Pick 11 |\n| Pick 12 |\n| Pick 13 |\n| Pick 14 |\n| Pick 15 |\n| Trio |\n| Double Trio |\n| Triple Trio |\n| Place Pot |\n| Unknown |\n\n**ProcessingResponse (on wagering/bulkpayload or wagering/batch/bulkpayload calls)**\n\n| ProcessingResponse |\n| --- |\n| Bet Request Sent |\n| No Hub |\n| Failed |\n| Request Logging Failed |\n| Unknown |\n\nBetHub backend is built on a high availability and robust backend. Ideally, if you have anything other than a \"Bet Request Sent\" response, you should contact Hub Tech on [hub@bethub.com.au](https://mailto:hub@bethub.com.au)\n\nThe processing responses will also have errors associated with them, which are listed below.\n\n**FailedBets (on wagering/bulkpayload or wagering/batch/bulkpayload calls)**\n\nSame as above, you should contact Hub Tech if you are getting errored out.\n\n| Reasons |\n| --- |\n| Hub Id Error |\n| User Id Error |\n| Error logged. Contact Hub Tech |\n| Provider Not Authorised |\n| Account Not Authorised |\n| Invalid Date Identifier |\n| Account Mismatch |\n\n**ProcessingResponse (on /wagers and /wagerstream calls)**\n\n| Reason | Description |\n| --- | --- |\n| Success | All wagers succeeded |\n| Failed | All wagers failed |\n| Partialled | Mix of successful and failed bets. Eg - Scratching in selections |\n\n**Reasons (on /wagers and /wagerstream calls)**\n\n| Reasons |\n| --- |\n| Account Balance |\n| Account Initialisation |\n| Betting Closed |\n| Betting Suspended |\n| Bet Request Not Allowed |\n| Duplicate Runner |\n| Invalid Bet Size |\n| Invalid Bet String |\n| Invalid Bet Type |\n| Invalid Meeting |\n| Invalid Pool |\n| Invalid Race |\n| Invalid Runner Combination |\n| No Service |\n| Pool Closed |\n| Race Closed |\n| Runner Count |\n| Runner Scratched |\n| Runner Not Available |\n| Timeout |\n| Unknown |\n\n# Provider 6 & 7\n\n**Provider Details**\n\n| Provider # | Agency | Currency |\n| --- | --- | --- |\n| 6 | Tabcorp VIC | AUD |\n| 7 | Tabcorp NSW | AUD |\n\n**Bet Type Mappings**\n\nBelow are listed the Tabcorp bet types and the applicable mappings back to the BetHub system that aren't a 1:1 match from the table above. When wagering on the Tabcorp types below, you will need send the following in BetHub format.\n\n| Tabcorp Vic/Nsw | BetHub |\n| --- | --- |\n| Quadrella | Pick 4 |\n| Big 6 | Pick 6 |\n\n**Bet Spend per line**\n\nProviders 6 & 7 bet lines require you to submit the spend per combo and NEVER a total spend per line (see below)\n\n**Bet Minimums**\n\nBet minimums are the same for all bet types except Trifecta, First Four, Pick 4 (Quadrella) and Pick 6 (Big 6) when wagering through Providers 6 & 7. The remaining bet types remain the same as the host tote (Tabcorp).\n\nThe minimum bet, per combo is 1 cent (0.01) for these bet types).\n\n**Fractional/Flex Wagering**\n\n_Providers 6 & 7 DO NOT SUPPORT FRACTIONAL/FLEXI wagering._\n\n_If you submit a wager to BetHub AND you would normally flexi bet, WITHOUT changing your bet amount, the total spend will be on a PER COMBO basis._\n\nThe following 50 combo Quadrella bet line at 50 cent flexi:\n\n**1/1,2/1,2,3,4,5/1,2,3,4,5 Would actually yield a total spend of $25 and not 50 cents.**\n\n_In this instance you would need to alter your bet line spend to 1c/.01_\n\nAgain, so it is crystal clear and there are no shocks -\n\n_**If you Flexi Bet through Tabcorp Systems currently, you will need to change your bet lines to a spend per combo and not spend per line for Trifecta, First Four, Quadrella and Big 6 bet types.**_\n\nA bet to 1c would look like the following:\n\n```\n{\n      \"BetType\": \"Trifecta\",\n      \"Amount\": 0.01,\n      \"Flexi\": false,\n      \"Selections\": {\n        \"1\": [\n          1\n        ],\n        \"2\": [\n          2\n        ],\n         \"3\": [\n          3\n        ]\n      }\n    }\n\n ```\n\n**Large Batches**\n\nFor wagering profiles that dictate submissions of large batches, this is not an issue from a technical standpoint through BetHub. Providers 6 & 7 prefer to have files that are not greater than 1000 bet lines in a batch. If your batches exceed 1000 then BetHub split up your payload internally for you, and submits each batch under the hood, then reconstitutes the responses back to the singular BetId generated.\n\n**Meeting Codes/EventIds**\n\nIf you have issues mapping MeetCodes into BetHub (due to venue name mismatch etc.), you can omit the EventId Identifier from your payload and instead submit a \"EventIdAlt\" Identifier.\n\nThe EventIdAlt Identifier's Id is the meeting code used by the Tabcorp Batch Betting. This is the 2 letter meetcode (SellCode) and not the 3 letter meetcode. Eg Flemington would be MR and not FLM etc.\n\nIf EventId is omitted then the BetHub internals will attempt to auto match the EventIdAlt with the correct provider code. You must have one or the other - EventId filled with the ITSP code, or EventIdAlt populated with the Tabcorp 2 letter SellCode. If for some reason you have both Identifiers populated, EventId will be used so ensure it is correct/not null/empty.\n\nYou may also choose to omit the \"EventType\" and \"Date\" Identifiers in which case BetHub will perform those necessary workings behind the scenes.\n\nThe tradeoff is extra processing overhead as BetHub needs to perform the extra tasks. Although the overhead is not large, it may be noticeable depending on your wagering profile.\n\nA cutdwon Bet Model, with EventId,Date,CompetitionId,EventType all ommitted would look like:\n\n```\n{\n  \"Identifiers\": {\n        \"EventIdAlt\": {\n          \"Type\": \"EventIdAlt\",\n          \"Id\": \"SR\"\n        },\n    \"EventNumber\": {\n          \"Type\": \"EventNumber\",\n          \"Id\": \"1\"\n        }\n  },\n  \"Bets\": [\n    {\n      \"BetType\": \"Exacta\",\n      \"Amount\": 6,\n      \"Flexi\": false,\n      \"Selections\": {\n        \"1\": [\n          1\n        ],\n        \"2\": [\n          3\n        ]\n      }\n    },\n    {\n      \"BetType\": \"Trifecta\",\n      \"Amount\": 0.1,\n      \"Flexi\": false,\n      \"Selections\": {\n        \"1\": [\n          1,2\n        ],\n        \"2\": [\n          3,4,5\n        ],\n        \"3\": [\n          6,7\n        ]\n      }\n    }\n  ]\n}\n\n ```\n\n**Reporting**\n\nProviders 6&7 do not currently support intra-day reporting. BetHub will be looking at providing end of day reporting in some capacity very soon.\n\n**Non Straight Wagers - Boxing/Rovers**\n\nNon Straight wagers are currently NOT supported. Please advise if you wager on these types.\n\nThis includes the combined \"Win Place\" bet type.\n\n# Data Models\n\nYou can procure the models throught the swagger Url's in the language of your choice, but here are the models required. This might be a quicker path to get up and running.\n\n**Authentication**\n\n```\npublic class Auth\n{\n    public string USERNAME { get; set; }\n    public string PASSWORD { get; set; }\n}\n\n ```\n\n**Identifiers**\n\n```\npublic class Identifier\n{\n    public string Id { get; set;}\n    public string Type { get; set; }\n}\n\n ```\n\nWhere:\n\nType is one of the [listed Identifiers](#hub-models-static-data)\n\n**Bet (Request Model)**\n\n```\npublic class Bet\n{\n    public decimal Amount { get; set; }\n    public string BetType { get; set; }\n    public SortedList<string, Identifier> Identifiers { get; set; }\n    public SortedList<int, SortedSet<int>> Selections { get; set; }\n}\n\n ```\n\nWhere:\n\n[BetType](#hub-models-static-data) is one of the listed types.\n\nIdentifiers is a Key/Value Where the Key is usually the same type as Identifiers.Type. This has been done as a means of speeding up the wagering process internally through BetHub.\n\nIf the payloads you deliver are all bets on the same race, then it is suggested to NOT populate the Identifiers on a per bet basis and populate the Identifiers required in the BulkBetting model instead. This keeps the payload sizes down, especially if wagering in the thousands of bet lines.\n\nSelections is a Key/Value structure where the Key is the \"Position\" or \"Leg\" and each of the values is a list of selctions you want to wager on in that position/leg.\n\n**Bulk Payload (Request Model)**\n\n```\npublic class BulkBetting\n{\n     public List<Bet> Bets { get; set; }\n     public SortedList<string, Identifier> Identifiers { get; set; }\n}\n\n ```\n\n**Competition (Response Model)**\n\n```\npublic class Competition\n{\n    public DateTime CompetitionDate { get; set; }\n    public string CompetitionName { get; set; }\n    public string CompetitionType { get; set; }\n    public List<Identifier> Identifiers { get; set; }\n}\n\n ```\n\nWhere:\n\nCompetitionDate is returned in DateTime format, but as a [\"Trading Date\"](#trading-dates)\n\nCompetitionName is the venue/meeting\n\nCompetitionType is one of the [EventTypes](#hub-models-static-data)\n\n[Identifiers](#hub-models-static-data) is a list of Identifiers on a per provider basis (Meet Codes etc.)\n\n**CompetitionsFilter (Request Model)**\n\n```\npublic class CompetitionsFilter\n{\n    public Hashset<int> Providers { get; set; }\n    public List<string> EventTypes { get; set; }\n    public string Date {get; set;}\n    public int? Range { get; set; }\n}\n\n ```\n\nWhere:\n\nYour available providers will be supplied as part of your startup package.\n\nEventTypes are from the [provided list of static types](#hub-models-static-data)\n\nDate is a string in ISO8601 format \"YYYY-MM-DD\" (If Date is not provided, BetHub automatically returns today's [\"Trading Date\"](#trading-dates)\n\nRange is maximum number of returned results (Default is 150 if not provided)\n\n**WagerStreamFilter (Request Model)**\n\n```\npublic class WagerStreamFilter\n{\n    public Hashset<int> Providers { get; set; }\n    public List<string> EventTypes { get; set; }\n    public string Date {get; set;}\n    public int? Range { get; set; }\n}\n\n ```\n\nWhere:\n\nYour available providers will be supplied as part of your startup package.\n\nEventTypes are from the [provided list of static types](#hub-models-static-data)\n\nDate is a string in ISO8601 format \"YYYY-MM-DD\" (If Date is not provided, BetHub automatically returns today's [\"Trading Date\"](#trading-dates)\n\nRange is maximum number of returned results (Default is 150 if not provided)\n\n**FailedBets (Response Model)**\n\n```\npublic class FailedBets\n{\n    public string Reason { get; set; }\n    public int Count { get; set; }\n}\n\n ```\n\n**BettingResponseSummary (Response Model)**\n\n```\npublic class BettingResponseSummary\n{\n    public string ProcessingResponse { get; set; }\n    public string BetIdentifier { get; set; }\n    public decimal? OpeningBalance { get; set; }\n    public decimal? ClosingBalance { get; set; }\n    public int TotalBets { get; set; }\n    public int SuccessfulBets { get; set; }\n    public int FailedBets { get; set; }\n    public decimal? BetCost { get; set; }\n    public List<FailedBets> Failures { get; set; }\n}\n\n ```\n\n**Providers (Response Model)**\n\n```\npublic class Providers\n{\n    public HashSet<int> Data  { get; set; }\n    public List<AccountInfo> Accounts { get; set; }\n    public List<ProviderInfo> ProviderInfo { get; set; } \n}\n\n ```\n\n**AccountInfo (Response Model)**\n\n```\npublic class AccountInfo\n{\n    public int Account  { get; set; }\n    public string Alias { get; set; }\n    public int Provider { get; set; }\n}\n\n ```\n\n**ProviderInfo (Response Model)**\n\n```\npublic class ProviderInfo\n{\n    public int Id { get; set; }\n    public string Currency { get; set; }\n    public string Alias { get; set; }\n}\n\n ```","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"4295137","team":891064,"collectionId":"ecd7d975-5301-4dd2-beca-5795cb39197c","publishedId":"SzYZ1eSs","public":true,"publicUrl":"https://apidocs.bethub.com.au","privateUrl":"https://go.postman.co/documentation/4295137-ecd7d975-5301-4dd2-beca-5795cb39197c","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"}}]}},"version":"8.10.1","publishDate":"2023-10-24T22:59:51.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[{"name":"Doc","id":"f5755752-04e1-474f-accd-113eab527310","owner":"4295137","values":[{"key":"username","value":"username","enabled":true},{"key":"password","value":"password","enabled":true},{"key":"providerId","value":"providerId","enabled":true},{"key":"account","value":"account","enabled":true},{"key":"betId","value":"betId","enabled":true}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/9985a4f1fcde84b390e313acc3afb3a4af4c352bdbc3ebdb7b66fef29317a3af","favicon":"https://bethub.com.au/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"Doc","value":"4295137-f5755752-04e1-474f-accd-113eab527310"}],"canonicalUrl":"https://apidocs.bethub.com.au/view/metadata/SzYZ1eSs"}