Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
version: 3.0.0
title: Splitwise Other API
x-logo:
url: https://www.splitwise.com/assets/press/logos/sw.svg
altText: Splitwise logo and name
description: '# Introduction
Hey there!'
servers:
- url: https://secure.splitwise.com/api/v3.0
variables: {}
security:
- OAuth: []
- ApiKeyAuth: []
tags:
- name: Other
x-displayName: Other
paths:
/get_currencies:
get:
tags:
- Other
summary: Supported currencies
security: []
description: 'Returns a list of all currencies allowed by the system. These are mostly ISO 4217 codes, but we do
sometimes use pending codes or unofficial, colloquial codes (like BTC instead of XBT for Bitcoin).'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
currencies:
type: array
items:
type: object
title: Currency
properties:
currency_code:
type: string
example: BRL
unit:
type: string
example: R$
operationId: getGetCurrencies
x-operation-id-source: derived
/get_categories:
get:
tags:
- Other
summary: Supported categories
security: []
description: 'Returns a list of all categories Splitwise allows for expenses. There are parent categories that represent groups of categories with subcategories for more specific categorization.
When creating expenses, you must use a subcategory, not a parent category.
If you intend for an expense to be represented by the parent category and nothing more specific, please use the "Other" subcategory.'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
categories:
type: array
items:
$ref: '#/components/schemas/parent_category'
operationId: getGetCategories
x-operation-id-source: derived
components:
schemas:
parent_category:
allOf:
- $ref: '#/components/schemas/category'
- type: object
properties:
id:
example: 1
name:
example: Utilities
subcategories:
type: array
items:
$ref: '#/components/schemas/category'
category:
type: object
properties:
id:
type: integer
example: 48
name:
type: string
example: Cleaning
icon:
type: string
example: https://s3.amazonaws.com/splitwise/uploads/category/icon/square/utilities/cleaning.png
icon_types:
type: object
properties:
slim:
type: object
properties:
small:
type: string
format: uri
large:
type: string
format: uri
square:
type: object
properties:
large:
type: string
format: uri
xlarge:
type: string
format: uri
securitySchemes:
OAuth:
type: oauth2
description: 'Splitwise uses OAuth 2 with the authorization code flow. To connect via OAuth 2, you''ll need to [register your app](https://secure.splitwise.com/apps). When you register, you''ll be given a key and secret.
**Note**: OAuth can be a very confusing protocol to implement correctly, and we **strongly** recommend
that you use an existing OAuth library to connect to Splitwise. You can find a list of OAuth client libraries at the
[OAuth community site](https://oauth.net/code/#client-libraries).
For more information on using OAuth, check out the following resources:
- The OAuth community [getting started guide](https://oauth.net/getting-started/)
- The oauth.com [OAuth 2.0 playground](https://www.oauth.com/playground/) (great for debugging authorization issues)
- This [old Splitwise blog post](https://blog.splitwise.com/2013/07/15/setting-up-oauth-for-the-splitwise-api/) about OAuth
'
flows:
authorizationCode:
authorizationUrl: /oauth/authorize
tokenUrl: /oauth/token
scopes: {}
ApiKeyAuth:
type: http
description: 'For speed and ease of prototyping, you can generate a personal API key on your app''s details page. You should present this key to the server via the Authorization header as a Bearer token. The API key is an access token for your personal account, so keep it as safe as you would a password.
If your key becomes compromised or you want to invalidate your existing key for any other reason, you can do so on the app details page by generating a new key.'
scheme: bearer
bearerFormat: API key