Skip to main content

Save content

url
string
required
The URL to save. Supports articles, tweets, YouTube videos, Reddit posts, and more.
collectionId
string
Optional collection ID to add the content to after saving.
tags
string[]
Optional tags to attach to the content. Tags are normalized to lowercase with dashes replacing spaces.
POST /api/v1/content
Save a URL to your library. Animus automatically processes and analyzes the content. Scope: write
curl -X POST https://api.animus.so/api/v1/content \
  -H "Authorization: Bearer anm_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/article"}'
Response 200
{
  "success": true,
  "message": "Processing content...",
  "userContentId": "550e8400-e29b-41d4-a716-446655440000"
}
If the URL was already saved, the response includes "duplicate": true. If you don’t have enough credits, the content may be saved as a bookmark without AI analysis — the response will include "savedAsBookmark": true with a "bookmarkReason": "no_credits".

List recent content

GET /api/v1/content/recent
Returns your most recently saved content, ordered by save date. Scope: read
ParameterTypeDefaultDescription
limitinteger20Items per page (1-50)
offsetinteger0Offset for pagination (0-10000)
sortstringcreated_atSort by: created_at, updated_at, or title
curl "https://api.animus.so/api/v1/content/recent?limit=10" \
  -H "Authorization: Bearer anm_your_key"
Response 200
{
  "items": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "url": "https://example.com/article",
      "thumbnailUrl": null,
      "platform": "web",
      "savedAt": "2025-01-15T10:30:00.000Z",
      "tags": ["technology"],
      "isFavorite": false,
      "isArchived": false,
      "deletedAt": null,
      "status": "ready",
      "title": "Article Title",
      "summary": "A brief summary...",
      "creator": null
    }
  ],
  "total": 142,
  "offset": 0,
  "limit": 10,
  "hasMore": true
}
total is only included on the first page (when offset is 0). Use hasMore for subsequent pagination.

Get content detail

GET /api/v1/content/:id
Returns full details for a specific content item, including AI-generated summary, key takeaways, entities, topics, and metadata. Scope: read
ParameterTypeDescription
idstringThe content item ID (path parameter)
curl https://api.animus.so/api/v1/content/CONTENT_ID \
  -H "Authorization: Bearer anm_your_key"
Response 200
{
  "content": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "url": "https://example.com/article",
    "thumbnailUrl": null,
    "platform": "web",
    "savedAt": "2025-01-15T10:30:00.000Z",
    "tags": ["technology", "ai"],
    "isFavorite": false,
    "isArchived": false,
    "deletedAt": null,
    "status": "ready",
    "processingMode": "full",
    "title": "Article Title",
    "summary": "A brief summary of the article...",
    "fullSummary": "A detailed multi-paragraph summary...",
    "keyTakeaways": ["Key point 1", "Key point 2"],
    "creator": null,
    "notes": null,
    "qualityScore": 0.85,
    "characteristics": ["informative", "technical"],
    "entities": [
      { "text": "OpenAI", "type": "organization", "salience": 0.9 }
    ],
    "sentiment": { "score": 0.2, "magnitude": 0.5 },
    "topics": [
      { "name": "Artificial Intelligence", "confidence": 0.95 }
    ],
    "links": ["https://example.com/related"],
    "specializedContent": null,
    "viewCount": 3,
    "lastViewedAt": "2025-01-16T08:00:00.000Z",
    "collections": [
      { "id": "uuid", "title": "Research", "icon": null }
    ]
  },
  "specializedContent": null
}
The response is wrapped in a content object. AI-analyzed fields (summary, keyTakeaways, entities, etc.) are null while content is still processing or if it was saved as a bookmark.

Get library statistics

GET /api/v1/content/stats
Returns aggregate statistics about your library. Scope: read
curl https://api.animus.so/api/v1/content/stats \
  -H "Authorization: Bearer anm_your_key"
Response 200
{
  "totalItems": 142,
  "collectionsCount": 8,
  "uncategorizedCount": 23,
  "archivedCount": 5,
  "deletedCount": 2,
  "bookmarkCount": 31
}

List deleted content

GET /api/v1/content/deleted
Returns content items in your trash. Same response shape as list recent content. Scope: read
curl https://api.animus.so/api/v1/content/deleted \
  -H "Authorization: Bearer anm_your_key"

Delete content

DELETE /api/v1/content/:id
Moves a content item to the trash (soft delete). Can be restored within 30 days. Scope: write
ParameterTypeDescription
idstringThe content item ID (path parameter)
curl -X DELETE https://api.animus.so/api/v1/content/CONTENT_ID \
  -H "Authorization: Bearer anm_your_key"
Response: 204 No Content