Chapter 19. REST API

Table of Contents

19.1. Transactional HTTP endpoint
19.2. Neo4j Status Codes
19.3. Service root
19.4. Streaming
19.5. Cypher queries via REST
19.6. Property values
19.7. Nodes
19.8. Relationships
19.9. Relationship types
19.10. Node properties
19.11. Relationship properties
19.12. Node labels
19.13. Indexing
19.14. Constraints
19.15. Traversals
19.16. Graph Algorithms
19.17. Batch operations
19.18. Legacy indexing
19.19. Unique Indexing
19.20. Legacy Automatic Indexes
19.21. Configurable Legacy Automatic Indexing
19.22. WADL Support

The Neo4j REST API is designed with discoverability in mind, so that you can start with a GET on the Section 19.3, “Service root” and from there discover URIs to perform other requests. The examples below uses URIs in the examples; they are subject to change in the future, so for future-proofness discover URIs where possible, instead of relying on the current layout. The default representation is json, both for responses and for data sent with POST/PUT requests.

Below follows a listing of ways to interact with the REST API. For language bindings to the REST API, see Chapter 6, Languages.

To interact with the JSON interface you must explicitly set the request header Accept:application/json for those requests that responds with data. You should also set the header Content-Type:application/json if your request sends data, for example when you’re creating a relationship. The examples include the relevant request and response headers.

The server supports streaming results, with better performance and lower memory overhead. See Section 19.4, “Streaming” for more information.