Skip to content

Developers

One endpoint. Endless possibilities.

The Nori GraphQL API automates every workflow: create invoices and proposals, sync customers and time, wire Nori into your CRM or ERP.

  • Create invoices automatically
  • Proposal → invoice in one call
  • Sync customers & time
  • Connect to your CRM/ERP

Request

query {
  noriInvoices(status: "open") {
    data { number due_date customer { name } }
  }
}

Response

{
  "data": {
    "noriInvoices": {
      "data": [
        { "number": "2026-0042",
          "due_date": "2026-07-15",
          "customer": { "name": "ACME GmbH" } }
      ]
    }
  }
}

API access

How to get access – in three steps

From zero to your first authenticated request. Everything you need, in the right order.

  1. Activate the Team plan

    API access is part of the Team plan. If your team is on a smaller plan, switch to Team to unlock it.

  2. Create a token

    Open your profile in Nori and the "API tokens" tab. Create a personal token – it starts with nori_ and is shown only once. Copy it right away.

  3. Authenticate

    Send the token as a Bearer in the Authorization header to the GraphQL endpoint. From here you are talking to the API – the fastest way to test it is the playground.

Examples

Your first request

Authentication is via a Bearer token (prefix nori_) in the Authorization header. From a connectivity check to your first write.

Test the connection
curl https://api.noridocs.com/graphql \
  -H "Authorization: Bearer nori_your_token" \
  -H "Content-Type: application/json" \
  -d '{ "query": "{ noriPing }" }'
Query open invoices
query {
  noriInvoices(status: "open") {
    data {
      id
      number
      status
      due_date
      customer { name }
    }
  }
}
Create a customer
mutation {
  noriCreateCustomer(input: {
    name: "ACME Ltd"
    tax_id: "GB123456789"
    city: "London"
  }) {
    id
    customer_number
    name
  }
}

What the API covers

The resources you can read and write

Every resource is secured individually through scopes on the token – the token can only do what you allow.

Invoices

Query invoices, filter by status and create new ones. Scope: invoice.read / invoice.write.

Proposals

Read proposals, filter and automate the lifecycle. Scope: proposal.read / proposal.write.

Customers

Create, search and update customers and contacts. Scope: customer.read / customer.write.

Time tracking

Query time entries, time streams and pools. Scope: time_entry.read, time_stream.read.

Documents

Read composed documents and create them via mutation. Scope: document.read / document.write.

Products

Query and maintain products and services – the basis for line items on proposals and invoices. Scope: product.read / product.write.

Try it live

Explore the schema in the playground

Browse the schema, write queries and mutations and set your Bearer token – live against the real API.

Want schema autocomplete? Open it in Apollo Studio

Ready to get started?

Activate the Team plan, generate your token in your profile and fire off your first query.