Skip to content
Skip to content

API resources, IDs, pagination, and errors

Learn which v1 resources exist and how to use IDs, cursors, rate limits, and error responses.

The v1 API supports the resources below. Manage other Sydnee features in the app.

Which resources are available?

  • Accounts: create, list, read, and archive client accounts.
  • Account users: list account members, add a portal user, and remove account access.
  • Task boards: list, create, archive, restore, and set a default board.
  • Sections and tags: manage board sections, board-local tags, and their order.
  • Tasks: list, create, read, move, update, archive, and manage supported subtasks, tags, reminders, assignees, collaborators, comments, attachments, and activity. The API can also prepare and confirm a task attachment upload. It can delete task attachments created through the public API.
  • Task templates: list templates and add one to an account or one account task board.
  • Request templates: list templates and send one to a portal user.
  • Requests: read the current status and fields for one Request. Each field includes its latest saved answer. Sensitive answers stay hidden. File answers link to file details and downloads.
  • Files: list folders and files. Read file details, versions, and comments. Get download URLs. Upload account files and add new file versions.

Public file writes cover account file and new-version uploads. File rename, file delete, and file comments remain in the app. Learn how to upload files and task attachments.

The live API reference owns the full route and field list.

Which ID should I send?

Use the ID returned by the endpoint that listed or created the resource. Do not build an ID from a name, slug, URL, or database guess.

ResourceID used by current routes
AccountPublic string account ID, also called an account CUID in the API
Task board, section, task, or tagPublic string ID returned by the API
Task templatePublic string ID returned by the template list
Request templateNumeric template ID in the current contract
RequestNumeric Request ID returned when a Request is created or in a Request webhook’s object_id
Account user or collaboratorNumeric account-membership ID returned by the account users route
Folder, file, file version, attachment, or reminderNumeric ID returned by its parent route

An account user's ID is not the same as the person's portal-user ID or email. A file's current ID can also differ from an older version ID. Follow the exact schema for the route you call.

Use GET /v1/accounts/{accountId}/requests/{requestId} to read a current Request. The response doesn't include answer history or updatedAt. An answer’s createdAt is when Sydnee saved that answer. The response includes all active fields. It can include a hidden field with a saved answer because this endpoint doesn't run conditional logic.

How does pagination work?

Cursor pagination is used by supported list routes, including accounts, task activity, task comments, file lists, and file comments.

  1. Send the first request with an optional limit. Supported paged routes return 50 items by default and allow 1 to 200.
  2. Read nextCursor from the response.
  3. Send that exact value as the next request's cursor.
  4. Stop when nextCursor is empty or missing.

Some responses also return a Link header with rel="next". A cursor is opaque. Do not decode, edit, or reuse it with another route or filter.

Not every list route uses a cursor. Check the endpoint in the live reference.

What are the rate limits?

Current /v1 limits are shared by the workspace:

  • 300 GET requests per minute;
  • 100 write requests per minute.

Each API key can prepare 20 uploads per minute.

A limited request returns 429. Follow Retry-After. The response can also include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset.

What does an API error mean?

Errors use this basic shape:

{
  "error": {
    "code": "400",
    "message": "Validation failed",
    "issues": []
  }
}
  • code is a string.
  • message explains the main problem.
  • issues can point to invalid fields.
  • details can hold a safe conflict code or current value.
  • id can appear as a support or error-trace value.

Common status codes are:

StatusMeaning
400A path, query, or body value is invalid. Read issues.
401The bearer header, key, or API subscription access is not valid.
402Invalid API keys or inactive API access return 401. If you receive 402, record the endpoint, time, and safe response details and contact support.
403The key is valid, but this action is not allowed.
404The route or resource was not found in this workspace.
409Current data conflicts with the change, such as a stale version or product rule.
413An account file or version is larger than 256 MiB, or a task attachment is larger than 25 MiB.
429The workspace reached the request limit. Wait before retrying.
500Sydnee could not finish the request. Save the error id if one is returned.

Next step