← Help

Webhook API

The webhook API lets you add things to your wishlist programmatically — from a shortcut on your phone, a browser bookmarklet, an automation service, or your own scripts.

Get an API key

  1. Open Settings in the app.
  2. In the API keys section, create a new key and give it a name (for example, "iOS Shortcut").
  3. Copy the key right away — it is shown only once. Only a hash of it is stored, so it cannot be recovered later.

You can have up to 10 keys and delete any of them at any time. Deleting a key immediately stops it from working, and things created with it stay in your wishlist.

Add a thing

Send a POST request with a JSON body to https://thingstohave.app/webhook. The API key goes in the body as the key field — there is no authorization header.

curl -X POST https://thingstohave.app/webhook \
  -H "Content-Type: application/json" \
  -d '{
    "key": "your-api-key",
    "name": "Fujifilm X100VI",
    "url": "https://example.com/product/x100vi"
  }'

Request fields

FieldTypeRequiredDescription
keystringyesYour API key
namestringyesName of the thing, 1–500 characters
urlstringnoProduct link, must be a valid http(s) URL
isOwnedbooleannoMark the thing as already owned
listIdnumbernoAttach the new thing to this list (must be your list)

Responses

Success returns 200 with the created thing:

{ "success": true, "data": { "id": 123, "name": "Fujifilm X100VI" } }

If listId was provided but the thing could not be attached to that list, the thing is still created and the response includes a warning (it is not rolled back, so retrying will not create duplicates):

{
  "success": true,
  "data": { "id": 123, "name": "Fujifilm X100VI" },
  "warnings": ["Thing created but not attached to list: not found"]
}

Errors return { "success": false, "error": "..." } with the matching status code:

StatusMeaning
400Invalid JSON or a failed field validation
401Unknown or deleted API key
429Rate limit exceeded
500Unexpected server error

Rate limit

Up to 60 requests per minute per IP address. If you hit the limit, wait and retry — a 429 response means the request was not processed.

Need more?

The webhook currently supports one action: creating a thing. If you need something else — reading lists, updating things — tell us at support@thingstohave.app.