---
search:
  tags:
    - Files
    - POST
seo:
  description: >-
    Register the topic data one already-uploaded file carries, naming no…
    Reference for the POST /v1/files/id/{fs_node_id}/topics endpoint in the
    Roboto REST API.
sidebar:
  label: Declare file topics
  badge: POST
title: Declare file topics
type: openapi-operation
---
Register the topic data one already-uploaded file carries, naming no session.

Answers 200 once the request has been processed, even when the platform registered only some of its
declarations: the response carries one element per declared topic, in request order, holding either the
topic that declaration registered against or the error that refused it. A file that is not ``Available``,
or a listed representation naming a file that is not an ``Available`` file of the same org, answers 404;
a caller without edit access to the file or to a file a listed representation names, 401;
and a malformed request, 400. A request stating ``is_default_for_reads`` on a timeline source, true or false,
also answers 401 unless the caller has topic edit access in the org: which source a schema's reads fall back to
is a property of the org's topics, not of any one file. Each of these is settled before the first declaration
is prepared, so a refused request registers nothing.

Each declaration's ``anchor_ns`` is an integer of nanoseconds since the Unix epoch, or any value
``roboto.time.to_epoch_nanoseconds`` reads: a float or numeric string is seconds, and an ISO 8601
string is that instant.

### Access control
 - Restricted tokens need the API scope `api.everything_else`

`POST /v1/files/id/{fs_node_id}/topics`
