# Why isn't the Discourse API fully documented?

**URL:** https://meta.discourse.org/t/why-isnt-the-discourse-api-fully-documented/138265
**Category:** Development
**Created:** [January 10, 2020, 7:22pm UTC](https://meta.discourse.org/t/why-isnt-the-discourse-api-fully-documented/138265 "2020-01-10T19:22:16Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![samamorgan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/samamorgan/32/173826_2.png) [@samamorgan](https://meta.discourse.org/u/samamorgan)
#### Post date: [January 10, 2020, 7:22pm UTC](https://meta.discourse.org/t/why-isnt-the-discourse-api-fully-documented/138265/1 "2020-01-10T19:22:16Z")

</div>

I don’t understand why full documentation for all API endpoints doesn’t exist. The original documentation was released to the public on December 2014, and here we are 6 years later and the documentation is still half-baked.

Why is this? The lack of good documentation and the suggestion to reverse-engineer the API is a significant barrier for developers looking to use the API.

Sincerely,

A frustrated developer

---

<div class="post-metadata">

### Author: ![justin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/justin/32/157614_2.png) [@justin](https://meta.discourse.org/u/justin)
#### Post date: [January 10, 2020, 7:29pm UTC](https://meta.discourse.org/t/why-isnt-the-discourse-api-fully-documented/138265/2 "2020-01-10T19:29:03Z")

</div>

Can you give some examples as to what you’re having trouble with or finding lacking?

---

<div class="post-metadata">

### Author: ![shooj](https://avatars.discourse-cdn.com/v4/letter/s/e79b87/32.png) [@shooj](https://meta.discourse.org/u/shooj)
#### Post date: [January 10, 2020, 7:38pm UTC](https://meta.discourse.org/t/why-isnt-the-discourse-api-fully-documented/138265/3 "2020-01-10T19:38:08Z")

</div>

This is a timely topic because I have a warning on my forum. “We detected an API request using a deprecated authentication method.”

I would like to know the current method I should be using, and a how-to guide to implement it from the forum admin POV.

What I’ve found are dated threads that link to Github, and as a non-technical person, references to code are not helpful to me. Can someone provide guidance in plain English?

---

<div class="post-metadata">

### Author: ![jomaxro](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jomaxro/32/126216_2.png) [@jomaxro](https://meta.discourse.org/u/jomaxro)
#### Post date: [January 10, 2020, 7:46pm UTC](https://meta.discourse.org/t/why-isnt-the-discourse-api-fully-documented/138265/4 "2020-01-10T19:46:23Z")

</div>

Proper API authentication is covered in the docs, right at the top. In short, you need to use HTTP Headers to provide the API key and username instead of URL parameters.

---

<div class="post-metadata">

### Author: ![samamorgan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/samamorgan/32/173826_2.png) [@samamorgan](https://meta.discourse.org/u/samamorgan)
#### Post date: [January 10, 2020, 10:29pm UTC](https://meta.discourse.org/t/why-isnt-the-discourse-api-fully-documented/138265/5 "2020-01-10T22:29:14Z")

</div>

@justin My specific example is I’m slowly working on rolling out a Discourse API Python wrapper, and I find the lack of proper documentation overwhelming. I already have to hand-test every single endpoint, but many of those endpoints are either not documented or are incorrectly documented.

It’s directly stated at the top of the documentation that the API isn’t fully documented. I want to know: Why?

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [January 12, 2020, 12:35am UTC](https://meta.discourse.org/t/why-isnt-the-discourse-api-fully-documented/138265/10 "2020-01-12T00:35:17Z")

</div>

See [Reverse engineer the Discourse API](https://meta.discourse.org/t/how-to-reverse-engineer-the-discourse-api/20576)

Why isn’t every grain of sand on a beach “fully documented”? 🤣

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [January 12, 2020, 10:41pm UTC](https://meta.discourse.org/t/why-isnt-the-discourse-api-fully-documented/138265/11 "2020-01-12T22:41:38Z")

</div>

Out of interest why don’t you simply support what is required until you hit a new unsupported requirement at which point reverse engineer it? That’s a lot easier than aiming for 100% and it’s pointless wrapping calls that will never get used? Especially since you will be supporting a moving target. Make your life easier?

---

<div class="post-metadata">

### Author: ![samamorgan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/samamorgan/32/173826_2.png) [@samamorgan](https://meta.discourse.org/u/samamorgan)
#### Post date: [January 13, 2020, 3:34pm UTC](https://meta.discourse.org/t/why-isnt-the-discourse-api-fully-documented/138265/12 "2020-01-13T15:34:04Z")

</div>

I understand that this can be reverse-engineered. It’s just a little frustrating to have to do this. The API was created by humans who must know how it works, why can’t those humans write it down so others can be informed?

I don’t feel like this is a big ask. Good documentation is crucial in any project.

---

<div class="post-metadata">

### Author: ![samamorgan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/samamorgan/32/173826_2.png) [@samamorgan](https://meta.discourse.org/u/samamorgan)
#### Post date: [January 13, 2020, 4:07pm UTC](https://meta.discourse.org/t/why-isnt-the-discourse-api-fully-documented/138265/13 "2020-01-13T16:07:10Z")

</div>

That’s the plan right now, I’ve got every documented endpoint mirrored on my repo right now in the develop branch, and I’ve come to the point where I’m going to have to start reverse-engineering.

I’m already starting to contribute to [GitHub - discourse/discourse\_api\_docs: Discourse API Documentation · GitHub](https://github.com/discourse/discourse_api_docs/) but I’m really just questioning why this is even necessary on such an established project.

---

<div class="post-metadata">

### Author: ![jomaxro](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jomaxro/32/126216_2.png) [@jomaxro](https://meta.discourse.org/u/jomaxro)
#### Post date: [January 13, 2020, 5:53pm UTC](https://meta.discourse.org/t/why-isnt-the-discourse-api-fully-documented/138265/14 "2020-01-13T17:53:55Z")

</div>

> [@samamorgan](#):
>
> I’m really just questioning why this is even necessary on such an established project.

As with anything, it’s a matter of resources and priority. The API surface is huge. Technically, it’s everything - everything is accessed via the API, hence why reverse engineering works. We’ve chosen to focus our finite engineering time on fixes, features, performance etc, rather than on documentation. Our product direction is largely driven by our customers, and our community. To my knowledge, no customer has ever asked for 100% API documentation coverage. When customers do ask about something that is missing or unclear, we add it. Therefore, 100% coverage it hasn’t been a priority.

At this time, the API docs are manually curated. This is obviously not a sustainable method, but at the moment it’s what we have. Refactoring the API docs system to be generated programmatically is a “todo” item, but it’s not currently slated for any specific release, so there’s no timeline for completion.
