Test Configuration

NoteFor security, tokens are stored locally in your browser.

Clear Token?

"" is cleared from this browser. The token itself keeps working; we're only forgetting it here, so you'll need to paste it in again to keep testing.

Reactions

Thumbs-up / thumbs-down votes on targets

POST/api/v0/reactions

Submit a reaction

Record a thumbs-up (1) or thumbs-down (-1) reaction against a target.

Supply target.type and target.metadata. If your organization has no target with that type and metadata, we create one. You identified the target by its metadata, so the response carries the resolved target back to give you its id. For the up and down counts, call GET /api/v0/targets/{target_id}/reactions/summary.

A person gets one reaction per target. Reacting again replaces their earlier value instead of being rejected, so someone who switches from thumbs-up to thumbs-down ends up with a single thumbs-down rather than two reactions.

  • With user_id, that person is held to one reaction per target for all time.
  • Without user_id, we fall back to one reaction per target per IP address every 24 hours. This is best effort: people behind a shared network or proxy can overwrite each other.
  • With neither a user_id nor a reachable client IP, there is nobody to attribute the reaction to, and the request is rejected with 422 and field: "user_id". Send a user_id if your integration cannot present a client IP.
Request body*
target*(object)

The target to react to, given as a type and its metadata. If your organization has no target with that type and metadata, we create one, so you can react to a docs page nobody has registered yet.

The HTTP method (e.g. GET, POST).

The API endpoint path.

The hostname of the API (e.g. api.example.com).

The API version string (e.g. v1).

1 for thumbs-up, -1 for thumbs-down.

An identifier for the end user submitting the reaction, such as your own user id. We store it exactly as you send it, so prefer an id over an email address. If an email address is all you have, hash it yourself before sending it.

A user_id holds each person to one reaction per target, for all time. Without one we fall back to one reaction per target per IP address every 24 hours.

Response
201The reaction that was recorded
idstring

A unique identifier for a resource. Treat it as an opaque string: don't parse it or build your own.

The resolved target this reaction was recorded against.

idstring

A unique identifier for a resource. Treat it as an opaque string: don't parse it or build your own.

typestring
"rest_endpoint"
"documentation"
"cli_command"

Which kind of surface this target identifies. Immutable after create.

display_namestring

A human-readable label, derived from metadata when the target was created.

metadataone of 3

The details identifying the target. Which fields it carries depends on type; the shape for each type is listed below.

One of the following:

Rest Endpoint Metadata
methodstring

The HTTP method (e.g. GET, POST).

pathstring

The API endpoint path.

hoststring

The hostname of the API (e.g. api.example.com).

api_versionstring

The API version string (e.g. v1).

Documentation Metadata
page_urlstring

The URL of the documentation page.

section_headingstring

The section heading within the page.

doc_versionstring

The documentation version string.

Cli Command Metadata
commandstring

The CLI command name.

subcommandstring

The subcommand path, which may be multi-word (e.g. "container run").

cli_versionstring

The CLI version string.

The documented flags and args, e.g. ["--rm", "--network"].

reaction_valueinteger
"1"
"-1"

1 for thumbs-up, -1 for thumbs-down.

created_atstring (date-time)

The ISO 8601 timestamp when the reaction was recorded.

The response metadata for a single resource.

The links for the resource in data.

Where to call this resource in this API, for example /api/v0/feedback/8x7k2mN.

selfstring

The path to this resource. It starts with a / and carries no domain, so join it to https://inputbuffer.io for a full URL.

Where a person can open this resource in InputBuffer, for example /o/yoyodyne/feedback/8x7k2mN. Use it to link a user straight to the page. web is null when the resource has no page of its own.

selfstring

The path to this resource. It starts with a / and carries no domain, so join it to https://inputbuffer.io for a full URL.

relatedobject

The links for the objects embedded in this resource, keyed by the field each one sits at. A value is null when the embedded object has nothing to link to. {} when the resource embeds nothing.

401The API token is missing, malformed, or revoked.

The API token is missing, malformed, or revoked.

typestring (uri)
https://inputbuffer.io/docs/api/problems/unauthorized
https://inputbuffer.io/docs/api/problems/invalid-token-format
https://inputbuffer.io/docs/api/problems/invalid-token

A URI identifying the error type. Stable across releases, so it is safe to switch on.

titlestring

A short label for the error type.

detailstring

An explanation of this specific occurrence. May change between releases, so don't parse it.

statusinteger

The HTTP status code, mirroring the response status.

categorystring
"user"
"integration"

Who most likely caused the problem. user means the person using your app sent something the API rejected, such as a bad value or too many requests; detail is safe to show them. integration means the problem is in your own setup or code, so show them something generic and log detail for yourself. Omitted on internal-error.

fieldstring

Which request field caused the error. Present only on missing-required-field and invalid-field-value.

403A full-access token was used from a browser (widget-token-restricted), or a widget token's origin isn't allowlisted (forbidden-origin).

A full-access token was used from a browser (widget-token-restricted), or a widget token's origin isn't allowlisted (forbidden-origin).

typeany
https://inputbuffer.io/docs/api/problems/widget-token-restricted
https://inputbuffer.io/docs/api/problems/forbidden-origin
titlestring

A short label for the error type.

detailstring

An explanation of this specific occurrence. May change between releases, so don't parse it.

statusinteger

The HTTP status code, mirroring the response status.

categorystring
"user"
"integration"

Who most likely caused the problem. user means the person using your app sent something the API rejected, such as a bad value or too many requests; detail is safe to show them. integration means the problem is in your own setup or code, so show them something generic and log detail for yourself. Omitted on internal-error.

fieldstring

Which request field caused the error. Present only on missing-required-field and invalid-field-value.

415The request body wasn't sent as application/json (or application/merge-patch+json, which PATCH also accepts). Set the Content-Type header and send a JSON-encoded body.

The request body wasn't sent as application/json (or application/merge-patch+json, which PATCH also accepts). Set the Content-Type header and send a JSON-encoded body.

typestring (uri)
https://inputbuffer.io/docs/api/problems/unsupported-media-type

A URI identifying the error type. Stable across releases, so it is safe to switch on.

titlestring

A short label for the error type.

detailstring

An explanation of this specific occurrence. May change between releases, so don't parse it.

statusinteger

The HTTP status code, mirroring the response status.

categorystring
"user"
"integration"

Who most likely caused the problem. user means the person using your app sent something the API rejected, such as a bad value or too many requests; detail is safe to show them. integration means the problem is in your own setup or code, so show them something generic and log detail for yourself. Omitted on internal-error.

fieldstring

Which request field caused the error. Present only on missing-required-field and invalid-field-value.

422A required field is missing or a field value is invalid. Check field.

A required field is missing or a field value is invalid. Check field.

typestring (uri)
https://inputbuffer.io/docs/api/problems/missing-required-field
https://inputbuffer.io/docs/api/problems/invalid-field-value

A URI identifying the error type. Stable across releases, so it is safe to switch on.

titlestring

A short label for the error type.

detailstring

An explanation of this specific occurrence. May change between releases, so don't parse it.

statusinteger

The HTTP status code, mirroring the response status.

categorystring
"user"
"integration"

Who most likely caused the problem. user means the person using your app sent something the API rejected, such as a bad value or too many requests; detail is safe to show them. integration means the problem is in your own setup or code, so show them something generic and log detail for yourself. Omitted on internal-error.

fieldstring

Which request field caused the error. Present only on missing-required-field and invalid-field-value.

429Too many requests.

Too many requests.

typestring (uri)
https://inputbuffer.io/docs/api/problems/rate-limited

A URI identifying the error type. Stable across releases, so it is safe to switch on.

titlestring

A short label for the error type.

detailstring

An explanation of this specific occurrence. May change between releases, so don't parse it.

statusinteger

The HTTP status code, mirroring the response status.

categorystring
"user"
"integration"

Who most likely caused the problem. user means the person using your app sent something the API rejected, such as a bad value or too many requests; detail is safe to show them. integration means the problem is in your own setup or code, so show them something generic and log detail for yourself. Omitted on internal-error.

fieldstring

Which request field caused the error. Present only on missing-required-field and invalid-field-value.

500Something went wrong on our end.

Something went wrong on our end.

typestring (uri)
https://inputbuffer.io/docs/api/problems/internal-error

A URI identifying the error type. Stable across releases, so it is safe to switch on.

titlestring

A short label for the error type.

detailstring

An explanation of this specific occurrence. May change between releases, so don't parse it.

statusinteger

The HTTP status code, mirroring the response status.

categorystring
"user"
"integration"

Who most likely caused the problem. user means the person using your app sent something the API rejected, such as a bad value or too many requests; detail is safe to show them. integration means the problem is in your own setup or code, so show them something generic and log detail for yourself. Omitted on internal-error.

fieldstring

Which request field caused the error. Present only on missing-required-field and invalid-field-value.

https://inputbuffer.io/api/v0/reactions
{
  "target": {
    "type": "rest_endpoint"
  },
  "reaction_value": null
}
GET/api/v0/targets/{target_id}/reactions/summary

Get the reaction summary for a target

Returns all-time totals and a 30-day daily breakdown of thumbs-up / thumbs-down reactions for a specific target. Requires a full-access (ib_*) token. Widget tokens are not permitted, as on every endpoint other than feedback and reaction creation.

URL parameters

A unique identifier for a resource. Treat it as an opaque string: don't parse it or build your own.

Response
200The reaction summary

The target these totals describe.

idstring

A unique identifier for a resource. Treat it as an opaque string: don't parse it or build your own.

typestring
"rest_endpoint"
"documentation"
"cli_command"

Which kind of surface this target identifies. Immutable after create.

display_namestring

A human-readable label, derived from metadata when the target was created.

metadataone of 3

The details identifying the target. Which fields it carries depends on type; the shape for each type is listed below.

One of the following:

Rest Endpoint Metadata
methodstring

The HTTP method (e.g. GET, POST).

pathstring

The API endpoint path.

hoststring

The hostname of the API (e.g. api.example.com).

api_versionstring

The API version string (e.g. v1).

Documentation Metadata
page_urlstring

The URL of the documentation page.

section_headingstring

The section heading within the page.

doc_versionstring

The documentation version string.

Cli Command Metadata
commandstring

The CLI command name.

subcommandstring

The subcommand path, which may be multi-word (e.g. "container run").

cli_versionstring

The CLI version string.

The documented flags and args, e.g. ["--rm", "--network"].

reaction_upinteger

The all-time total of thumbs-up reactions.

reaction_downinteger

The all-time total of thumbs-down reactions.

net_scoreinteger

reaction_up minus reaction_down.

The per-day up and down counts for the past 30 days.

daystring (date)
reaction_upinteger
reaction_downinteger

The response metadata for a single resource.

The links for the resource in data.

Where to call this resource in this API, for example /api/v0/feedback/8x7k2mN.

selfstring

The path to this resource. It starts with a / and carries no domain, so join it to https://inputbuffer.io for a full URL.

Where a person can open this resource in InputBuffer, for example /o/yoyodyne/feedback/8x7k2mN. Use it to link a user straight to the page. web is null when the resource has no page of its own.

selfstring

The path to this resource. It starts with a / and carries no domain, so join it to https://inputbuffer.io for a full URL.

relatedobject

The links for the objects embedded in this resource, keyed by the field each one sits at. A value is null when the embedded object has nothing to link to. {} when the resource embeds nothing.

401The API token is missing, malformed, or revoked.

The API token is missing, malformed, or revoked.

typestring (uri)
https://inputbuffer.io/docs/api/problems/unauthorized
https://inputbuffer.io/docs/api/problems/invalid-token-format
https://inputbuffer.io/docs/api/problems/invalid-token

A URI identifying the error type. Stable across releases, so it is safe to switch on.

titlestring

A short label for the error type.

detailstring

An explanation of this specific occurrence. May change between releases, so don't parse it.

statusinteger

The HTTP status code, mirroring the response status.

categorystring
"user"
"integration"

Who most likely caused the problem. user means the person using your app sent something the API rejected, such as a bad value or too many requests; detail is safe to show them. integration means the problem is in your own setup or code, so show them something generic and log detail for yourself. Omitted on internal-error.

fieldstring

Which request field caused the error. Present only on missing-required-field and invalid-field-value.

403Widget tokens are not permitted to access reaction summaries (widget-token-restricted).

Widget tokens are not permitted to access reaction summaries (widget-token-restricted).

typeany
https://inputbuffer.io/docs/api/problems/widget-token-restricted
titlestring

A short label for the error type.

detailstring

An explanation of this specific occurrence. May change between releases, so don't parse it.

statusinteger

The HTTP status code, mirroring the response status.

categorystring
"user"
"integration"

Who most likely caused the problem. user means the person using your app sent something the API rejected, such as a bad value or too many requests; detail is safe to show them. integration means the problem is in your own setup or code, so show them something generic and log detail for yourself. Omitted on internal-error.

fieldstring

Which request field caused the error. Present only on missing-required-field and invalid-field-value.

404No target matches this ID in your organization (target-not-found).

No target matches this ID in your organization (target-not-found).

typeany
https://inputbuffer.io/docs/api/problems/target-not-found
titlestring

A short label for the error type.

detailstring

An explanation of this specific occurrence. May change between releases, so don't parse it.

statusinteger

The HTTP status code, mirroring the response status.

categorystring
"user"
"integration"

Who most likely caused the problem. user means the person using your app sent something the API rejected, such as a bad value or too many requests; detail is safe to show them. integration means the problem is in your own setup or code, so show them something generic and log detail for yourself. Omitted on internal-error.

fieldstring

Which request field caused the error. Present only on missing-required-field and invalid-field-value.

500Something went wrong on our end.

Something went wrong on our end.

typestring (uri)
https://inputbuffer.io/docs/api/problems/internal-error

A URI identifying the error type. Stable across releases, so it is safe to switch on.

titlestring

A short label for the error type.

detailstring

An explanation of this specific occurrence. May change between releases, so don't parse it.

statusinteger

The HTTP status code, mirroring the response status.

categorystring
"user"
"integration"

Who most likely caused the problem. user means the person using your app sent something the API rejected, such as a bad value or too many requests; detail is safe to show them. integration means the problem is in your own setup or code, so show them something generic and log detail for yourself. Omitted on internal-error.

fieldstring

Which request field caused the error. Present only on missing-required-field and invalid-field-value.

https://inputbuffer.io/api/v0/targets//reactions/summary