dpaste provides a simple API endpoint to create new snippets. All you need to do is a simple POST request to the API endpoint /api/:

POST http://dpaste.de/api/

Available POST data for an API call:

content (required)

The UTF-8 encoded string you want to paste.

lexer (optional)

The lexer string key used for highlighting. See lexer list for a full list of choices. Default: python.

format (optional)

The format of the API response. Choices are:

  • default — Returns a full qualified URL wrapped in quotes. Example:

  • url — Returns the full qualified URL to the snippet, without surrounding quotes, but with a line break. Example:

  • json — Returns a JSON object containing the URL, lexer and content of the the snippet. Example:

        "url": "https://dpaste.de/xsWd",
        "lexer": "python",
        "content": "The text body of the snippet."

expires (optional)

A keyword to indicate the lifetime of a snippetn in seconds. The values are predefined by the server. Calling this with an invalid value returns a HTTP 400 BadRequest together with a list of valid values. Default: 2592000. In the default configuration valid values are:

  • onetime
  • never
  • 3600
  • 604800
  • 2592000

filename (optional)

A filename which we use to determine a lexer, if lexer is not set. In case we can’t determine a file, the lexer will fallback to plain code (no highlighting). A given lexer will overwrite any filename! Example:

    "url": "https://dpaste.de/xsWd",
    "lexer": "",
    "filename": "python",
    "content": "The text body of the snippet."

This will create a python highlighted snippet. However in this example:

    "url": "https://dpaste.de/xsWd",
    "lexer": "php",
    "filename": "python",
    "content": "The text body of the snippet."

Since the lexer is set too, we will create a php highlighted snippet.


Since lexer defaults to python you have to specifically unset it when using filename.


You need to adjust the setting DPASTE_BASE_URL which is used to generate the full qualified URL in the API response. See Settings to override.


When creating new snippets via the API, they won’t be listed on the history page since they are related to a browser session.

Example code snippets:

A sample Python 2 script to publish snippets:

#!/usr/bin/env python

import urllib
import urllib2
import sys

def paste_code():
    request = urllib2.Request(
        urllib.urlencode([('content', sys.stdin.read())]),
    response = urllib2.urlopen(request)
    # Strip surrounding quotes (NB: response has no trailing newline)
    print response.read()[1:-1]

if __name__ == '__main__':

You can simply use curl to publish a whole file:

$ alias dpaste="curl -F 'content=<-' https://dpaste.de/api/?format=url"
$ cat foo.txt | dpaste