Sie betrachten die Dokumentation der Trading-API in der Version v1. Diese Version wird in Kürze nicht mehr unterstützt. Bitte wechseln Sie zur Trading-Api(v4).

Dokumentation der Bitcoin.de Trading-API - v1

Wir empfehlen für die Dokumentation mindestens eine Auflösung von 1024x768 zu verwenden. Bei geringeren Auflösungen können wir eine gute Lesbarkeit leider nicht garantieren.

Request

Allgemeine Informationen zu dem Aufruf (API Call)

Zugangsdaten

Zugangsdaten

API-Key

Der API-Key dient in Kombination mit Ihrem API-Secret zur Authentifizierung und Autorisierung gegenüber der Trading-API.

API-Secret

Ihr API-Secret ist, ähnlich wie Ihr Passwort, streng vertraulich zu behandeln, da jeder, der im Besitz Ihres API-Keys und API-Secrets ist, jede für den jeweiligen API-Key erlaubte API-Funktionalität nutzen kann.

Sofern Anhaltspunkte dafür bestehen, dass einer Ihrer API-Secrets kompromittiert wurde, sollten Sie Ihren API-Key (bzw. Ihre API-Keys) umgehend sperren. Dazu erhalten Sie von uns nach jedem API-Request, dem mindestens eine 15-minüte Pause ohne API-Request vorherging, per E-Mail einen Link zur Sperrung Ihres API-Keys, wobei immer nur der zuletzt versandte Link gültig ist. Alternativ können Sie Ihre API-Keys auch im Login-Bereich in den Einstellungen Ihres Accounts unter 'mein Bitcoin.de' -> 'Trading-API' sperren.

Sie haben die Möglichkeit diese Benachrichtigungen zu deaktivieren. Bitte Beachten Sie, dass durch das Abstellen der E-Mail-Benachrichtigungen eine Sicherheitsfunktionalität deaktiviert wird. Sollte ein Unberechtigter Zugriff auf die API-Daten oder ein Script, das diese Daten nutzt, bekommen, werden Sie nicht mehr über diese Zugriffe per E-Mail informiert.

Zugriffsbeschränkung

Zugriffsbeschränkung

In gewissen Fällen ist es sinnvoll den Zugriff eines API-Keys nur für bestimmte API-Funktionalitäten zu erlauben. Möchten Sie beispielsweise nur das Orderbook abfragen, sollten Sie den Zugriff auf direkte handelsbezogene Funktionen wie das Einstellen von eigenen Angeboten oder das Kaufen/Verkaufen von eingestellten Angeboten untersagen. Ebenfalls ist eine Zugriffsbeschränkung sinnvoll, wenn Sie mit Hilfe einer Drittsoftware (z.B. einer Smartphone-APP) auf die Trading-API zugreifen und in diesem Fall aber nur Ihre eigenen Kontoinformationen auslesen möchten. Sie sollten dem entsprechenden API-Key nur so viel API-Berechtigungen wie nötig gewähren, da andernfalls die Drittsoftware in der Lage wäre, den kompletten API-Funktionsumfang nutzen zu können.

Zusätzlich können Sie den Zugriff für den entsprechenden API-Key auf bestimmte IP-Adressen (v4) beschränken, indem Sie entweder vollständige IP-Adressen (z.B. 206.30.221.95) eintragen oder mit Hilfe von Platzhaltern (*, z.B. 206.30.221.* oder 206.30.*.*) die Freigabe größerer IP-Adressräume gewähren. Erfolgt ein Zugriffsversuch außerhalb dieser Adressbeschränkung wird der Zugriff mit einem HTTP-Statuscode 403 (Forbidden) sowie dem Error-Code 94 beantwortet.

Verschlüsselung

Verschlüsselung

Jeder Request benötigt die folgenden Header:

  • X-API-KEY
  • X-API-NONCE
  • X-API-SIGNATURE

X-API-KEY

Entspricht Ihrem API-Key.

X-API-NONCE

Ein Integer-Wert der bei jedem Request größer sein muss als beim vorherigen Request. Üblicherweise wird hierfür ein Unix-Timestamp verwendet (Vorsicht bei mehreren Abfragen innerhalb derselben Sekunde!).

X-API-SIGNATURE

Die Signatur repräsentiert eine HMAC-SHA256 verschlüsselte Nachricht, welche die HTTP-Methode, die aufzurufende URI, Ihren API-Key, das Nonce, als auch mögliche POST-Parameter beinhaltet und mit Ihrem API-Secret verschlüsselt wird. Es wird die hexadezimale Repräsentation des HMACs in Kleinschreibung benötigt!

Zum Erhalt einer validen Signatur ist es wichtig, dass Sie die Berechnung exakt wie im folgenden PHP-Codebeispiel vornehmen:

$post_parameters = array('type' => 'buy', 'amount' => 5.3);
$concatted_post_parameters = '';
$http_method = 'POST';

if (0 < count($post_parameters))
{
    ksort($post_parameters); // Sort parameters by key ascending

   // Generate URL-encoded query string
   $concatted_post_parameters = http_build_query($post_parameters, '', '&');
}

$hmac_data = implode('#', array($http_method, $uri, $api_key, $nonce, md5($concatted_post_parameters)));
$hmac = hash_hmac('sha256', $hmac_data, $secret);

Signatur-POST-Beispiel

Signatur-POST-Beispiel

Es soll die API-Funktion createTrade mit den folgenden Ausgangswerten durchgeführt werden:

POST-Parameter:
{
    'type'     : 'buy',
    'max_amount' : 5.3,
    'price'   : 255.50
}

api_key:     'MY_API_KEY' // Entspricht dem eigenen API-Key
nonce:       1234567 // Das für den aktuellen Request verwendete Nonce
api_secret:  'MY_API_SECRET' // Entspricht dem eigenen API-Secret
http_method: 'POST'
uri:         'https://api.bitcoin.de/v1/orders'

Schritt 1: Aufsteigendes Sortieren der POST-Parameter anhand ihres Namens¹

{
    'max_amount' : 5.3,
    'price'   : 255.50,
    'type'     : 'buy'
}

Schritt 2: Einen validen URL-encoded Query-String aus den POST-Parametern generieren¹

url_encoded_query_string = 'max_amount=5.3&price=255.5&type=buy'

Schritt 3: md5-Hash über den in Schritt 2 erstellten Query-String der POST-Parameter bilden

post_parameter_md5_hashed_url_encoded_query_string = md5(url_encoded_query_string) // Es wird der MD5-Hash in hexadezimaler Form benötigt
=> '5f4aece1d75c7adfc5ef346216e9bb11'

Schritt 4: Konkatinieren der HMAC-Eingabedaten

hmac_data = http_method+'#'+uri+'#'+api_key+'#'+nonce+'#'+post_parameter_md5_hashed_url_encoded_query_string
=> 'POST#https://api.bitcoin.de/v1/orders#MY_API_KEY#1234567#5f4aece1d75c7adfc5ef346216e9bb11'

Schritt 5: Bilden des eigentlichen sha256-HMACs

hmac = HMAC('sha256', hmac_data, api_secret)
=> 'fd7c4c3af90524af1723bf89773904f87afdeaab2b87161799ee65f864aa9e96'

¹ Sofern keine POST-Parameter vorhanden sind, weil eine API-Methode einen GET- oder DELETE-Request vorschreibt, entfallen die Schritte 1 und 2. Innerhalb von Schritt 3 wird dann lediglich der md5-Hash aus einem Leerstring gebildet. Somit bleibt der md5-Hash innerhalb der Variable post_parameter_md5_hashed_url_encoded_query_string bei GET- und DELETE-Requests konstant. Als Konsequenz kann bei GET- und DELETE-Requests der md5-Hash d41d8cd98f00b204e9800998ecf8427e für Variable post_parameter_md5_hashed_url_encoded_query_string verwendet werden.

Signatur-GET-Beispiel

Signatur-GET-Beispiel

Es soll die API-Funktion showOrderbook mit den folgenden Ausgangswerten durchgeführt werden:

GET-Parameter:
{
    'type'    : 'buy',
    'amount'  : 5.3,
    'price'   : 255.50
}

POST-Parameter:
{
}

api_key:     'MY_API_KEY'    // Entspricht dem eigenen API-Key
nonce:       1234567         // Das für den aktuellen Request verwendete Nonce
api_secret:  'MY_API_SECRET' // Entspricht dem eigenen API-Secret
http_method: 'GET'
uri:         'https://api.bitcoin.de/v1/orders'

Schritt 1: einen validen URL-encoded Query-String aus den GET-Parametern generieren

get_parameter_url_encoded_query_string = 'type=buy&amount=5.3&price=255.5' // Die Reihenfolge der GET-Parameter ist irrelevant

Schritt 2: Erweitern der URI um GET-Parameter

uri = uri+'?'+get_parameter_url_encoded_query_string
=> 'https://api.bitcoin.de/v1/orders?type=buy&amount=5.3&price=255.5'

Schritt 3: md5-Hash der POST-Parameter für die HMAC-Daten erstellen¹

post_parameter_md5_hashed_url_encoded_query_string = md5('');
=> 'd41d8cd98f00b204e9800998ecf8427e'

Schritt 4: Konkatinieren der HMAC-Eingabedaten

hmac_data = http_method+'#'+uri+'#'+api_key+'#'+nonce+'#'+post_parameter_md5_hashed_url_encoded_query_string
=> 'GET#https://api.bitcoin.de/v1/orders?type=buy&amount=5.3&price=255.5#MY_API_KEY#1234567#d41d8cd98f00b204e9800998ecf8427e'

Schritt 5: Bilden des eigentlichen sha256-HMACs

hmac = HMAC('sha256', hmac_data, api_secret)
=> 'd4222390f524969b72ebe817409019067968614ad8ff45c27f203e2755a5042f'

Wichtig: Der zum Berechnen des HMACs genutzte API-Secret ist ähnlich wie Ihr Passwort streng vertraulich zu behandeln.

Credits

Credits

Alle API-Keys eines Bitcoin.de-Accounts teilen sich ein Credit-Kontingent, welches abhängig vom jeweiligen Trust-Level des Accounts auf ein bestimmtes Maximum gedeckelt ist.

Die API-Aufrufe kosten Credits, die sofort vom aktuellen Kontingent abgezogen werden und dieses auch ins Negative laufen lassen können. Befindet sich der User vor einem Aufruf bereits im Negativen, so verdoppeln sich die Kosten eines Aufrufs.

Das Credit-Kontingent wird pro Sekunde, in der keine API-Abfrage gestellt wird, um einen Credit erhöht solange das Credit-Maximum noch nicht erreicht wurde.

Sofern nicht mehr genügend Credits für eine API-Abfrage zur Verfügung stehen oder ein negatives Credit-Kontingent erreicht wurde, erhalten Sie im Response als HTTP-Statuscode 429 (Too many requests) und einen Header namens Retry-After, der die Sekundenanzahl beinhaltet, nach der die aktuelle API-Abfrage (auf die gewünschte API-Funktion) aufgrund ausreichender Credits wieder durchgeführt werden kann.

Sollten Sie trotz bereits negativem Credit-Kontingent und daraus resultierenden 429 (Too many requests) Statuscodes weitere API-Requests stellen, so behalten wir uns vor Ihre API-Zugänge temporär zu sperren, wodurch weitere API-Requests mit einem HTTP-Status 403 (Forbidden) beantwortet werden würden.

Credit-Übersicht

Aufruf Anzahl Credits
showOrderbook 2
createOrder 1
showOrderDetails 2
deleteOrder 2
deleteOrder (instant*) 10
showMyOrders 2
showMyOrderDetails 2
showOrderbookCompact 3
executeTrade 1
showMyTradeDetails 3
showMyTrades 3
showPublicTradeHistory 3
showAccountInfo 2
showRates 3
showAccountLedger 3

*Orders die nicht älter als 60 Sekunden sind.

Response

Allgemeine Informationen zu der Rückgabe (API Response)

Format

General Response Format

JSON

Codes

General HTTP Response Codes

Code Message
200 GET-/ DELETE-Request wurde erfolgreich durchgeführt
201 POST-Request wurde erfolgreich durchgeführt und die neue Ressource angelegt (z.B. Trade)
400 Bad Request
403 Forbidden
404 Angefragte Entität konnte nicht gefunden werden
422 Anfrage konnte nicht erfolgreich durchgeführt werden. Für weitere Gründe bitte die im Response aufgeführten Fehler im Array-Eintrag "errors" untersuchen.
429 Too many requests

Hinweis: Sofern ein Response den Statuscode 200 oder 201 trägt, konnte Ihr korrespondierender Request ohne Fehler abgearbeitet werden. Sollte der Statuscode abweichen, so finden Sie weiterführende Informationen im Eintrag "errors" im Response.

Location-Header im Response

Sofern ein Response den Location-Header beinhaltet, kann der im Header hinterlegte URI verwendet werden, um nähere Infos zur verknüpften Ressource (z.B. eine Order oder einen Trade) zu erhalten.

Globale Werte

Globale Werte im Response

Name Required Type Value Notes
errors true array [{"message":"abc","code":123, "field" => "field_abs"}] Liste mit Error-Meldungen und dazugehörigen Error-Codes.
credits true integer -- Anzahl aktuell verbleibender Credits
maintenance false array array Infos bzgl. Wartungsarbeiten (s. Tabelle "Maintenance-Details"
nonce false integer -- Sofern der "Error-Code 4 (Invalid nonce)" auftritt, wird das letzte gültige Nonce in diesem Feld ausgegeben

Error-Details

Name Required Type Value Notes
message true string -- Infotext
code true string -- Fehlercode
field false string -- Feld, auf den sich der Fehler bezieht.
Error-Codes

Auflistung der Error-Codes

Request

Error-CodeMessage
1Missing header
2Inactive api key
3Invalid api key
4Invalid nonce
5Invalid signature
6Insufficient credits
7Invalid route
8Unkown api action
9Additional agreement not accepted
32Api key banned
33Ip banned
94Ip access restricted
44No kyc full
10No 2 factor authentication
11No beta group user
12Technical reason
13Trading api currently unavailable
14No action permission for api key
15Missing post parameter
16Missing get parameter
17Invalid number
18Number too low
19Number too big
20Too many decimal places
21Invalid boolean value
22Forbidden parameter value
23Invalid min amount
24Invalid datetime format
25Date lower than min date
26Invalid value
27Forbidden value for get parameter
28Forbidden value for post parameter
29Express trade temporarily not available
30End datetime younger than start datetime
31Page greater than last page
34Invalid trading pair

Order

Error-CodeMessage
50Order not found
51Order not possible
52Invalid order type
53Payment option not allowed for type buy
54Cancellation not allowed
55Trading suspended
56Express trade not possible
57No bank account
58Order not possible for trading pair

Trade

Error-CodeMessage
70No active reservation
71Express trade not allowed
72Express trade failure temporary
73Express trade failure
74Invalid trade state
75Trade not found
76Reservation amount insufficient

Fehlerbeispiel

Response mit Fehlerbeispiel

{
    "errors": [
        {
            "message": "Order not found",
            "code": 50,
            "field": "order_id"
        }
    ]
}
Maintenance-Details

Maintenance-Details

Name Required Type Value Notes
message true string -- Infotext
start true string -- Start der Arbeiten (Format: 2015-04-07T12:23:04+02:00 gemäß RFC 3339)
end true string -- Voraussichtliches Ende der Arbeiten (Format: 2015-04-07T12:23:04+02:00 gemäß RFC 3339)

Bankenländerliste

Bankenländerliste

Ländercode ISO 3166-2 Land
AT Österreich
BE Belgien
BG Bulgarien
CH Schweiz
CY Zypern
CZ Tschechische Republik
DE Deutschland
DK Dänemark
EE Estland
ES Spanien
FI Finnland
FR Frankreich
GB Großbritannien
GR Griechenland
HR Kroatien
HU Ungarn
IE Irland
IS Island
IT Italien
LI Liechtenstein
LT Litauen
LU Luxemburg
LV Lettland
MT Malta
MQ Martinique
NL Niederlande
NO Norwegen
PL Polen
PT Portugal
RO Rumänien
SE Schweden
SI Slowenien
SK Slowakei
Handelspaare

Handelspaare

Handelspaar-Kürzel Bezeichnung
btceur BTC / EUR
Kryptowährungen

Kryptowährungen

Kryptowährungen-Kürzel Bezeichnung
btc Bitcoin

Orders

Orders showOrderbook

Orders - showOrderbook

Durchsuchen des Orderbooks nach passenden Angeboten

Credits:2
GET
https://api.bitcoin.de/v1/orders

Parameter

Name Type Values Default Notes
type String

buy

sell

Angebots-Typ.
“buy” liefert Verkaufsangebote , “sell” Kaufangebote

amount
OPTIONAL
Float

Menge der Bitcoins

price
OPTIONAL
Float

Preis pro Bitcoin in Euro.

Entspricht bei "buy" dem maximalen Kaufpreis und bei "sell" dem minimalen Verkaufspreis.

order_requirements_fullfilled
OPTIONAL
Integer

0

Nur Angebote anzeigen, deren Anforderungen ich erfülle (bspw. Legitimationsstatus, Trust-Level, Sitz der Bank, Zahlungsart).

only_kyc_full
OPTIONAL
Integer

0

Nur Angebote von vollständig identifizierten Usern anzeigen.

only_express_orders
OPTIONAL
Integer

1

Nur Angebote anzeigen, die über Express-Handel gehandelt werden können.

only_same_bankgroup
OPTIONAL
Integer

0

Nur Angebote von Handelspartner anzeigen, die ein Bankkonto bei derselben Bankgruppe (BIC-Nummernkreis) wie ich haben.

only_same_bic
OPTIONAL
Integer

0

Nur Angebote von Handelspartnern anzeigen, die ein Bankkonto bei derselben Bank wie ich haben.

seat_of_bank
OPTIONAL
Array

Bankenländerliste

Alle möglichen Länder aus der Tabelle Bankenländerliste

Nur Angebote mit bestimmtem Sitz der Bank anzeigen. (ISO 3166-2). s. Tabelle Bankenländerliste

Response

Success 200
Name Type Value Notes
orders Array

Gefundene Angebote

Orders
Name Type Value Notes
order_id String

ID des Angebots

type String

buy

sell

Typ des Angebots

max_amount Float

Maximal handelbare BTC-Menge

min_amount Float

Mindestens handelbare BTC-Menge

price Float

Preis pro BTC in Euro

max_volume Float

Max. Euro-Volumen der Order

min_volume Float

Min. Euro-Volumen der Order

order_requirements_fullfilled Boolean

Zeigt an, ob das Angebot bedient werden könnte oder nicht (Trust-Level, KYC-Full, Sitz der Bank etc.).

trading_partner_information Array

Infos zum User des Angebots (s. Tabelle Trading Partner Information)

order_requirements Array

Voraussetzungen zum Bedienen des Angebots (s. Tabelle Order Requirements)

Trading-Partner-Information (beziehen sich auf den Ersteller des Angebots)
Name Type Value Notes
username String

User-Name

is_kyc_full Boolean

Vollständig identifizierter User

trust_level String

bronze

silver

gold

platin

Trust-Level

bank_name String

Name der Bank

bic String

BIC der Bank

rating Integer

Prozentualer Anteil an positiven Bewertungen durch die Handelspartner

amount_trades Integer

Anzahl bereits getätigter Trades

Order Requirements
Name Type Value Notes
min_trust_level String

bronze

silver

gold

platin

Mindest-Trust-Levels des Handelspartners

only_kyc_full Boolean

Handelspartner muss vollständig identifiziert sein

seat_of_bank Array

Bankenländerliste

Erlaubte Länder, in denen die Bank des Handelspartners ihren Sitz haben darf (ISO 3166-2) s. Tabelle Bankenländerliste

payment_option Integer

1

2

3

1 => Express-Only
2 => SEPA-Only
3 => Express & SEPA

Success-Response:
HTTP/1.1 200 OK
{
   "orders":{
       "order_id": "A1B2D3",
       "type": "buy",
       "max_amount":0.5,
       "min_amount":0.1,
       "price":230.55,
       "max_volume":115.28,
       "min_volume":23.06,
       "order_requirements_fullfilled":true,
       "trading_partner_information":{
           "username":"bla",
           "is_kyc_full":true,
           "trust_level":"gold",
           "bank_name":"Sparkasse",
           "bic":"HASPDEHHXXX",
           "seat_of_bank":"DE",
           "rating": 99,
           "amount_trades": 52
       },
       "order_requirements":{
           "min_trust_level":"gold",
           "only_kyc_full":true,
           "seat_of_bank":[
               "DE",
               "NL"
           ],
           "payment_option":1,
       }
   },
   "errors":[

   ],
   "credits":12
}

Error

Http-Status 422
Code Note
52

Invalid order type


showOrderDetails

Orders - showOrderDetails

Details zu einem Angebot abrufen

Credits:2
GET
https://api.bitcoin.de/v1/orders/public/details/:order_id

Parameter

Name Type Values Default Notes
order_id String

ID des abzufragenden Angebots

Response

Success 200
Name Type Value Notes
order Array

Gefundenes Angebot

Order
Name Type Value Notes
order_id String

ID des Angebots

type String

buy

sell

Typ des Angebots

max_amount Float

Maximal handelbare Coin-Menge

min_amount Float

Mindestens handelbare Coin-Menge

price Float

Preis pro Coin in Euro

max_volume Float

Max. Euro-Volumen des Angebots

min_volume Float

Min. Euro-Volumen des Angebots

order_requirements_fullfilled Boolean

Zeigt an, ob das Angebot bedient werden könnte oder nicht (Trust-Level, KYC-Full, Sitz der Bank etc.).

trading_partner_information Array

Infos zum User des Angebots (s. Tabelle Trading Partner Information)

order_requirements Array

Voraussetzungen zum Bedienen des Angebots (s. Tabelle Order Requirements)

Trading-Partner-Information (beziehen sich auf den Ersteller des Angebots)
Name Type Value Notes
username String

User-Name

is_kyc_full Boolean

Vollständig identifizierter User

trust_level String

bronze

silver

gold

platin

Trust-Level

bank_name String

Name der Bank

bic String

BIC der Bank

rating Integer

Prozentualer Anteil an positiven Bewertungen durch die Handelspartner

amount_trades Integer

Anzahl bereits getätigter Trades

Order Requirements
Name Type Value Notes
min_trust_level String

bronze

silver

gold

platin

Mindest-Trust-Level des Handelspartners

only_kyc_full Boolean

Handelspartner muss vollständig identifiziert sein

seat_of_bank Array

Bankenländerliste

Erlaubte Länder, in denen die Bank des Handelspartners ihren Sitz haben darf (ISO 3166-2) s. Tabelle Bankenländerliste

payment_option Integer

1

2

3

1 => Express-Only
2 => SEPA-Only
3 => Express & SEPA

Success-Response:
HTTP/1.1 200 OK
{
   "order":{
       "order_id": "A1B2D3",
       "trading_pair":"btceur",
       "type": "buy",
       "max_amount":0.5,
       "min_amount":0.1,
       "price":230.55,
       "max_volume":115.28,
       "min_volume":23.06,
       "order_requirements":{
           "min_trust_level":"gold",
           "only_kyc_full":true,
           "seat_of_bank":[
               "DE",
               "NL"
           ],
           "payment_option":1,
       }
       "trading_partner_information":{
           "username":"mustermann",
           "is_kyc_full":true,
           "trust_level":"gold",
           "bank_name":"Sparkasse",
           "bic":"HASPDEHHXXX",
           "seat_of_bank":"DE",
           "rating": 99,
           "amount_trades": 52
       },

       "order_requirements_fullfilled":true,
   },
   "errors":[

   ],
   "credits":12
}

Error

Http-Status 404
Code Note
50

Order not found


createOrder

Orders - createOrder

Anlegen einer neuen Order

Credits:1
POST
https://api.bitcoin.de/v1/orders

Parameter

Name Type Values Default Notes
type String

buy

sell

max_amount Float

Maximale Menge der zu handelnden Bitcoins

price Float

Preis pro Bitcoin in Euro

min_amount
OPTIONAL
Float

max_amount/2

Mindest-Menge der zu handelnden Bitcoins

end_datetime
OPTIONAL
String

akt. Datum + 5 Tage

Enddatum (mindestens 5 Tage in der Zukunft) des Angebots.
Format gemäß RFC 3339 (Bsp: 2015-01-20T15:00:00+02:00).
Zulässige Werte für die Minuten sind: 00, 15 , 30, 45

new_order_for_remaining_amount
OPTIONAL
Integer

0

Neues Angebot mit Restmenge anlegen, wenn nur eine Teilmenge aus dem Angebot bedient wurde.

min_trust_level
OPTIONAL
String

bronze

silver

gold

platin

Default-Einstellung im User-Profil

Mindest-Trust-Level des Handelspartners

only_kyc_full
OPTIONAL
Integer

0

Handelspartner muss vollständig identifiziert sein.

payment_option
OPTIONAL
Integer

1

2

3

1

Diese Option wirkt sich nur bei type="sell" aus!

1 => Express-Only
2 => SEPA-Only
3 => Express & SEPA

Bei type="buy" ist Ihre Vorgabe unter "Express-Handel-Einstellungen" (bei ausreichender Reservierung!) maßgeblich

seat_of_bank
OPTIONAL
Array

Bankenländerliste

Alle möglichen Länder aus der Tabelle Bankenländerliste

Erlaubte Länder, in denen die Bank des Handelspartners ihren Sitz haben darf (ISO 3166-2)

Response

Success 201
Name Type Value Notes
order_id String

Die ID des angelegten Angebots.

Location-Header

Sofern die Details zu der neu angelegten Order abgerufen werden sollen, kann die hier im Location-Header enthaltene URI verwendet werden, der auf die API-Methode "showMyOrderDetails" der konkreten Order zeigt.

https://bitcoinapi.de/v1/orders/:order_id
Success-Response:
HTTP/1.1 201 Created
{
 "order_id": "A1234BC",
 "errors": [],
 "credits": 8
}

Error

Http-Status 422
Code Note
29

Express trade is temporary not available.

52

Invalid order type

53

payment_option not allowed for order-type "buy"

55

Trading on the marketplace is currently suspended.

71

Express trade not allowed


deleteOrder

Orders - deleteOrder

Löschen einer Order

Credits:2
Credits (instant*):10
*Orders die nicht älter als 60 Sekunden sind.
DELETE
https://api.bitcoin.de/v1/orders/:order_id

Parameter

Name Type Values Default Notes
order_id String

Response

Success-Response:
HTTP/1.1 200 OK
{
 "errors": [],
 "credits": 5
}

Error

Http-Status 403
Code Note
54

Cancellation not allowed anymore

Http-Status 404
Code Note
50

Order not found

Http-Status 422
Code Note
55

Trading on the marketplace is currently suspended.


showMyOrders

Orders - showMyOrders

Abrufen und Filtern meiner Orders

Credits:2
GET
https://api.bitcoin.de/v1/orders/my_own

Parameter

Name Type Values Default Notes
type
OPTIONAL
String

buy

sell

Angebots-Typ

state
OPTIONAL
Integer

-2

-1

0

0

Aktueller Status (s. Tabelle Possible Order-State-Values)

date_start
OPTIONAL
String

Startzeitpunkt, ab dem die Orders zurückgeliefert werden.
Format gemäß RFC 3339 (Bsp: 2015-01-20T15:00:00+02:00).

date_end
OPTIONAL
String

Endzeitpunkt, bis zu dem die Orders zurückgeliefert werden.
Format gemäß RFC 3339 (Bsp: 2015-01-20T15:00:00+02:00).

page
OPTIONAL
Integer

1

Seitenzahl zum Blättern innerhalb der Ergebnisseiten

Response

Success 200
Name Type Value Notes
orders Array

Max. 20 Angebote mit ihren Details (s. Tabelle Order-Details)

page Array

Informationen zu den möglichen Ergebnisseiten (s. Tabelle Page-Details)

Page Details
Name Type Value Notes
current Integer

Aktuell zurückgelieferte Seite

last Integer

Letzte verfügbare Seite zu den Suchkriterien

Success-Response:
HTTP/1.1 200 OK
{
   "orders":
   [
     {
       "order_id': "2EDYNS",
       "type": "sell",
       "max_amount": 0.5,
       "min_amount": 0.2,
       "price": 250.55,
       "max_volume": 125.28,
       "min_volume": 50.11,
       "end_datetime": "2015-01-20T15:00:00+02:00",
       "new_order_for_remaining_amount": true,
       "state": 0,
        "order_requirements":
        {
           "min_trust_level":"silver",
           "only_kyc_full": true,
           "payment_option": 1,
           "seat_of_bank": {"DE", "NL"}
        },
        "created_at": "2015-01-10T15:00:00+02:00"
      },
   ],
   "page": {
       "current": 1,
       "last": 2
   },
   "errors": [],
   "credits": 15
}

Error

Http-Status 404
Code Note
50

Order not found

Http-Status 422
Code Note
31

Page is greater than last page.


showMyOrderDetails

Orders - showMyOrderDetails

Details zu einer meiner Order abrufen

Credits:2
GET
https://api.bitcoin.de/v1/orders/:order_id

Parameter

Name Type Values Default Notes
order_id String

ID des abzufragenden Angebots

Response

Success 200
Name Type Value Notes
order Array

Details zum Angebot (s. Tabelle Order-Details)

Order Details
Name Type Value Notes
order_id String

ID des Angebots

type String

buy

sell

Typ des Angebots

max_amount Float

Maximal zu kaufende/verkaufende BTC-Menge

min_amount Float

Minimal zu kaufende/verkaufende BTC-Menge

price Float

Preis pro BTC in Euro

max_volume Float

Max. Euro-Volumen der Order

min_volume Float

Min. Euro-Volumen der Order

end_datetime String

Ablaufzeitpunkt des Angebots. Format gemäß RFC 3339 (Bsp: 2015-01-20T15:00:00+02:00).

new_order_for_remaining_amount Boolean

Neues Angebot mit Restmenge anlegen, wenn nur eine Teilmenge aus dem Angebot bedient wurde.

state Integer

Aktueller Status (s. Tabelle Possible Order-State-Values)

order_requirements Array

Voraussetzungen zum Bedienen des Angebots (s. Tabelle Order Requirements)

created_at String

Erstellzeitpunkt des Angebots. Format gemäß RFC 3339 (Bsp: 2015-01-20T15:00:00+02:00)

Order requirements
Name Type Value Notes
min_trust_level String

bronze

silver

gold

platin

Mindest-Trust-Levels des Handelspartners

only_kyc_full Boolean

Handelspartner muss vollständig identifiziert sein

seat_of_bank Array

Bankenländerliste

Erlaubte Länder, in denen die Bank des Handelspartners ihren Sitz haben darf (ISO 3166-2)

payment_option Integer

1 => Express-Only
2 => SEPA-Only
3 => Express & SEPA

Location-Header

Hinweis: Sofern das Angebot z.T. oder komplett von einem anderen Marktplatzteilnehmer bedient wurde, wird der Status-Code 301 erfolgen und ein Location-Header mit dem URI im Response übergeben, der auf die API-Methode "showMyTradeDetails" des konkreten Trades zeigt.

https://bitcoinapi.de/v1/trades/:trade_id

Possible Order-State-Values

Code Reason Note
-2 Expired Angebot ist ausgelaufen
-1 Cancelled Angebot wurde abgebrochen
0 Pending Das Angebot ist auf dem Marktplatz verfügbar.
Success-Response:
HTTP/1.1 200 OK
{
   "order":
   {
       "order_id': "2EDYNS",
       "type": "sell",
       "max_amount": 0.5,
       "min_amount": 0.2,
       "price": 250.55,
       "max_volume": 125.28,
       "min_volume": 50.11,
       "end_datetime": "2015-01-20T15:00:00+02:00",
       "new_order_for_remaining_amount": true,
       "state": 0,
       "order_requirements":
        {
           "min_trust_level":"silver",
           "only_kyc_full": true,
           "payment_option": 1,
           "seat_of_bank": {"DE", "NL"}
        },
        "created_at": "2015-01-10T15:00:00+02:00"
   },
   "errors": [],
   "credits": 15
}

Error

Http-Status 404
Code Note
50

Order not found


Trades

Trades executeTrade

Trades - executeTrade

Kaufen/Verkaufen einer konkreten Order

Credits:1
POST
https://api.bitcoin.de/v1/trades/:order_id

Parameter

Name Type Values Default Notes
order_id String

ID des Angebots

type String

buy

sell

Angebots-Typ

amount Float

Menge der Bitcoins

Response

Location-Header

Sofern die Details zu dem neu angelegten Trade abgerufen werden sollen, kann der hier im Location-Header enthaltene URI verwendet werden, die auf die API-Methode "showMyTradeDetails" des konkreten Trades zeigt.

https://bitcoinapi.de/v1/trades/:trade_id
Success-Response:
HTTP/1.1 201 OK
{
 "errors": [],
 "credits": 8
}

Error

Http-Status 404
Code Note
50

Order not found

Http-Status 422
Code Note
29

Express trade is temporary not available.

55

Trading on the marketplace is currently suspended.

51

Order not possible

52

Invalid order type

70

There is no active reservation

71

Express trade not allowed

73

The transfer via Fidor has failed due to technical reasons. We will repeat the transfer in about 5 minutes.

76

The reserved balance is not sufficient.


showMyTrades

Trades - showMyTrades

Abrufen und Filtern meiner getätigten Trades

Credits:3
GET
https://api.bitcoin.de/v1/trades

Parameter

Name Type Values Default Notes
type
OPTIONAL
String

buy

sell

Trade-Typ

state
OPTIONAL
Integer

-1

0

1

0

Aktueller Trade-Status (s. Tabelle Possible Trade-State-Values)

date_start
OPTIONAL
String

Startzeitpunkt, ab dem Trades zurückgeliefert werden.
Format gemäß RFC 3339 (Bsp: 2015-01-20T15:00:00+02:00).

date_end
OPTIONAL
String

Endzeitpunkt, bis zu dem Trades zurückgeliefert werden.
Format gemäß RFC 3339 (Bsp: 2015-01-20T15:00:00+02:00).

page
OPTIONAL
Integer

1

Seitenzahl zum Blättern innerhalb der Ergebnisseiten

Response

Success 200
Name Type Value Notes
trades Array

Max. 20 Trades mit ihren Details (s. Tabelle Trade-Details)

page Array

Informationen zu den möglichen Ergebnisseiten (s. Tabelle Page-Details)

Page Details
Name Type Value Notes
current Integer

Aktuell zurückgelieferte Seite

last Integer

Letzte verfügbare Seite zu den Suchkriterien

Success-Response:
HTTP/1.1 200 OK
{
   "trades":
   [
     {
       "trade_id': "2EDYNS",
       "type": "sell",
       "amount": 0.5,
       "price": 250.55,
       "volume": 125.28,
       "fee_eur": 0.6,
       "fee_btc": 0.0025,
       "fee_currency": 0.0025,
       "new_trade_id_for_remaining_amount": "C4Y8HD",
       "state": 1,
       "my_rating_for_trading_partner": "positive",
       "trading_partner_information":
        {
           "username":"testuser",
           "is_kyc_full": true,
           "bank_name": "sparkasse",
           "bic": "NOL12345",
           "rating": 99,
           "amount_trades": 42,
           "trust_level": "gold",
           "seat_of_bank": "DE"
        },
        "payment_method": 1,
        "created_at": "2015-01-10T15:00:00+02:00",
        "successfully_finished_at": "2015-01-10T15:00:00+02:00"
     },
   ],
   "page": {
       "current": 2,
       "last": 4
   },
   "errors": [],
   "credits": 15
}

Error

Http-Status 422
Code Note
34

Invalid trading_pair

31

Page is greater than last page.


showMyTradeDetails

Trades - showMyTradeDetails

Details zu einem Trade abrufen

Credits:3
GET
https://api.bitcoin.de/v1/trades/:trade_id

Parameter

Name Type Values Default Notes
trade_id String

ID des abzufragenden Trades

Response

Success 200
Name Type Value Notes
trade Array

Details zum Trade (s. Tabelle Trade-Details)

Trade-Details
Name Type Value Notes
trade_id String

ID des Trades

type String

buy

sell

Typ des Trades

amount Float

Gekaufte/verkaufte Coin-Menge

price Float

Preis pro Coin in Euro

volume Float

Euro-Volumen des Trades

fee_eur Float

Gebühr in Euro

fee_btc Float

Gebühr in BTC
(Gebühren-Wert wird nur bei Trades mit dem Handelspaar "btceur" angegeben, andernfalls beträgt der Gebühren-Wert 0)

fee_currency Float

Gebühr in Kryptowährung des jeweiligen Handelspaars

new_order_id_for_remaining_amount
OPTIONAL
String

ID des neuen Angebots, das automatisch für die verbleibende Coin-Menge erstellt wurde.

state Integer

-1

0

1

Aktueller Status (s. Tabelle Possible Trade-State-Values)

my_rating_for_trading_partner String

pending

negative

neutral

positive

Abgegebene Bewertung für den Handelspartner

trading_partner_information Array

Details über den Handelspartner (s. Tabelle Trading Partner Information)

created_at String

Erstellzeitpunkt des Trades. Format gemäß RFC 3339 (Bsp: 2015-01-20T15:00:00+02:00)

successfully_finished_at
OPTIONAL
String

Nur bei Trade-Status 1 (Successful).
Format gemäß RFC 3339 (Bsp: 2015-01-20T15:00:00+02:00)

cancelled_at
OPTIONAL
String

Nur bei Trade-Status -1 (Cancelled).
Format gemäß RFC 3339 (Bsp: 2015-01-20T15:00:00+02:00)

payment_method Integer

1

2

s. Tabelle Possible payment method values

Trading Partner Information
Name Type Value Notes
username String

User-Name

is_kyc_full Boolean

Vollständig identifizierter User

trust_level String

bronze

silver

gold

platin

Trust-Level

bank_name String

Name der Bank

bic String

BIC der Bank

seat_of_bank String

Bankenländerliste

Sitz der Bank als Ländercode in ISO 3166-2

amount_trades Integer

Anzahl bereits getätigter Trades

rating Integer

Prozentualer Anteil an positiven Bewertungen durch die Handelspartner

Possible Trade-State-Values

Code Reason Note
-1 Cancelled Der Trade wurde abgebrochen
0 Pending Der Trade wurde noch nicht erfolgreich abgeschlossen.
1 Successful Der Trade wurde erfolgreich abgeschlossen.

Possible payment method values

Code Reason Note
1 SEPA Der Trade wurde durch eine manuelle SEPA-Überweisung abgewickelt.
2 Express Der Trade wurde als Express-Handel abgewickelt.
Success-Response BTC / EUR:
HTTP/1.1 200 OK
{
   "trade":
   {
       "trade_id': "2EDYNS",
       "type": "sell",
       "amount": 0.5,
       "price": 250.55,
       "volume": 125.28,
       "fee_eur": 0.6,
       "fee_btc": 0.0025,
       "fee_currency": 0.0025,
       "new_trade_id_for_remaining_amount": "C4Y8HD",
       "state": 1,
       "my_rating_for_trading_partner": "positive",
       "trading_partner_information":
        {
           "username":"testuser",
           "is_kyc_full": true,
           "bank_name": "sparkasse",
           "bic": "HASPDEHHXXX",
           "rating": 99,
           "amount_trades": 42,
           "trust_level": "gold",
           "seat_of_bank": "DE"
        },
        "payment_method": 1,
        "created_at": "2015-01-10T15:00:00+02:00",
        "successfully_finished_at": "2015-01-10T15:00:00+02:00"
   },
   "errors": [],
   "credits": 15
}
Success-Response BCH / EUR:
HTTP/1.1 200 OK
{
   "trade":
   {
       "trade_id': "8CDTBC",
       "type": "sell",
       "amount": 0.5,
       "price": 250.55,
       "volume": 125.28,
       "fee_eur": 0.6,
       "fee_btc": 0,
       "fee_currency": 0.0025,
       "new_trade_id_for_remaining_amount": "HLU8XN",
       "state": 1,
       "my_rating_for_trading_partner": "positive",
       "trading_partner_information":
        {
           "username":"testuser",
           "is_kyc_full": true,
           "bank_name": "sparkasse",
           "bic": "HASPDEHHXXX",
           "rating": 99,
           "amount_trades": 42,
           "trust_level": "gold",
           "seat_of_bank": "DE"
        },
        "payment_method": 1,
        "created_at": "2015-01-10T15:00:00+02:00",
        "successfully_finished_at": "2015-01-10T15:00:00+02:00"
   },
   "errors": [],
   "credits": 15
}

Error

Http-Status 404
Code Note
75

Trade not found


Sonstiges

Sonstiges showAccountInfo

Sonstiges - showAccountInfo

Abruf von Account Infos

Credits:2
GET
https://api.bitcoin.de/v1/account

Response

Success 200
Name Type Value Notes
data Array

Account-Infos (s. Tabelle Data)

Data
Name Type Value Notes
btc_balance Array

Infos zur BTC-Balance (s. Tabelle BTC-Balance)

fidor_reservation
OPTIONAL
Array

Infos zur ggfs. vorhandenen Fidor-Reservierung (s. Tabelle Fidor-Reservation)

encrypted_information Array

Verschlüsselte Infos (s. Tabelle Encrypted-Information¹)

BTC-Balance
Name Type Value Notes
total_amount String

Aktuelles BTC-Guthaben

available_amount String

Aktuell verfügbares BTC-Guthaben

reserved_amount String

Aktuell reserviertes BTC-Guthaben

Fidor-Reservation
Name Type Value Notes
total_amount Float

Gesambetrag der Reservierung

available_amount Float

Aktuell verfügbarer Betrag der Reservierung

reserved_at String

Erstelldatum der Reservierung (Format: 2015-04-07T12:23:04+02:00 gemäß RFC 3339

valid_until String

Reservierung gültig bis (Format: 2015-04-07T12:23:04+02:00 gemäß RFC 3339)

Encrypted-Information¹
Name Type Value Notes
bic_short
OPTIONAL
String

Verschlüsselte Bankengruppe aus der BIC (ersten 4 Zeichen)

bic_full
OPTIONAL
String

Verschlüsselte komplette BIC

uid String

Verschlüsselte eigene User-Id

¹Diese Informationen können zum Abgleich von Angebots-Bedingungen genutzt werden, wenn die Websocket-API genutzt wird, um über neue Angebote informiert zu werden (s. Kapitel Websocket-API).

Success-Response:
HTTP/1.1 200 OK
{
 "data":
 {
     "btc_balance":
     {
         "available_amount": "19",
         "reserved_amount":"1.3",
         "total_amount": "20.3"
     },
     "fidor_reservation":
     {
         "total_amount": 50.3,
         "available_amount":10.3,
         "reserved_at": "2015-01-15T02:01:25+02:00",
         "valid_until": "2015-01-20T15:00:00+02:00"
     },
     "encrypted_information":
     {
         "bic_short": "sdf..",
         "bic_full": "sdfiojf..",
         "uid": "Fijsdf3lksjdf.."
     },
 },
 "errors": [],
 "credits": 12
}

showOrderbookCompact

Sonstiges - showOrderbookCompact

Kauf- und Verkaufsangebote (bids und asks) in kompakter Form.

Credits:3
GET
https://api.bitcoin.de/v1/orders/compact

Response

Success 200
Name Type Value Notes
orders Array

Array mit Bids / Asks

Orders
Name Type Value Notes
bids Array

Auflistung der Bids

asks Array

Auflistung der Asks

Bids
Name Type Value Notes
price Float

Preis pro Bitcoin (Euro)

amount Float

Anzahl BTC

Asks
Name Type Value Notes
price Float

Preis pro Bitcoin (Euro)

amount Float

Anzahl BTC

Success-Response:
HTTP/1.1 200 OK
{
     "orders":{
         "bids": [
             {
                 "price":200,
                 "amount":0.2
             },
             {
                 "price":205,
                 "amount":1
             },
         ],
         "asks": [
             {
                 "price":250,
                 "amount":0.2
             },
             {
                 "price":265.07,
                 "amount":0.3102676
             },
          ]
     },

     "errors":[],
     "credits":19
}

showPublicTradeHistory

Sonstiges - showPublicTradeHistory

Erfolgreich abgeschlossene Trades. Wenn kein Parameter gesetzt wird, werden alle erfolgreich abgeschlossenen Trades der letzten 7 Tage zurückgeliefert. Die Liste ist absteigend nach Datum sortiert.

Credits:3
GET
https://api.bitcoin.de/v1/trades/history

Parameter

Name Type Values Default Notes
since_tid
OPTIONAL
Integer

inkrementelle Daten ab einer bestimmten TID anzeigen.

Response

Success 200
Name Type Value Notes
trades Array

Erfolgreich abgeschlossene Trades

Trades
Name Type Value Notes
0 Array

s. Tabelle Trade Informationen

Trade Informationen
Name Type Value Notes
date Integer

Datum (Unixtimestamp)

price Float

Preis pro Bitcoin (Euro)

amount Float

Anzahl BTC

tid Integer

Eindeutige ID

Success-Response:
HTTP/1.1 200 OK
{
     "trades":[
         {
             "date":1435922625,
             "price":230,
             "amount":"2.50000000",
             "tid":1252020
         },
         {
             "date":1435922655,
             "price":200.1,
             "amount":"0.60000000",
             "tid":1252023
         }
     ],
     "errors":[],
     "credits":19
}

showRates

Sonstiges - showRates

Abfrage des gewichteten Durchschnittskurses der letzten 3 Stunden und der letzten 12 Stunden.

Credits:3
GET
https://api.bitcoin.de/v1/rates

Response

Success 200
Name Type Value Notes
rates Array

Rate-Infos (s. Tabelle Rates)

Rates
Name Type Value Notes
rate_weighted String

gibt in der Regel den gewichtete Durchschnittskurs der letzten 3 Stunden an. Wird eine kritische Masse an Trades in den letzten 3 Stunden unterschritten, dann wird hier der 12 Stunden Durchschnitt zurückgegeben.

rate_weighted_3h String

Durchschnittskurs der letzten 3 Stunden

rate_weighted_12h String

Durchschnittskurs der letzten 12 Stunden

Success-Response:
HTTP/1.1 200 OK
{
    "rates":{
          "rate_weighted":"257.3999269",
          "rate_weighted_3h":"258.93994247",
          "rate_weighted_12h":"255.30363219"
     },
     "errors":[],
     "credits":19
}

showAccountLedger

Sonstiges - showAccountLedger

Abruf des Kontoauszuges
Bitte beachten Sie, dass im Kontoauzug nur Transaktionen aufgelistet werden, die bis zum Vortag ausgeführt wurden. Transaktionen von heute sind also erst morgen im Kontoauszug aufgeführt.

Credits:3
GET
https://api.bitcoin.de/v1/account/ledger

Parameter

Name Type Values Default Notes
type
OPTIONAL
String

all

buy

sell

inpayment

payout

affiliate

welcome_btc

buy_yubikey

buy_goldshop

buy_diamondshop

kickback

outgoing_fee_voluntary

all

Positions-Typ

datetime_start
OPTIONAL
String

akt. Datum -10 Tage

Buchungsdatum, ab dem die Positionen aufgelistet werden.
Format gemäß RFC 3339 (Bsp: 2015-01-20T15:00:00+02:00).

datetime_end
OPTIONAL
String

akt. Datum
-1 Tag

Buchungsdatum, bis zu dem die Positionen aufgelistet werden.
Format gemäß RFC 3339 (Bsp: 2015-01-20T15:00:00+02:00).

page
OPTIONAL
Integer

1

Seitenzahl zum Blättern innerhalb der Ergebnisseiten

Response

Success 200
Name Type Value Notes
account_ledger Array

Details zur Position (s. Tabelle Details zur Position)

page Array

Informationen zu den möglichen Ergebnisseiten (s. Tabelle Page-Details)

Details zur Position
Name Type Value Notes
date String

Buchungsdatum (Format: 2015-04-07T12:23:04+02:00 gemäß RFC 3339)

type String

Typ der Position

reference String

Referenz zu der Position (trade_id bei buy/sell oder txid bei einer Einzahlung/Auszahlung)

trade
OPTIONAL
Array

Tradedetails (nur bei Typ sell/buy) (s. Tabelle Tradedetails)

cashflow String

Zu- / Abgang

balance String

Kontostand

Tradedetails
Name Type Value Notes
trade_id String

ID des Trades

price String

Preis pro Bitcoin in Euro

btc Array

BTC-Summen (s. Tabelle BTC-Summen)

euro Array

Euro-Summen (s. Tabelle Euro-Summen)

BTC-Summen
Name Type Value Notes
before_fee String

Summe in BTC vor Gebühr

after_fee String

Summe in BTC nach Gebühr

Euro-Summen
Name Type Value Notes
before_fee String

Summe in Euro vor Gebühr

after_fee String

Summe in Euro nach Gebühr

Page Details
Name Type Value Notes
current Integer

Aktuell zurückgelieferte Seite

last Integer

Letzte verfügbare Seite zu den Suchkriterien

Success-Response:
HTTP/1.1 200 OK
{
   "account_ledger":[
         {
             "date":"2015-08-13T10:20:27+02:00",
             "type":"sell",
             "reference":"NVP39U",
             "trade":{
                     "trade_id":"NVP39U",
                     "price":"243.77",
                     "btc":{
                             "before_fee":"1.71600000",
                             "after_fee":"1.69884000"
                      },
                     "euro":{
                             "before_fee":"418,31",
                             "after_fee":"414,13"
                     }
             },
             "cashflow":"-1.71600000",
             "balance":"3.00019794"
         },
         {
             "date":"2015-08-12T13:05:02+02:00",
             "type":"payout",
             "reference":"dqwdqwdwqwq4dqw4d5qd45qd45qwd4qw5df45g4r5g4trh4r5j5j4tz5j4tbc",
             "cashflow":"-0.10000000",
             "balance":"4.71619794"
         },
         {
             "date":"2015-08-12T12:30:01+02:00",
             "type":"payout",
             "reference":"bdgwflwguwgr884t34g4g555h4zr5j4fh5j48rg4s5bx2nt4jr5jr45j4r5j4",
             "cashflow":"-1.91894200",
             "balance":"4.81619794"
         },
         {
             "date":"2015-08-10T12:12:41+02:00",
             "type":"buy",
             "reference":"HCRBEL",
             "trade":{
                     "trade_id":"HCRBEL",
                     "price":"244",
                     "btc":{
                             "before_fee":"0.55676560",
                             "after_fee":"0.55119794"
                     },
                     "euro":{
                             "before_fee":"135,85",
                             "after_fee":"134,49"
                     }
             },
             "cashflow":"0.55119794",
             "balance":"6.73513994"
         }
   ],
   "page":{
         "current":1,
         "last":1
   },
   "errors":[

   ],
   "credits":9
}

Websocket - API

Websocket-API

Sofern Sie möglichst zeitnah auf Änderungen im Orderbook reagieren möchten, ohne sekündlich das Orderbook “manuell” abfragen zu müssen, können Sie unsere Websocket-API verwenden, die Sie komfortabel bei jeder Änderung am Orderbook informiert.

Host: https://ws.bitcoin.de
Port: 443

Aufgrund möglicher Software-Inkompatibilitäten empfehlen wir Ihnen für die Nutzung unserer Websocket-API die Socket.io-Client-Bibliothek in der Version 0.9.16.

Folgende Events mit den entsprechenden relevanten Feldern stehen zur Verfügung:

remove_order

remove_order

Dieses Event wird ausgelöst, sobald ein Angebot nicht mehr auf dem Marktplatz verfügbar ist.

Name Type Values Notes
order_id* string -- Id des nicht mehr handelbaren Angebots
order_type string {buy, sell} Angebots-Typ. “buy” entspricht einem Kaufangebot und “sell” einem Verkaufsangebot.
amount**
OPTIONAL
float -- Menge der gehandelten BTC
price**
OPTIONAL
float -- Preis pro BTC in Euro
trading_pair string s. Tabelle Handelspaarliste Handelspaar s. Tabelle Handelspaarliste

*Sofern Sie darüber informiert werden möchten, wenn eines Ihrer Angebote bedient wurde, können Sie die übermittelte order_id mit einer Liste Ihrer verfügbaren Angebote abgleichen, die sie zuvor über die API-Methode showMyOrders abgerufen haben.

** Diese beiden Felder sind nur im remove_order-Event vorhanden, sofern ein Trade zustande kam. Wenn ein Angebot frühzeitig abgebrochen wurde, werden diese beiden Felder somit nicht übermittelt.

add_order

add_order

Dieses Event wird ausgelöst, sobald ein Angebot auf dem Marktplatz hinzugefügt wurde.

Name Type Values Notes
order_id string -- Id des nicht mehr handelbaren Angebots
order_type string {buy, sell} Angebots-Typ. “buy” entspricht einem Kaufangebot und “sell” einem Verkaufsangebot.
amount float -- Menge der BTC
min_amount float -- Mindestmenge an BTC
price float -- Preis pro BTC in Euro
min_trust_level string {bronze, silver, gold} Mindest-Trust-Levels zur Annahme des Angebots
only_kyc_full int {0, 1} Handelspartner muss vollständig identifiziert sein
is_kyc_full int {0, 1} Angebotsersteller ist vollständig identifiziert
seat_of_bank_of_creator string s. Tabelle Bankenländerliste Sitz der Bank des Angebotserstellers als Ländercode in ISO 3166-2
bic_short* string -- BIC der Bankengruppe des Angebotsersteller.
bic_full* string -- Vollständige BIC des Angebotserstellers
trade_to_sepa_country array s. Tabelle Bankenländerliste s. Tabelle Bankenländerliste
payment_option int 1, 2, 3 1 => Express-Only
2 => SEPA-Only
3 => Express & SEPA
trading_pair string s. Tabelle Handelspaarliste Handelspaar s. Tabelle Handelspaarliste

*Die beiden Felder bic_short und bic_full liegen in verschlüsselter Form vor. Sind Sie nur an Angeboten interessiert, deren Angebotsersteller ein Konto bei der gleichen Bank oder Bankengruppe wie Sie nutzt, so können Sie zum Abgleich des jeweiligen Feldes Ihre verschlüsselte BIC oder Bankengruppen-BIC mit der API-Methode showAccountInfo abrufen.

Beispiel

Beispiel:

Es folgt eine Beispiel-Implementierung in Javascript, welche auf die Bibliothek Socket.io für die Websocket-Kommunikation zurückgreift.

// Script https://www.bitcoin.de/js/socket.io.min.js needs to be included in the first place to get access to variable io
if (typeof io != 'undefined') {
    var socket = io.connect('https://ws.bitcoin.de', {port: 443});

    if (typeof socket != 'undefined') {
        socket.on('connect', function () {
            // Connection has successfully been established.
            // Do some initialization stuff here.
        });

        socket.on('disconnect', function () {
        });

        // An order has been removed from the orderbook
        socket.on('remove_order', function (order) {
            // Variable order contains the element order_id
            console.log(order);
        });

        // A new order has been added to the orderbook
        socket.on('add_order', function (order) {
            // Variable order contains all above listed elements (i.e. order_id, order_type)
            console.log(order);
        });
    }
}

Sofern Sie sich in einer anderen Programmiersprache mit dem Websocket verbinden möchten, um auf die besagten Events zu horchen, müssen Sie nach einer entsprechenden Bibliothek suchen, die Ihnen die Kommunikation mit Websockets ermöglicht.

Programmierhinweise

Programmierhinweise

POST-Parameter mit cURL

POST-Parameter mit cURL

Sofern Sie die Verbindung zur Trading-API mit Hilfe der cURL-Bibliothek in der Programmiersprache PHP herstellen, dazu aber nicht das zur Verfügung gestellte SDK verwenden möchten, weisen wir Sie darauf hin, dass POST-Parameter in Form eines Strings (mit Hilfe der Funktion http_build_query()) und nicht eines Arrays übergeben werden sollten, um mögliche Fehler zu vermeiden.

Das folgende Beispiel stellt die korrekte Übergabe dar:

$post_parameters = array('amount' => 12.5, 'type' => 'buy');
$prepared_post_parameters = http_build_query($post_parameters, '', '&');
curl_setopt($this->curl_handle, CURLOPT_POSTFIELDS, $prepared_post_parameters);