# They Said So Quotes API API

> They Said So Quotes API API on Apizie: 45 endpoints (Gets `Quote of the Day` (QOD). Optional `category` param determines the category of returned quote of the day, Create a private `Quote of the Day` service., Update an existing private `Quote of the Day` definition., Gets a list of `Quote of the Day` Categories., …) returned as clean JSON through one API key. Send your own provider key in the x-upstream-key header. Call it over REST at https://zieapi.vercel.app/v1/open-data:quotes-rest/{endpoint} or from Claude, ChatGPT and Cursor through the Apizie MCP server. Free plan: 1,000 requests a month.

- Project key: `open-data:quotes-rest`
- Category: Open Data
- Status: byok
- Source: https://theysaidso.com/api
- Page: https://zieapi.vercel.app/api/open-data/quotes-rest
- OpenAPI: https://zieapi.vercel.app/api/open-data/quotes-rest/openapi.json

They Said So Quotes API offers a complete feature rich REST API access to its quotes platform. This is the documentation for the world famous [quotes API](https://theysaidso.com/api). If you are a subscriber and you…

## Endpoints

### Gets `Quote of the Day` (QOD). Optional `category` param determines the category of returned quote of the day
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-qod` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| category | string | no | QOD Category (Used in public QOD only) |
| language | string | no | Language of the QOD. The language must be supported in our QOD system. |
| id | string | no | QOD defition id (Used in private QOD only) |

### Create a private `Quote of the Day` service.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/put-qod` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| repeat_after | integer | no | How many days after the quotes can repeat? If you are setting this up from your private collection make sure you have more quotes that… |
| authors | string | no | Comma seperated author names. Quotes will be chosen from one of these authors. |
| title | string | yes | Title of the Quote of the day category |
| private | boolean | no | Should apply the filters to the private collection. Default is public quotes in the platform. |
| language | string | no | Quotes language. |
| sfw | boolean | no | Consider only quotes marked as "sfw" (Safe for work). |

### Update an existing private `Quote of the Day` definition.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/patch-qod` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| repeat_after | integer | no | How many days after the quotes can repeat? If you are setting this up from your private collection make sure you have more quotes that… |
| authors | string | no | Comma seperated author names. Quotes will be chosen from one of these authors. |
| title | string | yes | Title of the Quote of the day category |
| private | boolean | no | Should apply the filters to the private collection. Default is public quotes in the platform. |
| language | string | no | Quotes language. |
| sfw | boolean | no | Consider only quotes marked as "sfw" (Safe for work). |

### Gets a list of `Quote of the Day` Categories.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-qod-categories` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| language | string | no | Language of the QOD category. The language must be supported in our QOD system. |
| detailed | boolean | no | Return detailed information of the categories. Note the data format changes between the two values of this switch. |

### Gets a list of supported languages for `Quote of the Day`.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-qod-languages` (byok)

### Gets a details about a qshow.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-qshow` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Qshow ID |

### Create and add a new qshow to your private collection.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/put-qshow` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| title | string | yes | Qshow title |
| description | string | no | Qshow description |
| tags | array | no | Tags for the qshow |

### Update an existing qshow.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/patch-qshow` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Qshow ID |
| title | string | no | Qshow title |
| description | string | no | Qshow description |
| tags | array | no | Tags for the qshow |

### Delete a qshow.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/delete-qshow` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Qshow ID |

### Get the list of Qshows in They Said So platform.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-qshow-list` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| start | integer | no | Response is paged. This parameter controls where response starts the listing at |
| public | boolean | no | Should include public qshows or not in the list |

### Get the quotes in a given Qshow.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-qshow-quotes` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Qshow ID |

### Add a quote to a given Qshow.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/post-qshow-quotes-add` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Qshow ID |
| quoteid | string | yes | Quote ID to add the qshow collection |

### Remove a quote to a given Qshow.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/post-qshow-quotes-remove` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Qshow ID |
| quoteid | string | yes | Quote ID to remove from the qshow collection |

### Gets a `Quote` with a given `id`.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | no | Quote ID |

### Add a new quote to your private collection. Same as 'PUT' but added since some clients don't handle PUT well.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/post-quote` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| quote | string | yes | Quote |
| author | string | no | Quote Author |
| tags | string | no | Comma Separated tags |
| language | string | no | Language. If not supplied an auto detection mechanism will be used to detect a language. |

### Add a new quote to your private collection.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/put-quote` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| quote | string | yes | Quote |
| author | string | no | Quote Author |
| tags | string | no | Comma Separated tags |
| language | string | no | Language. If not supplied an auto detection mechanism will be used to detect a language. |

### Update a quote
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/patch-quote` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Quote ID |
| quote | string | no | Quote |
| author | string | no | Quote Author |
| language | string | no | Language. If not supplied an auto detection mechanism will be used to detect a language. |
| tags | string | no | Comma Separated tags |

### Delete a quote. The user needs to be the owner of the quote to be able to delete it.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/delete-quote` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Quote ID |

### Gets a list of popular author names in the system.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote-authors-popular` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| language | string | no | Language. A same author may have quotes in two or more different languages. So for example 'Mahatma Gandhi' may be returned for language… |
| detailed | boolean | no | Should return detailed author information such as `birthday`, `death date`, `occupation`, `description` etc. Only available at certain… |
| start | integer | no | Response is paged. This parameter controls where response starts the listing at |
| limit | integer | no | Response is paged. This parameter controls how many is returned in the result. The maximum depends on the subscription level. |

### Gets a list of author names in the system.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote-authors-search` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | no | Text string to search for in author names |
| language | string | no | Language. A same author may have quotes in two or more different languages. So for example 'Mahatma Gandhi' may be returned for language… |
| detailed | boolean | no | Should return detailed author information such as `birthday`, `death date`, `occupation`, `description` etc. Only available at certain… |
| start | integer | no | Response is paged. This parameter controls where response starts the listing at |
| limit | integer | no | Response is paged. This parameter controls how many is returned in the result. The maximum depends on the subscription level. |

### Toggle the user bookmark of the given Quote as a user of the API Key.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote-bookmark-toggle` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| quote_id | string | yes | Quote ID |

### Gets a list of popular `Quote` Categories.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote-categories-popular` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| start | integer | no | Response is paged. This parameter controls where response starts the listing at |
| limit | integer | no | Response is paged. This parameter controls how many is returned in the result. The maximum depends on the subscription level. |

### Gets a list of `Quote` Categories matching the query string.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote-categories-search` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | no | Text string to search for in the categories |
| start | integer | no | Response is paged. This parameter controls where response starts the listing at |
| limit | integer | no | Response is paged. This parameter controls how many is returned in the result. The maximum depends on the subscription level. |

### Gets a Quote image for a given id. Response can be an image file as a binary or a base64 encoded contents…
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote-image` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Quote Image id |
| binary | boolean | no | Should the response be a direct file download of the image or a base64 encoded image file wrapped in json? |

### Create a new quote image for a given quote. Choose background colors/images , choose different font styles…
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/put-quote-image` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| quote_id | string | yes | Quote id |
| bgimage_id | string | no | Background Image id ( Will override bgcolor if supplied) |
| bg_color | string | no | Background Color(if background image id is not supplied) |
| font_id | string | no | Font id |
| text_color | string | no | Text Color |
| text_size | string | no | Text/font size |
| halign | string | no | Horizontal text Alignment Value |
| valign | string | no | Vertical text Alignment Value |
| width | integer | no | Image Width(By default this takes the width of the background image) |
| height | integer | no | Image Height(By default this takes the height of the background image) |
| branding | boolean | no | Disable They Said So branding (Only available in certain subscription levels. Ignored in other levels) |
| include_transparent_layer | boolean | no | Should include a transparent layer between the text and the background image? This helps when the background image is bright and obscures… |

### Delete a quote image. The user needs to be the owner of the quote image to be able to delete it.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/delete-quote-image` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Quote Image ID |

### Add an image for use later as a quote background image.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/post-quote-image-background` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | no | Form fields as a JSON object |

### Delete a background image file. The user needs to be the owner of the background image to be able to delete…
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/delete-quote-image-background` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Font ID |

### Lists background images in your private collection.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote-image-background-list` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| start | integer | no | Response is paged. This parameter determines where the response should start. |

### Searches for a background image with a given tag.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote-image-background-search` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | no | Tag string |

### Add a tag to a given Image.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/post-quote-image-background-tags-add` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Image ID |
| tags | string | yes | Comma Separated tags |

### Remove a tag from a given Image.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/post-quote-image-background-tags-remove` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Image ID |
| tags | string | yes | Comma Separated tags |

### Add a font file for use later in creating a quote image. This is essentially a `PUT` but not many clients…
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/post-quote-image-font` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | no | Form fields as a JSON object |

### Delete a font file. The user needs to be the owner of the font to be able to delete it.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/delete-quote-image-font` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Font ID |

### Lists background images in your private collection.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote-image-font-list` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| start | integer | no | Response is paged. This parameter determines where the response should start. |

### Searches for a font with a given tag.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote-image-font-search` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | no | Tag string |

### Add a tag to a given font.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/post-quote-image-font-tags-add` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Font ID |
| tags | string | yes | Comma Separated tags |

### Remove a tag from a given Font.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/post-quote-image-font-tags-remove` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Font ID |
| tags | string | yes | Comma Separated tags |

### Gets a Random Quote image. Optional `category` param determines the category of quote used in the image.…
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote-image-search` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| category | string | no | Quote Category |
| author | string | no | Quote Author |
| private | boolean | no | Should search private collection. Default searches public image collection. |

### Toggle the user like of the given Quote as a user of the API Key.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote-like-toggle` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| quote_id | string | yes | Quote ID |

### Get the list of quotes in your private collection.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote-list` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| start | integer | no | Response is paged. This parameter controls where response starts the listing at |
| limit | integer | no | Response is paged. This parameter controls how many is returned in the result. |

### Gets a `Random Quote`. When you are in a hurry this is what you call to get a random famous quote.
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote-random` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| language | string | no | Language of the Quote. The language must be supported in our system. |
| limit | integer | no | No of quotes to return. The max limit depends on the subscription level. |

### Search for a `Quote` in They Said So platform. Optional `category` , `author`, `minlength`, `maxlength`…
`GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-quote-search` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| category | string | no | Quote Category |
| author | string | no | Quote Author |
| minlength | integer | no | Quote minimum Length |
| maxlength | integer | no | Quote maximum Length |
| query | string | no | keyword to search for in the quote |
| private | boolean | no | Should search private collection? Default searches public collection. |
| language | string | no | Language of the Quote. The language must be supported in our system. |
| limit | integer | no | No of quotes to return. The max limit depends on the subscription level. |
| sfw | boolean | no | Should search only SFW (Safe For Work) quotes? |

### Add a tag to a given Quote.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/post-quote-tags-add` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Quote ID |
| tags | string | yes | Comma Separated tags |

### Remove a tag from a given quote.
`POST https://zieapi.vercel.app/v1/open-data:quotes-rest/post-quote-tags-remove` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Quote ID |
| tags | string | yes | Comma Separated tags |

## Example
```
curl "https://zieapi.vercel.app/v1/open-data:quotes-rest/get-qod" \
  -H "x-api-key: $APIZIE_KEY" \
  -H "x-upstream-key: $PROVIDER_KEY"
```

## FAQ

### How do I call the They Said So Quotes API API?
Create a free Apizie key, then send GET https://zieapi.vercel.app/v1/open-data:quotes-rest/get-qod with the header x-api-key. Every endpoint returns { project, data, timestamp }.

### Is the They Said So Quotes API API free on Apizie?
Yes. The Free plan includes 1,000 requests a month at 100 requests a minute, no credit card. They Said So Quotes API itself also needs your own key from quotes.rest.

### Can AI agents use the They Said So Quotes API API?
Yes. Add the Apizie MCP server (https://zieapi.vercel.app/mcp) to Claude, ChatGPT, Cursor or VS Code, then ask in plain language. The agent calls run_scraper with project key open-data:quotes-rest.

### What is the status of the They Said So Quotes API API?
Needs your own provider key (bring your own key)
